This is the mail archive of the
mauve-discuss@sourceware.org
mailing list for the Mauve project.
Re: RFC: fix for Mauve test javax/swing/Border/TitledBorder/constructors.java
Greetings,
here's the new version of a patch for a Mauve test
javax/swing/Border/TitledBorder/constructors.java. This patch make this test
work correctly on OpenJDK & GNU Classpath too:
--- mauve_old/gnu/testlet/javax/swing/border/TitledBorder/constructors.java
2006-02-01 15:14:22.000000000 +0100
+++ mauve_new/gnu/testlet/javax/swing/border/TitledBorder/constructors.java
2011-09-14 10:48:54.000000000 +0200
@@ -65,6 +65,11 @@
test6(harness);
}
+ public void checkTitledBorderDefaultPosition(TestHarness harness, int position)
+ {
+ harness.check(position == TitledBorder.TOP || position ==
TitledBorder.DEFAULT_POSITION);
+ }
+
public void test1(TestHarness harness)
{
harness.checkPoint("(Border)");
@@ -77,7 +82,7 @@
harness.check(tb.getTitleColor(), c);
Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
harness.check(tb.getTitleFont(), f);
- harness.check(tb.getTitlePosition(), TitledBorder.TOP);
+ checkTitledBorderDefaultPosition(harness, tb.getTitlePosition());
harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
tb = new TitledBorder((Border) null);
@@ -98,7 +103,7 @@
harness.check(tb.getTitleColor(), c);
Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
harness.check(tb.getTitleFont(), f);
- harness.check(tb.getTitlePosition(), TitledBorder.TOP);
+ checkTitledBorderDefaultPosition(harness, tb.getTitlePosition());
harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
tb = new TitledBorder((Border) null, "XYZ");
@@ -202,7 +207,7 @@
harness.check(tb.getTitleColor(), c);
Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
harness.check(tb.getTitleFont(), f);
- harness.check(tb.getTitlePosition(), TitledBorder.TOP);
+ checkTitledBorderDefaultPosition(harness, tb.getTitlePosition());
harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
tb = new TitledBorder((String) null);
Any comments are welcome.
Pavel
Pavel Tisnovsky wrote:
> Dr Andrew John Hughes wrote:
>> On 17:33 Fri 02 Sep , Pavel Tisnovsky wrote:
>>> Greetings,
>>>
>>> here's fix for another Mauve test. In the test
>>> "javax/swing/Border/TitledBorder/constructors.java" the position of the title in
>>> the border should be compared with the constant TitledBorder.DEFAULT_POSITION,
>>> not with TitledBorder.TOP, at least in cases when following constructors are used:
>>>
>>> TitledBorder(Border border)
>>> TitledBorder(Border border, String title)
>>> TitledBorder(String title)
>>>
>>> (there exist three other constructors where title position can be explicitly
>>> specified, but the fix changes only test cases which use the previous three
>>> constructors).
>>>
>> Can you explain why and note whether this affects current test results?
>>
>
> Hi Andrew,
>
> well, I've gone deeper into this issue and it seems, that GNU Classpath and
> OpenJDK have quite different behaviour, but both are AFAIK correct due to
> imprecise specification. When one of the following constructors are used to
> create TitledBorder:
>
> TitledBorder(Border border)
> TitledBorder(Border border, String title)
> TitledBorder(String title)
>
> the text position is considered as DEFAULT_POSITION which * is equals * to TOP.
> The only difference between GNU Classpath / OpenJDK is that GNU Classpath
> explicitly sets text position to TOP in the constructor's body:
>
> public TitledBorder(String title)
> {
> this(/* border */ null, title, LEADING, TOP, /* titleFont */ null, /*
> titleColor */ null);
> }
>
> but OpenJDK still stores DEFAULT_POSITION in following types of code:
>
> switch (position) {
> case TOP:
> case DEFAULT:
> the same code block for TOP & DEFAULT
>
> (the same pattern are used for text justification, ie for constants LEFT and
> DEFAULT_JUSTIFICATION).
>
> This means that TitledBorder("title").getTitlePosition()==TitledBorder.TOP on
> GNU Classpath but
> TitledBorder("title").getTitlePosition()==TitledBorder.DEFAULT_POSITION on
> OpenJDK and proprietary JDKs too.
>
> So it's IMHO better to change the test to check for both possibilities.
>
> Pavel