public inbox for mauve-patches@sourceware.org
 help / color / mirror / Atom feed
* Patch: New Lightweight tests
@ 2006-02-21 23:52 Lillian Angel
  2006-02-21 23:55 ` Lillian Angel
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Lillian Angel @ 2006-02-21 23:52 UTC (permalink / raw)
  To: mauve-patches

[-- Attachment #1: Type: text/plain, Size: 740 bytes --]

I added new tests for Lightweight Containers.

2006-02-21  Lillian Angel  <langel@redhat.com>

        * gnu/testlet/TestHarness.java
        (checkColor): New method used to compare colors.
        (checkRectangleOuterColors): New method used to compare the
        colors of a rectangle's corners to the colors of the pixels
        surrounding the corners.
        (checkRectangleCornerColors): New method used to compare
        the colors of the pixels at the corners of a rectangle, to
        a given color.
        * gnu/testlet/java/awt/Container/LightweightContainer.java:
        New Test.
        * gnu/testlet/java/awt/Frame/size1.java
        (checkColor): Removed.
        (test): Changed to use new methods in TestHarness.


[-- Attachment #2: patch2.diff --]
[-- Type: text/x-patch, Size: 12562 bytes --]

Index: gnu/testlet/TestHarness.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/TestHarness.java,v
retrieving revision 1.20
diff -u -r1.20 TestHarness.java
--- gnu/testlet/TestHarness.java	8 Nov 2005 21:49:38 -0000	1.20
+++ gnu/testlet/TestHarness.java	21 Feb 2006 23:48:02 -0000
@@ -21,11 +21,14 @@
 
 package gnu.testlet;
 
+import java.awt.AWTException;
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
 import java.io.File;
 import java.io.Reader;
 import java.io.InputStream;
-import java.awt.AWTException;
-import java.awt.Robot;
 
 /**
  * This base class defines the API that test cases can report against.  This
@@ -186,7 +189,114 @@
       checkPoint (name);
       check (false);
     }
+  
+  /**
+   * Compares two colors.
+   * 
+   * @param a -
+   *          Color to compare
+   * @param b -
+   *          Color to compare
+   * @param match -
+   *          True if colors should be equivalent.
+   */
+  public void checkColor(Color a, Color b, boolean match)
+  {
+    if (match)
+      check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
+            && a.getBlue() == b.getBlue());
+    else
+      check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen() 
+          && a.getBlue() == b.getBlue()));
+  }
+  
+  /**
+   * This method checks that the pixels outside of the rectange, at all corners,
+   * match (or don't match) a given color.
+   * 
+   * @param r -
+   *          The Robot to use to get the pixel color at a location
+   * @param rect -
+   *          The Rectangle to check
+   * @param comp -
+   *          The Color to compare the pixel colors to
+   * @param match -
+   *          True if the pixel outside the rectangle corner should be
+   *          equivalent to comp.
+   */
+  public void checkRectangleOuterColors(Robot r, Rectangle rect, Color comp,
+                                        boolean match)
+  {
+    Color c;
 
+    // top-left-left
+    c = r.getPixelColor(rect.x - 1, rect.y);
+    checkColor(c, comp, match);
+
+    // top-left-top
+    r.getPixelColor(rect.x, rect.y - 1);
+    checkColor(c, comp, match);
+
+    // top-right-right
+    r.getPixelColor((rect.x + rect.width - 1) + 1, rect.y);
+    checkColor(c, comp, match);
+
+    // top-right-top
+    r.getPixelColor((rect.x + rect.width - 1), rect.y - 1);
+    checkColor(c, comp, match);
+
+    // bottom-left-left
+    r.getPixelColor(rect.x - 1, (rect.y + rect.height - 1));
+    checkColor(c, comp, match);
+
+    // bottom-left-bottom
+    r.getPixelColor(rect.x, (rect.y + rect.height - 1) + 1);
+    checkColor(c, comp, match);
+
+    // bottom-right-right
+    r.getPixelColor((rect.x + rect.width - 1) + 1, (rect.y + rect.height - 1));
+    checkColor(c, comp, match);
+
+    // bottom-right-bottom
+    r.getPixelColor((rect.x + rect.width - 1), (rect.y + rect.height - 1) + 1);
+    checkColor(c, comp, match);
+  }
+
+  /**
+   * This method checks the pixel colors of a Rectangle's corners
+   * 
+   * @param r -
+   *          The Robot to use to get the pixel colors.
+   * @param rect -
+   *          The Rectangle to check.
+   * @param comp -
+   *          The Color to compare
+   * @param match -
+   *          True if the corner pixel color of the rectangle should be
+   *          equivalent to comp.
+   */
+  public void checkRectangleCornerColors(Robot r, Rectangle rect, Color comp,
+                                         boolean match)
+  {
+    Color c;
+
+    // top-left
+    c = r.getPixelColor(rect.x, rect.y);
+    checkColor(c, comp, match);
+
+    // top-right
+    c = r.getPixelColor(rect.x + rect.width - 1, rect.y);
+    checkColor(c, comp, match);
+
+    // bottom-left
+    c = r.getPixelColor(rect.x, rect.y + rect.height - 1);
+    checkColor(c, comp, match);
+
+    // bottom-right
+    c = r.getPixelColor(rect.x + rect.width - 1, rect.y + rect.height - 1);
+    checkColor(c, comp, match);
+  }
+  
   // Given a resource name, return a Reader on it.  Resource names are
   // just like file names.  They are relative to the top level Mauve
   // directory, but '#' characters are used in place of directory
Index: gnu/testlet/java/awt/Container/LightweightContainer.java
===================================================================
RCS file: gnu/testlet/java/awt/Container/LightweightContainer.java
diff -N gnu/testlet/java/awt/Container/LightweightContainer.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/awt/Container/LightweightContainer.java	21 Feb 2006 23:48:02 -0000
@@ -0,0 +1,170 @@
+/* LightweightContainer.java -- 
+   Copyright (C) 2006 Red Hat
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.4
+
+package gnu.testlet.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+public class LightweightContainer implements Testlet
+{
+  
+  public void test (TestHarness harness)
+  {
+    testLoc(harness);
+    testWindow(harness);
+  }
+  
+  // Tests a Window containing a Frame and a Lightweight Container
+  public void testWindow(TestHarness harness)
+  {
+    Robot r = harness.createRobot();
+        
+    Frame f = new Frame();
+    testContainer tc = new testContainer();
+    f.setSize(500, 500);
+    tc.setBounds(0, 0, 500, 500);
+    f.add(tc);
+    f.show();
+
+    r.waitForIdle();
+    r.delay(300);
+    
+    // bounds of red rectangle (1 pixel wide border)
+    Rectangle bounds = tc.getBounds();
+    Point loc = f.getLocationOnScreen();
+    Insets i = f.getInsets();
+    bounds.x = loc.x + i.left;
+    bounds.y = loc.y + i.top;
+    // bounds of blue rectangle inside red rectangle
+    Rectangle bounds2 = new Rectangle(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2);
+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
+    
+    r.delay(3000);
+  }
+  
+  // Tests the location of a Lightweight Container containing
+  // a heavyweight component, which is also in a heavyweight
+  public void testLoc(TestHarness harness)
+  {
+    Robot r = harness.createRobot();
+    Color bgHW_c = Color.red;
+    Color fgHW_c = Color.blue;
+    
+    testPanel bgHW = new testPanel(bgHW_c);
+    Container fgLW = new Container();
+    testPanel fgHW = new testPanel(fgHW_c);
+    
+    Frame f = new Frame();
+    
+    int bgHW_x = 0;
+    int bgHW_y = 0;
+    int bgHW_w = 500;
+    int bgHW_h = 500;
+    
+    int fgLW_x = 50;
+    int fgLW_y = 60;
+    int fgLW_w = 200;
+    int fgLW_h = 200;
+    
+    int fgHW_x = 70;
+    int fgHW_y = 40;
+    int fgHW_w = 100;
+    int fgHW_h = 100;
+
+    f.setSize(500, 500);
+    bgHW.setBounds(bgHW_x, bgHW_y, bgHW_w, bgHW_h);
+    fgLW.setBounds(fgLW_x, fgLW_y, fgLW_w, fgLW_h);
+    fgHW.setBounds(fgHW_x, fgHW_y, fgHW_w, fgHW_h);
+    f.add(bgHW);
+    bgHW.add(fgLW);
+    fgLW.add(fgHW);
+    f.show();
+    
+    r.waitForIdle();
+    r.delay(300);    
+    Insets i = f.getInsets();
+    
+    // check the two pixels adjacent to each corner of the fgHW
+    Point p = f.getLocationOnScreen();
+    fgHW_x = p.x + i.left + fgHW_x + fgLW_x;
+    fgHW_y = p.y + i.top + fgHW_y + fgLW_y;
+    harness.checkRectangleOuterColors(r, new Rectangle(fgHW_x, fgHW_y, fgHW_w, fgHW_h), bgHW_c, true);
+    
+    // check the fgHW's corner pixels.
+    harness.checkRectangleCornerColors(r, new Rectangle(fgHW_x, fgHW_y, fgHW_w, fgHW_h), bgHW_c, false);
+    
+    // check the two pixels adjacent to each corner of the fgLW
+    p = f.getLocationOnScreen();
+    fgLW_x = p.x + i.left + fgLW_x;
+    fgLW_y = p.y + i.top + fgLW_y;
+    harness.checkRectangleOuterColors(r, new Rectangle(fgLW_x, fgLW_y, fgLW_w, fgLW_h), bgHW_c, true);
+
+    r.delay(3000);
+  }
+  
+  class testPanel extends Panel
+  {
+    Color c;
+
+    public testPanel(Color c)
+    {
+      super(null);
+      this.c = c;
+    }
+
+    public void paint(Graphics g)
+    {
+      Rectangle bounds = new Rectangle(0,
+                                       0,
+                                       this.getSize().width,
+                                       this.getSize().height);
+      g.setColor(c);
+      g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
+    }
+  }
+  
+  class testContainer extends Container
+  {
+
+    public testContainer()
+    {
+      super();
+    }
+
+    public void paint(Graphics g)
+    {
+      Rectangle bounds = new Rectangle(0,
+                                       0,
+                                       this.getSize().width,
+                                       this.getSize().height);
+      g.setColor(Color.red);
+      g.drawRect(bounds.x, bounds.y, bounds.width - 1, bounds.height - 1);
+      g.setColor(Color.blue);
+      g.fillRect(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2);
+    }
+  }
+}
Index: gnu/testlet/java/awt/Frame/size1.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Frame/size1.java,v
retrieving revision 1.1
diff -u -r1.1 size1.java
--- gnu/testlet/java/awt/Frame/size1.java	21 Feb 2005 06:58:49 -0000	1.1
+++ gnu/testlet/java/awt/Frame/size1.java	21 Feb 2006 23:48:02 -0000
@@ -25,7 +25,6 @@
 import gnu.testlet.Testlet;
 
 import java.awt.*;
-import java.awt.event.*;
 
 /**
  * Check that a frame's size is set correctly when it is initially
@@ -58,18 +57,6 @@
     }
   }
 
-  public void checkColor (TestHarness harness, Color c, boolean match)
-  {
-    if (match)
-      harness.check (c.getRed () == nonWMColor.getRed ()
-		     && c.getGreen () == nonWMColor.getGreen ()
-		     && c.getBlue () == nonWMColor.getBlue ());
-    else
-      harness.check (!(c.getRed () == nonWMColor.getRed ()
-		       && c.getGreen () == nonWMColor.getGreen ()
-		       && c.getBlue () == nonWMColor.getBlue ()));
-  }
-
   public void test (TestHarness harness)
   {
     Robot r = harness.createRobot ();
@@ -99,61 +86,14 @@
     r.waitForIdle ();
     r.delay (100);
 
+    Rectangle bounds = fg.getBounds();
+    
     // check the two pixels adjacent to each corner of the foreground
     // frame.
-
-    // top-left-left
-    c = r.getPixelColor (fg_x - 1, fg_y);
-    checkColor (harness, c, true);
-
-    // top-left-top
-    c = r.getPixelColor (fg_x, fg_y - 1);
-    checkColor (harness, c, true);
-
-    // top-right-right
-    c = r.getPixelColor ((fg_x + fg_width - 1) + 1, fg_y);
-    checkColor (harness, c, true);
-
-    // top-right-top
-    c = r.getPixelColor ((fg_x + fg_width - 1), fg_y - 1);
-    checkColor (harness, c, true);
-
-    // bottom-left-left
-    c = r.getPixelColor (fg_x - 1, (fg_y + fg_height - 1));
-    checkColor (harness, c, true);
-
-    // bottom-left-bottom
-    c = r.getPixelColor (fg_x, (fg_y + fg_height - 1) + 1);
-    checkColor (harness, c, true);
-
-    // bottom-right-right
-    c = r.getPixelColor ((fg_x + fg_width - 1) + 1,
-			 (fg_y + fg_height - 1));
-    checkColor (harness, c, true);
-
-    // bottom-right-bottom
-    c = r.getPixelColor ((fg_x + fg_width - 1),
-			 (fg_y + fg_height - 1) + 1);
-    checkColor (harness, c, true);
-
+    harness.checkRectangleOuterColors(r, bounds, nonWMColor, true);
+    
     // check the frame's corner pixels.
-
-    // top-left
-    c = r.getPixelColor (fg_x, fg_y);
-    checkColor (harness, c, false);
-
-    // top-right
-    c = r.getPixelColor (fg_x + fg_width - 1, fg_y);
-    checkColor (harness, c, false);
-
-    // bottom-left
-    c = r.getPixelColor (fg_x, fg_y + fg_height - 1);
-    checkColor (harness, c, false);
-
-    // bottom-right
-    c = r.getPixelColor (fg_x + fg_width -1,
-			 fg_y + fg_height - 1);
-    checkColor (harness, c, false);
+    harness.checkRectangleCornerColors(r, bounds, nonWMColor, false);
 
     r.delay (3000);
   }

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-21 23:52 Patch: New Lightweight tests Lillian Angel
@ 2006-02-21 23:55 ` Lillian Angel
  2006-02-22 10:04   ` David Gilbert
  2006-02-22  8:12 ` Roman Kennke
  2006-02-22 10:28 ` David Gilbert
  2 siblings, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-21 23:55 UTC (permalink / raw)
  To: mauve-patches

On Tue, 2006-02-21 at 18:52 -0500, Lillian Angel wrote:
> I added new tests for Lightweight Containers.

I forgot to mention, I added some new methods to TestHarness. These
methods are helpful for testing locations on the screen when using
Lightweight/Heavyweight widgets. It made sense to add these to
TestHarness, since they are used in Frame and Container.

> 2006-02-21  Lillian Angel  <langel@redhat.com>
> 
>         * gnu/testlet/TestHarness.java
>         (checkColor): New method used to compare colors.
>         (checkRectangleOuterColors): New method used to compare the
>         colors of a rectangle's corners to the colors of the pixels
>         surrounding the corners.
>         (checkRectangleCornerColors): New method used to compare
>         the colors of the pixels at the corners of a rectangle, to
>         a given color.
>         * gnu/testlet/java/awt/Container/LightweightContainer.java:
>         New Test.
>         * gnu/testlet/java/awt/Frame/size1.java
>         (checkColor): Removed.
>         (test): Changed to use new methods in TestHarness.
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-21 23:52 Patch: New Lightweight tests Lillian Angel
  2006-02-21 23:55 ` Lillian Angel
@ 2006-02-22  8:12 ` Roman Kennke
  2006-02-22 14:49   ` Lillian Angel
  2006-02-22 10:28 ` David Gilbert
  2 siblings, 1 reply; 18+ messages in thread
From: Roman Kennke @ 2006-02-22  8:12 UTC (permalink / raw)
  To: Lillian Angel; +Cc: mauve-patches

[-- Attachment #1: Type: text/plain, Size: 1624 bytes --]

Hi Lillian,

I have some comments regarding the TestHarness change:

+  
+  /**
+   * Compares two colors.
+   * 
+   * @param a -
+   *          Color to compare
+   * @param b -
+   *          Color to compare
+   * @param match -
+   *          True if colors should be equivalent.
+   */
+  public void checkColor(Color a, Color b, boolean match)
+  {
+    if (match)
+      check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
+            && a.getBlue() == b.getBlue());
+    else
+      check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen() 
+          && a.getBlue() == b.getBlue()));
+  }

I don't understand the point here. Why not use check(color1, color2)?
This would use equals() which also compares the rgb values (or whatever
the color value is made up of). The match parameter is also hard to
understand, it effectivle negates the result? check(!
color1.equals(color2)) ?

/**
+   * This method checks the pixel colors of a Rectangle's corners
+   * 
+   * @param r -
+   *          The Robot to use to get the pixel colors.

I don't know if we have rules for this in Mauve, but in Classpath we
would have a period after corners and the @param comment written without
the '-', without the capital T and without period. For API comments we
basically adopted Sun's rules:

http://java.sun.com/j2se/javadoc/writingdoccomments/index.html

Anyway, this is only a very minor nitpick, and I don't know what the
rules are in Mauve anyway or if we even have some, I only say it here so
you keep it in mind in future classpath hacking :-)

Roman


[-- Attachment #2: Dies ist ein digital signierter Nachrichtenteil --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-21 23:55 ` Lillian Angel
@ 2006-02-22 10:04   ` David Gilbert
  2006-02-22 14:48     ` Lillian Angel
  2006-02-22 17:12     ` Thomas Fitzsimmons
  0 siblings, 2 replies; 18+ messages in thread
From: David Gilbert @ 2006-02-22 10:04 UTC (permalink / raw)
  To: Lillian Angel; +Cc: mauve-patches

Hi Lillian,

I wonder if these methods should really be added to TestHarness, they 
seem a little too "specialised" to me (especially the rectangle corner 
color tests), and it would be nice to keep TestHarness as simple as 
possible.  Maybe you could create a utility class in 
gnu.testlet.java.awt.* that contains static methods that perform these 
checks?  Then you could share that between your Frame and Container tests.

Regards,

Dave

Lillian Angel wrote:

>On Tue, 2006-02-21 at 18:52 -0500, Lillian Angel wrote:
>  
>
>>I added new tests for Lightweight Containers.
>>    
>>
>
>I forgot to mention, I added some new methods to TestHarness. These
>methods are helpful for testing locations on the screen when using
>Lightweight/Heavyweight widgets. It made sense to add these to
>TestHarness, since they are used in Frame and Container.
>
>  
>
>>2006-02-21  Lillian Angel  <langel@redhat.com>
>>
>>        * gnu/testlet/TestHarness.java
>>        (checkColor): New method used to compare colors.
>>        (checkRectangleOuterColors): New method used to compare the
>>        colors of a rectangle's corners to the colors of the pixels
>>        surrounding the corners.
>>        (checkRectangleCornerColors): New method used to compare
>>        the colors of the pixels at the corners of a rectangle, to
>>        a given color.
>>        * gnu/testlet/java/awt/Container/LightweightContainer.java:
>>        New Test.
>>        * gnu/testlet/java/awt/Frame/size1.java
>>        (checkColor): Removed.
>>        (test): Changed to use new methods in TestHarness.
>>
>>    
>>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-21 23:52 Patch: New Lightweight tests Lillian Angel
  2006-02-21 23:55 ` Lillian Angel
  2006-02-22  8:12 ` Roman Kennke
@ 2006-02-22 10:28 ` David Gilbert
  2006-02-22 14:51   ` Lillian Angel
  2006-02-22 17:25   ` Patch: " Thomas Fitzsimmons
  2 siblings, 2 replies; 18+ messages in thread
From: David Gilbert @ 2006-02-22 10:28 UTC (permalink / raw)
  To: Lillian Angel; +Cc: mauve-patches

Hi Lillian,

Lillian Angel wrote:

>
>Index: gnu/testlet/java/awt/Container/LightweightContainer.java
>===================================================================
>
>  
>

>+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
>+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
>+    
>+    r.delay(3000);
>+  }
>  
>
Do you know what the delay is for?  Is there some other way to write the 
test so that the delay isn't required?  It's just that it would be nice 
if the Mauve test run doesn't take longer than it has to - otherwise 
hackers will stop running it.

Regards,

Dave

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 10:04   ` David Gilbert
@ 2006-02-22 14:48     ` Lillian Angel
  2006-02-22 17:12     ` Thomas Fitzsimmons
  1 sibling, 0 replies; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 14:48 UTC (permalink / raw)
  To: David Gilbert; +Cc: mauve-patches

On Wed, 2006-02-22 at 10:04 +0000, David Gilbert wrote:
> Hi Lillian,
> 
> I wonder if these methods should really be added to TestHarness, they 
> seem a little too "specialised" to me (especially the rectangle corner 
> color tests), and it would be nice to keep TestHarness as simple as 
> possible. 

Tom asked me to add these, because they will be used in the future. As
of now, they are used in two different tests.

>  Maybe you could create a utility class in 
> gnu.testlet.java.awt.* that contains static methods that perform these 
> checks?  Then you could share that between your Frame and Container tests.
> 

Yes, I could do that. I'll speak to Tom and see what he prefers

Lillian

> Regards,
> 
> Dave
> 
> Lillian Angel wrote:
> 
> >On Tue, 2006-02-21 at 18:52 -0500, Lillian Angel wrote:
> >  
> >
> >>I added new tests for Lightweight Containers.
> >>    
> >>
> >
> >I forgot to mention, I added some new methods to TestHarness. These
> >methods are helpful for testing locations on the screen when using
> >Lightweight/Heavyweight widgets. It made sense to add these to
> >TestHarness, since they are used in Frame and Container.
> >
> >  
> >
> >>2006-02-21  Lillian Angel  <langel@redhat.com>
> >>
> >>        * gnu/testlet/TestHarness.java
> >>        (checkColor): New method used to compare colors.
> >>        (checkRectangleOuterColors): New method used to compare the
> >>        colors of a rectangle's corners to the colors of the pixels
> >>        surrounding the corners.
> >>        (checkRectangleCornerColors): New method used to compare
> >>        the colors of the pixels at the corners of a rectangle, to
> >>        a given color.
> >>        * gnu/testlet/java/awt/Container/LightweightContainer.java:
> >>        New Test.
> >>        * gnu/testlet/java/awt/Frame/size1.java
> >>        (checkColor): Removed.
> >>        (test): Changed to use new methods in TestHarness.
> >>
> >>    
> >>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22  8:12 ` Roman Kennke
@ 2006-02-22 14:49   ` Lillian Angel
  0 siblings, 0 replies; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 14:49 UTC (permalink / raw)
  To: Roman Kennke; +Cc: mauve-patches

On Wed, 2006-02-22 at 09:11 +0100, Roman Kennke wrote:
> Hi Lillian,
> 
> I have some comments regarding the TestHarness change:
> 
> +  
> +  /**
> +   * Compares two colors.
> +   * 
> +   * @param a -
> +   *          Color to compare
> +   * @param b -
> +   *          Color to compare
> +   * @param match -
> +   *          True if colors should be equivalent.
> +   */
> +  public void checkColor(Color a, Color b, boolean match)
> +  {
> +    if (match)
> +      check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
> +            && a.getBlue() == b.getBlue());
> +    else
> +      check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen() 
> +          && a.getBlue() == b.getBlue()));
> +  }
> 
> I don't understand the point here. Why not use check(color1, color2)?
> This would use equals() which also compares the rgb values (or whatever
> the color value is made up of). The match parameter is also hard to
> understand, it effectivle negates the result? check(!
> color1.equals(color2)) ?

See the reply I sent to David.

> 
> /**
> +   * This method checks the pixel colors of a Rectangle's corners
> +   * 
> +   * @param r -
> +   *          The Robot to use to get the pixel colors.
> 
> I don't know if we have rules for this in Mauve, but in Classpath we
> would have a period after corners and the @param comment written without
> the '-', without the capital T and without period. For API comments we
> basically adopted Sun's rules:
> 
> http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
> 
> Anyway, this is only a very minor nitpick, and I don't know what the
> rules are in Mauve anyway or if we even have some, I only say it here so
> you keep it in mind in future classpath hacking :-)
> 
> Roman
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 10:28 ` David Gilbert
@ 2006-02-22 14:51   ` Lillian Angel
  2006-02-22 15:09     ` Michael Koch
  2006-02-22 17:25   ` Patch: " Thomas Fitzsimmons
  1 sibling, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 14:51 UTC (permalink / raw)
  To: David Gilbert; +Cc: mauve-patches

On Wed, 2006-02-22 at 10:29 +0000, David Gilbert wrote:
> Hi Lillian,
> 
> Lillian Angel wrote:
> 
> >
> >Index: gnu/testlet/java/awt/Container/LightweightContainer.java
> >===================================================================
> >
> >  
> >
> 
> >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> >+    
> >+    r.delay(3000);
> >+  }
> >  
> >
> Do you know what the delay is for?  Is there some other way to write the 
> test so that the delay isn't required?  It's just that it would be nice 
> if the Mauve test run doesn't take longer than it has to - otherwise 
> hackers will stop running it.

It seemed that there were some race conditions when running these tests.
These delays were added to avoid them.

Lillian

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 14:51   ` Lillian Angel
@ 2006-02-22 15:09     ` Michael Koch
  2006-02-22 15:12       ` Lillian Angel
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Koch @ 2006-02-22 15:09 UTC (permalink / raw)
  To: Lillian Angel; +Cc: David Gilbert, mauve-patches

On Wed, Feb 22, 2006 at 09:51:39AM -0500, Lillian Angel wrote:
> > >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> > >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> > >+    
> > >+    r.delay(3000);
> > >+  }
> > >  
> > >
> > Do you know what the delay is for?  Is there some other way to write the 
> > test so that the delay isn't required?  It's just that it would be nice 
> > if the Mauve test run doesn't take longer than it has to - otherwise 
> > hackers will stop running it.
> 
> It seemed that there were some race conditions when running these tests.
> These delays were added to avoid them.

Then please document this in the testcase.


Cheers,
Michael
-- 
Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html

Join the community at http://planet.classpath.org/

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 15:09     ` Michael Koch
@ 2006-02-22 15:12       ` Lillian Angel
  2006-02-22 15:55         ` FYI: " Lillian Angel
  0 siblings, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 15:12 UTC (permalink / raw)
  To: Michael Koch; +Cc: David Gilbert, mauve-patches

On Wed, 2006-02-22 at 17:14 +0100, Michael Koch wrote:
> On Wed, Feb 22, 2006 at 09:51:39AM -0500, Lillian Angel wrote:
> > > >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> > > >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> > > >+    
> > > >+    r.delay(3000);
> > > >+  }
> > > >  
> > > >
> > > Do you know what the delay is for?  Is there some other way to write the 
> > > test so that the delay isn't required?  It's just that it would be nice 
> > > if the Mauve test run doesn't take longer than it has to - otherwise 
> > > hackers will stop running it.
> > 
> > It seemed that there were some race conditions when running these tests.
> > These delays were added to avoid them.
> 
> Then please document this in the testcase.

Sorry, my mistake. I will add it to the Frame and Container tests.

Lillian.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-22 15:12       ` Lillian Angel
@ 2006-02-22 15:55         ` Lillian Angel
  0 siblings, 0 replies; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 15:55 UTC (permalink / raw)
  To: Michael Koch; +Cc: David Gilbert, mauve-patches

[-- Attachment #1: Type: text/plain, Size: 432 bytes --]

Documentation is fixed.

2006-02-21  Lillian Angel  <langel@redhat.com>

        * gnu/testlet/TestHarness.java
        (checkColor): Fixed API documentation.
        (checkRectangleOuterColors): Likewise.
        * gnu/testlet/java/awt/Container/LightweightContainer.java
        (testWindow): Added documentation.
        (testLoc): Likewise.
        * gnu/testlet/java/awt/Frame/size1.java
        (test): Added documentation.



[-- Attachment #2: patch2.diff --]
[-- Type: text/x-patch, Size: 3651 bytes --]

Index: gnu/testlet/TestHarness.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/TestHarness.java,v
retrieving revision 1.21
diff -u -r1.21 TestHarness.java
--- gnu/testlet/TestHarness.java	21 Feb 2006 23:51:48 -0000	1.21
+++ gnu/testlet/TestHarness.java	22 Feb 2006 15:51:31 -0000
@@ -194,11 +194,11 @@
    * Compares two colors.
    * 
    * @param a -
-   *          Color to compare
+   *          Color to compare.
    * @param b -
-   *          Color to compare
+   *          Color to compare.
    * @param match -
-   *          True if colors should be equivalent.
+   *          true if colors should be equivalent.
    */
   public void checkColor(Color a, Color b, boolean match)
   {
@@ -215,13 +215,13 @@
    * match (or don't match) a given color.
    * 
    * @param r -
-   *          The Robot to use to get the pixel color at a location
+   *          the Robot to use to get the pixel color at a location.
    * @param rect -
-   *          The Rectangle to check
+   *          the Rectangle to check
    * @param comp -
-   *          The Color to compare the pixel colors to
+   *          the Color to compare the pixel colors to.
    * @param match -
-   *          True if the pixel outside the rectangle corner should be
+   *          true if the pixel outside the rectangle corner should be
    *          equivalent to comp.
    */
   public void checkRectangleOuterColors(Robot r, Rectangle rect, Color comp,
@@ -263,16 +263,16 @@
   }
 
   /**
-   * This method checks the pixel colors of a Rectangle's corners
+   * This method checks the pixel colors of a Rectangle's corners.
    * 
    * @param r -
-   *          The Robot to use to get the pixel colors.
+   *          the Robot to use to get the pixel colors.
    * @param rect -
-   *          The Rectangle to check.
+   *          the Rectangle to check.
    * @param comp -
-   *          The Color to compare
+   *          the Color to compare.
    * @param match -
-   *          True if the corner pixel color of the rectangle should be
+   *          true if the corner pixel color of the rectangle should be
    *          equivalent to comp.
    */
   public void checkRectangleCornerColors(Robot r, Rectangle rect, Color comp,
Index: gnu/testlet/java/awt/Container/LightweightContainer.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Container/LightweightContainer.java,v
retrieving revision 1.2
diff -u -r1.2 LightweightContainer.java
--- gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 00:13:48 -0000	1.2
+++ gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 15:51:31 -0000
@@ -49,6 +49,7 @@
     f.add(tc);
     f.show();
 
+    // There is a delay to avoid any race conditions.    
     r.waitForIdle();
     r.delay(300);
     
@@ -103,7 +104,8 @@
     bgHW.add(fgLW);
     fgLW.add(fgHW);
     f.show();
-    
+
+    // There is a delay to avoid any race conditions.
     r.waitForIdle();
     r.delay(300);    
     Insets i = f.getInsets();
Index: gnu/testlet/java/awt/Frame/size1.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Frame/size1.java,v
retrieving revision 1.2
diff -u -r1.2 size1.java
--- gnu/testlet/java/awt/Frame/size1.java	21 Feb 2006 23:51:48 -0000	1.2
+++ gnu/testlet/java/awt/Frame/size1.java	22 Feb 2006 15:51:31 -0000
@@ -83,6 +83,7 @@
     bg.show ();
     fg.show ();
 
+    // There is a delay to avoid any race conditions.
     r.waitForIdle ();
     r.delay (100);
 

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 10:04   ` David Gilbert
  2006-02-22 14:48     ` Lillian Angel
@ 2006-02-22 17:12     ` Thomas Fitzsimmons
  1 sibling, 0 replies; 18+ messages in thread
From: Thomas Fitzsimmons @ 2006-02-22 17:12 UTC (permalink / raw)
  To: David Gilbert; +Cc: Lillian Angel, mauve-patches

On Wed, 2006-02-22 at 10:04 +0000, David Gilbert wrote:
> Hi Lillian,
> 
> I wonder if these methods should really be added to TestHarness, they 
> seem a little too "specialised" to me (especially the rectangle corner 
> color tests), and it would be nice to keep TestHarness as simple as 
> possible.  Maybe you could create a utility class in 
> gnu.testlet.java.awt.* that contains static methods that perform these 
> checks?  Then you could share that between your Frame and Container tests.

Yes, it's probably cleaner to have a utility class in
gnu.testlet.java.awt.

Tom

> 
> Regards,
> 
> Dave
> 
> Lillian Angel wrote:
> 
> >On Tue, 2006-02-21 at 18:52 -0500, Lillian Angel wrote:
> >  
> >
> >>I added new tests for Lightweight Containers.
> >>    
> >>
> >
> >I forgot to mention, I added some new methods to TestHarness. These
> >methods are helpful for testing locations on the screen when using
> >Lightweight/Heavyweight widgets. It made sense to add these to
> >TestHarness, since they are used in Frame and Container.
> >
> >  
> >
> >>2006-02-21  Lillian Angel  <langel@redhat.com>
> >>
> >>        * gnu/testlet/TestHarness.java
> >>        (checkColor): New method used to compare colors.
> >>        (checkRectangleOuterColors): New method used to compare the
> >>        colors of a rectangle's corners to the colors of the pixels
> >>        surrounding the corners.
> >>        (checkRectangleCornerColors): New method used to compare
> >>        the colors of the pixels at the corners of a rectangle, to
> >>        a given color.
> >>        * gnu/testlet/java/awt/Container/LightweightContainer.java:
> >>        New Test.
> >>        * gnu/testlet/java/awt/Frame/size1.java
> >>        (checkColor): Removed.
> >>        (test): Changed to use new methods in TestHarness.
> >>
> >>    
> >>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Patch: New Lightweight tests
  2006-02-22 10:28 ` David Gilbert
  2006-02-22 14:51   ` Lillian Angel
@ 2006-02-22 17:25   ` Thomas Fitzsimmons
  2006-02-22 17:47     ` FYI: " Lillian Angel
  1 sibling, 1 reply; 18+ messages in thread
From: Thomas Fitzsimmons @ 2006-02-22 17:25 UTC (permalink / raw)
  To: David Gilbert; +Cc: Lillian Angel, mauve-patches

On Wed, 2006-02-22 at 10:29 +0000, David Gilbert wrote:
> Hi Lillian,
> 
> Lillian Angel wrote:
> 
> >
> >Index: gnu/testlet/java/awt/Container/LightweightContainer.java
> >===================================================================
> >
> >  
> >
> 
> >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> >+    
> >+    r.delay(3000);
> >+  }
> >  
> >
> Do you know what the delay is for?  Is there some other way to write the 
> test so that the delay isn't required?  It's just that it would be nice 
> if the Mauve test run doesn't take longer than it has to - otherwise 
> hackers will stop running it.

The three second delays are to help the human tester see the result,
though we should probably enable or disable them based on if Mauve is
running in headless mode.  The new AWT utility class that we add could
check the SHOW_GUI_TESTS environment variable and cache its value.

We require:

+    r.waitForIdle();
+    r.delay(300);

after showing a frame, before checking pixels in it so that GTK has had
time to draw it.  I think this is documented in one of the other AWT
tests.

Tom


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-22 17:25   ` Patch: " Thomas Fitzsimmons
@ 2006-02-22 17:47     ` Lillian Angel
  2006-02-22 18:18       ` Lillian Angel
  0 siblings, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 17:47 UTC (permalink / raw)
  To: Thomas Fitzsimmons; +Cc: David Gilbert, mauve-patches

[-- Attachment #1: Type: text/plain, Size: 2306 bytes --]

- I added a utility class to gnu/testlet/java/awt/ to take care of the
location tests using colors.
- I fixed up the other classes to use this new Class.
- I also added a new test to LightweightContainer. This test represents
the testcase that initially found the problem with lightweight
containers.
- I added more comments for the delays.

2006-02-22  Lillian Angel  <langel@redhat.com>

        * gnu/testlet/TestHarness.java
        (checkColor): Removed.
        (checkRectangleOuterColors): Removed.
        (checkRectangleCornerColors): Removed.
        * gnu/testlet/java/awt/Container/LightweightContainer.java
        (testLoc): Added comment, changed to use LocationTests.
        (testWindow): Likewise.
        (testLoc1): Added new test.
        (test): Added call to testLoc1.
        * gnu/testlet/java/awt/Frame/size1.java
        (test): Added comment, changed to use LocationTests.
        * gnu/testlet/java/awt/LocationTests.java: New class.


On Wed, 2006-02-22 at 12:25 -0500, Thomas Fitzsimmons wrote:
> On Wed, 2006-02-22 at 10:29 +0000, David Gilbert wrote:
> > Hi Lillian,
> > 
> > Lillian Angel wrote:
> > 
> > >
> > >Index: gnu/testlet/java/awt/Container/LightweightContainer.java
> > >===================================================================
> > >
> > >  
> > >
> > 
> > >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> > >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> > >+    
> > >+    r.delay(3000);
> > >+  }
> > >  
> > >
> > Do you know what the delay is for?  Is there some other way to write the 
> > test so that the delay isn't required?  It's just that it would be nice 
> > if the Mauve test run doesn't take longer than it has to - otherwise 
> > hackers will stop running it.
> 
> The three second delays are to help the human tester see the result,
> though we should probably enable or disable them based on if Mauve is
> running in headless mode.  The new AWT utility class that we add could
> check the SHOW_GUI_TESTS environment variable and cache its value.
> 
> We require:
> 
> +    r.waitForIdle();
> +    r.delay(300);
> 
> after showing a frame, before checking pixels in it so that GTK has had
> time to draw it.  I think this is documented in one of the other AWT
> tests.
> 
> Tom
> 
> 

[-- Attachment #2: patch2.diff --]
[-- Type: text/x-patch, Size: 14036 bytes --]

Index: gnu/testlet/TestHarness.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/TestHarness.java,v
retrieving revision 1.22
diff -u -r1.22 TestHarness.java
--- gnu/testlet/TestHarness.java	22 Feb 2006 15:55:06 -0000	1.22
+++ gnu/testlet/TestHarness.java	22 Feb 2006 17:41:57 -0000
@@ -190,113 +190,6 @@
       check (false);
     }
   
-  /**
-   * Compares two colors.
-   * 
-   * @param a -
-   *          Color to compare.
-   * @param b -
-   *          Color to compare.
-   * @param match -
-   *          true if colors should be equivalent.
-   */
-  public void checkColor(Color a, Color b, boolean match)
-  {
-    if (match)
-      check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
-            && a.getBlue() == b.getBlue());
-    else
-      check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen() 
-          && a.getBlue() == b.getBlue()));
-  }
-  
-  /**
-   * This method checks that the pixels outside of the rectange, at all corners,
-   * match (or don't match) a given color.
-   * 
-   * @param r -
-   *          the Robot to use to get the pixel color at a location.
-   * @param rect -
-   *          the Rectangle to check
-   * @param comp -
-   *          the Color to compare the pixel colors to.
-   * @param match -
-   *          true if the pixel outside the rectangle corner should be
-   *          equivalent to comp.
-   */
-  public void checkRectangleOuterColors(Robot r, Rectangle rect, Color comp,
-                                        boolean match)
-  {
-    Color c;
-
-    // top-left-left
-    c = r.getPixelColor(rect.x - 1, rect.y);
-    checkColor(c, comp, match);
-
-    // top-left-top
-    r.getPixelColor(rect.x, rect.y - 1);
-    checkColor(c, comp, match);
-
-    // top-right-right
-    r.getPixelColor((rect.x + rect.width - 1) + 1, rect.y);
-    checkColor(c, comp, match);
-
-    // top-right-top
-    r.getPixelColor((rect.x + rect.width - 1), rect.y - 1);
-    checkColor(c, comp, match);
-
-    // bottom-left-left
-    r.getPixelColor(rect.x - 1, (rect.y + rect.height - 1));
-    checkColor(c, comp, match);
-
-    // bottom-left-bottom
-    r.getPixelColor(rect.x, (rect.y + rect.height - 1) + 1);
-    checkColor(c, comp, match);
-
-    // bottom-right-right
-    r.getPixelColor((rect.x + rect.width - 1) + 1, (rect.y + rect.height - 1));
-    checkColor(c, comp, match);
-
-    // bottom-right-bottom
-    r.getPixelColor((rect.x + rect.width - 1), (rect.y + rect.height - 1) + 1);
-    checkColor(c, comp, match);
-  }
-
-  /**
-   * This method checks the pixel colors of a Rectangle's corners.
-   * 
-   * @param r -
-   *          the Robot to use to get the pixel colors.
-   * @param rect -
-   *          the Rectangle to check.
-   * @param comp -
-   *          the Color to compare.
-   * @param match -
-   *          true if the corner pixel color of the rectangle should be
-   *          equivalent to comp.
-   */
-  public void checkRectangleCornerColors(Robot r, Rectangle rect, Color comp,
-                                         boolean match)
-  {
-    Color c;
-
-    // top-left
-    c = r.getPixelColor(rect.x, rect.y);
-    checkColor(c, comp, match);
-
-    // top-right
-    c = r.getPixelColor(rect.x + rect.width - 1, rect.y);
-    checkColor(c, comp, match);
-
-    // bottom-left
-    c = r.getPixelColor(rect.x, rect.y + rect.height - 1);
-    checkColor(c, comp, match);
-
-    // bottom-right
-    c = r.getPixelColor(rect.x + rect.width - 1, rect.y + rect.height - 1);
-    checkColor(c, comp, match);
-  }
-  
   // Given a resource name, return a Reader on it.  Resource names are
   // just like file names.  They are relative to the top level Mauve
   // directory, but '#' characters are used in place of directory
Index: gnu/testlet/java/awt/LocationTests.java
===================================================================
RCS file: gnu/testlet/java/awt/LocationTests.java
diff -N gnu/testlet/java/awt/LocationTests.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/awt/LocationTests.java	22 Feb 2006 17:41:57 -0000
@@ -0,0 +1,147 @@
+/* LocationTests.java -- 
+   Copyright (C) 2006 Red Hat
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.4
+
+package gnu.testlet.java.awt;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+
+/** 
+ * This class tests the location of a rectangle on the screen
+ * using the colors of the rectangle and a given color.
+ * 
+ * @author langel (langel at redhat dot com)
+ */
+public class LocationTests
+{
+  
+  /**
+   * Compares two colors.
+   * 
+   * @param a -
+   *          Color to compare.
+   * @param b -
+   *          Color to compare.
+   * @param match -
+   *          true if colors should be equivalent.
+   */
+  public static void checkColor(TestHarness h, Color a, Color b, boolean match)
+  {
+    if (match)
+      h.check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
+            && a.getBlue() == b.getBlue());
+    else
+      h.check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen() 
+          && a.getBlue() == b.getBlue()));
+  }
+  
+  /**
+   * This method checks that the pixels outside of the rectange, at all corners,
+   * match (or don't match) a given color.
+   * 
+   * @param r -
+   *          the Robot to use to get the pixel color at a location.
+   * @param rect -
+   *          the Rectangle to check
+   * @param comp -
+   *          the Color to compare the pixel colors to.
+   * @param match -
+   *          true if the pixel outside the rectangle corner should be
+   *          equivalent to comp.
+   */
+  public static void checkRectangleOuterColors(TestHarness h, Robot r, Rectangle rect, Color comp,
+                                        boolean match)
+  {
+    Color c;
+
+    // top-left-left
+    c = r.getPixelColor(rect.x - 1, rect.y);
+    checkColor(h, c, comp, match);
+
+    // top-left-top
+    r.getPixelColor(rect.x, rect.y - 1);
+    checkColor(h, c, comp, match);
+
+    // top-right-right
+    r.getPixelColor((rect.x + rect.width - 1) + 1, rect.y);
+    checkColor(h, c, comp, match);
+
+    // top-right-top
+    r.getPixelColor((rect.x + rect.width - 1), rect.y - 1);
+    checkColor(h, c, comp, match);
+
+    // bottom-left-left
+    r.getPixelColor(rect.x - 1, (rect.y + rect.height - 1));
+    checkColor(h, c, comp, match);
+
+    // bottom-left-bottom
+    r.getPixelColor(rect.x, (rect.y + rect.height - 1) + 1);
+    checkColor(h, c, comp, match);
+
+    // bottom-right-right
+    r.getPixelColor((rect.x + rect.width - 1) + 1, (rect.y + rect.height - 1));
+    checkColor(h, c, comp, match);
+
+    // bottom-right-bottom
+    r.getPixelColor((rect.x + rect.width - 1), (rect.y + rect.height - 1) + 1);
+    checkColor(h, c, comp, match);
+  }
+
+  /**
+   * This method checks the pixel colors of a Rectangle's corners.
+   * 
+   * @param r -
+   *          the Robot to use to get the pixel colors.
+   * @param rect -
+   *          the Rectangle to check.
+   * @param comp -
+   *          the Color to compare.
+   * @param match -
+   *          true if the corner pixel color of the rectangle should be
+   *          equivalent to comp.
+   */
+  public static void checkRectangleCornerColors(TestHarness h, Robot r, Rectangle rect, Color comp,
+                                         boolean match)
+  {
+    Color c;
+
+    // top-left
+    c = r.getPixelColor(rect.x, rect.y);
+    checkColor(h, c, comp, match);
+
+    // top-right
+    c = r.getPixelColor(rect.x + rect.width - 1, rect.y);
+    checkColor(h, c, comp, match);
+
+    // bottom-left
+    c = r.getPixelColor(rect.x, rect.y + rect.height - 1);
+    checkColor(h, c, comp, match);
+
+    // bottom-right
+    c = r.getPixelColor(rect.x + rect.width - 1, rect.y + rect.height - 1);
+    checkColor(h, c, comp, match);
+  }
+}
Index: gnu/testlet/java/awt/Container/LightweightContainer.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Container/LightweightContainer.java,v
retrieving revision 1.3
diff -u -r1.3 LightweightContainer.java
--- gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 15:55:06 -0000	1.3
+++ gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 17:41:57 -0000
@@ -25,6 +25,7 @@
 
 import gnu.testlet.TestHarness;
 import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
 
 import java.awt.*;
 
@@ -34,6 +35,7 @@
   public void test (TestHarness harness)
   {
     testLoc(harness);
+    testLoc2(harness);
     testWindow(harness);
   }
   
@@ -61,9 +63,10 @@
     bounds.y = loc.y + i.top;
     // bounds of blue rectangle inside red rectangle
     Rectangle bounds2 = new Rectangle(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2);
-    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
-    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
+    LocationTests.checkRectangleOuterColors(harness, r, bounds2, Color.red, true);
+    LocationTests.checkRectangleCornerColors(harness, r, bounds2, Color.red, false);
     
+    // There is a delay so the tester can see the result.
     r.delay(3000);
   }
   
@@ -115,18 +118,74 @@
     fgHW_x = p.x + i.left + fgHW_x + fgLW_x;
     fgHW_y = p.y + i.top + fgHW_y + fgLW_y;
     Rectangle b = new Rectangle(fgHW_x, fgHW_y, fgHW_w, fgHW_h);
-    harness.checkRectangleOuterColors(r, b, bgHW_c, true);
+    LocationTests.checkRectangleOuterColors(harness, r, b, bgHW_c, true);
     
     // check the fgHW's corner pixels.
-    harness.checkRectangleCornerColors(r, b, fgHW_c, true);
-    harness.checkRectangleCornerColors(r, b, bgHW_c, false);
+    LocationTests.checkRectangleCornerColors(harness, r, b, fgHW_c, true);
+    LocationTests.checkRectangleCornerColors(harness, r, b, bgHW_c, false);
     
     // check the two pixels adjacent to each corner of the fgLW
     p = f.getLocationOnScreen();
     fgLW_x = p.x + i.left + fgLW_x;
     fgLW_y = p.y + i.top + fgLW_y;
-    harness.checkRectangleOuterColors(r, new Rectangle(fgLW_x, fgLW_y, fgLW_w, fgLW_h), bgHW_c, true);
+    LocationTests.checkRectangleOuterColors(harness, r, new Rectangle(fgLW_x, fgLW_y, fgLW_w, fgLW_h), bgHW_c, true);
+    
+    // There is a delay so the tester can see the result.
+    r.delay(3000);
+  }
+  
+  // Tests the location of a Lightweight Container next to
+  // a heavyweight panel, both in a frame.
+  public void testLoc2(TestHarness harness)
+  {
+    Robot r = harness.createRobot();
+    Frame f = new Frame();
+    f.setLayout(new BorderLayout());
 
+    Panel HW = new Panel();
+    HW.setLayout (new BorderLayout());
+    HW.add (new testPanel(Color.green), BorderLayout.CENTER);
+    f.add(HW, BorderLayout.CENTER);
+    
+    testContainer LW = new testContainer();
+    GridBagLayout gridbag = new GridBagLayout();
+    GridBagConstraints c = new GridBagConstraints();
+    LW.setLayout(gridbag);
+    Button b1 = new Button("Button1");
+    Button b2 = new Button("Button2");
+    Button b3 = new Button("Button3");
+    Label l = new Label("Label");
+    c.fill = GridBagConstraints.HORIZONTAL;
+    c.weightx = 0.0;    c.weighty = 0.0;
+    c.insets = new Insets(4, 4, 1, 1);
+    c.gridwidth = GridBagConstraints.REMAINDER;
+    gridbag.setConstraints(b1, c);
+    LW.add(b1);
+    c.gridwidth = 1;
+    gridbag.setConstraints(l, c);
+    LW.add(l);
+    gridbag.setConstraints(b2, c);
+    LW.add(b2);
+    gridbag.setConstraints(b3, c);
+    LW.add(b3);
+    f.add(LW, BorderLayout.EAST);
+    
+    // Wait for delay to avoid race conditions
+    r.waitForIdle();
+    r.delay(300);    
+    
+    f.setSize(500, 500);
+    f.show();
+    
+    Rectangle bounds = LW.getBounds();
+    Point loc = f.getLocationOnScreen();
+    Insets i = f.getInsets();
+    bounds.x = loc.x + i.left + HW.getWidth();
+    bounds.y = loc.y + i.top;
+    LocationTests.checkRectangleOuterColors(harness, r, bounds, Color.red, false);
+    LocationTests.checkRectangleOuterColors(harness, r, bounds, Color.blue, false);
+    
+    // There is a delay so the tester can see the result.
     r.delay(3000);
   }
   
Index: gnu/testlet/java/awt/Frame/size1.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Frame/size1.java,v
retrieving revision 1.3
diff -u -r1.3 size1.java
--- gnu/testlet/java/awt/Frame/size1.java	22 Feb 2006 15:55:06 -0000	1.3
+++ gnu/testlet/java/awt/Frame/size1.java	22 Feb 2006 17:41:57 -0000
@@ -23,6 +23,7 @@
 
 import gnu.testlet.TestHarness;
 import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
 
 import java.awt.*;
 
@@ -91,11 +92,12 @@
     
     // check the two pixels adjacent to each corner of the foreground
     // frame.
-    harness.checkRectangleOuterColors(r, bounds, nonWMColor, true);
+    LocationTests.checkRectangleOuterColors(harness, r, bounds, nonWMColor, true);
     
     // check the frame's corner pixels.
-    harness.checkRectangleCornerColors(r, bounds, nonWMColor, false);
-
+    LocationTests.checkRectangleCornerColors(harness, r, bounds, nonWMColor, false);
+    
+    // There is a delay so the tester can see the result.
     r.delay (3000);
   }
 }

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-22 17:47     ` FYI: " Lillian Angel
@ 2006-02-22 18:18       ` Lillian Angel
  2006-02-24  2:02         ` Thomas Fitzsimmons
  0 siblings, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-22 18:18 UTC (permalink / raw)
  To: Thomas Fitzsimmons; +Cc: David Gilbert, mauve-patches

[-- Attachment #1: Type: text/plain, Size: 2872 bytes --]

I fixed up testLoc1 so it fails with Classpath (without my AWT patch).
I also adjusted some of the delays to be longer. It was causing race
conditions with my new test.

2006-02-22  Lillian Angel  <langel@redhat.com>

        * gnu/testlet/java/awt/Container/LightweightContainer.java
        (testLoc1): Fixed up tests so it fails without pending
        lightweight patch.



On Wed, 2006-02-22 at 12:47 -0500, Lillian Angel wrote:
> - I added a utility class to gnu/testlet/java/awt/ to take care of the
> location tests using colors.
> - I fixed up the other classes to use this new Class.
> - I also added a new test to LightweightContainer. This test represents
> the testcase that initially found the problem with lightweight
> containers.
> - I added more comments for the delays.
> 
> 2006-02-22  Lillian Angel  <langel@redhat.com>
> 
>         * gnu/testlet/TestHarness.java
>         (checkColor): Removed.
>         (checkRectangleOuterColors): Removed.
>         (checkRectangleCornerColors): Removed.
>         * gnu/testlet/java/awt/Container/LightweightContainer.java
>         (testLoc): Added comment, changed to use LocationTests.
>         (testWindow): Likewise.
>         (testLoc1): Added new test.
>         (test): Added call to testLoc1.
>         * gnu/testlet/java/awt/Frame/size1.java
>         (test): Added comment, changed to use LocationTests.
>         * gnu/testlet/java/awt/LocationTests.java: New class.
> 
> 
> On Wed, 2006-02-22 at 12:25 -0500, Thomas Fitzsimmons wrote:
> > On Wed, 2006-02-22 at 10:29 +0000, David Gilbert wrote:
> > > Hi Lillian,
> > > 
> > > Lillian Angel wrote:
> > > 
> > > >
> > > >Index: gnu/testlet/java/awt/Container/LightweightContainer.java
> > > >===================================================================
> > > >
> > > >  
> > > >
> > > 
> > > >+    harness.checkRectangleOuterColors(r, bounds2, Color.red, true);
> > > >+    harness.checkRectangleCornerColors(r, bounds2, Color.red, false);
> > > >+    
> > > >+    r.delay(3000);
> > > >+  }
> > > >  
> > > >
> > > Do you know what the delay is for?  Is there some other way to write the 
> > > test so that the delay isn't required?  It's just that it would be nice 
> > > if the Mauve test run doesn't take longer than it has to - otherwise 
> > > hackers will stop running it.
> > 
> > The three second delays are to help the human tester see the result,
> > though we should probably enable or disable them based on if Mauve is
> > running in headless mode.  The new AWT utility class that we add could
> > check the SHOW_GUI_TESTS environment variable and cache its value.
> > 
> > We require:
> > 
> > +    r.waitForIdle();
> > +    r.delay(300);
> > 
> > after showing a frame, before checking pixels in it so that GTK has had
> > time to draw it.  I think this is documented in one of the other AWT
> > tests.
> > 
> > Tom
> > 
> > 

[-- Attachment #2: patch2.diff --]
[-- Type: text/x-patch, Size: 2127 bytes --]

Index: gnu/testlet/java/awt/Container/LightweightContainer.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Container/LightweightContainer.java,v
retrieving revision 1.4
diff -u -r1.4 LightweightContainer.java
--- gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 17:45:33 -0000	1.4
+++ gnu/testlet/java/awt/Container/LightweightContainer.java	22 Feb 2006 18:15:54 -0000
@@ -53,7 +53,7 @@
 
     // There is a delay to avoid any race conditions.    
     r.waitForIdle();
-    r.delay(300);
+    r.delay(1000);
     
     // bounds of red rectangle (1 pixel wide border)
     Rectangle bounds = tc.getBounds();
@@ -110,7 +110,7 @@
 
     // There is a delay to avoid any race conditions.
     r.waitForIdle();
-    r.delay(300);    
+    r.delay(1000);    
     Insets i = f.getInsets();
     
     // check the two pixels adjacent to each corner of the fgHW
@@ -169,21 +169,26 @@
     gridbag.setConstraints(b3, c);
     LW.add(b3);
     f.add(LW, BorderLayout.EAST);
-    
-    // Wait for delay to avoid race conditions
-    r.waitForIdle();
-    r.delay(300);    
-    
+        
     f.setSize(500, 500);
     f.show();
+
+    // Wait for delay to avoid race conditions
+    r.waitForIdle();
+    r.delay(2000);    
     
     Rectangle bounds = LW.getBounds();
     Point loc = f.getLocationOnScreen();
     Insets i = f.getInsets();
     bounds.x = loc.x + i.left + HW.getWidth();
     bounds.y = loc.y + i.top;
-    LocationTests.checkRectangleOuterColors(harness, r, bounds, Color.red, false);
-    LocationTests.checkRectangleOuterColors(harness, r, bounds, Color.blue, false);
+    
+    int x = f.getLocationOnScreen().x + HW.getWidth() + f.getInsets().left;
+    int y = f.getLocationOnScreen().y + f.getHeight()/2 + f.getInsets().top;
+    Color d = r.getPixelColor(x, y);
+    LocationTests.checkColor(harness, d, Color.red, true);
+    Color e = r.getPixelColor(x - 1, y);
+    LocationTests.checkColor(harness, e, Color.green, true);
     
     // There is a delay so the tester can see the result.
     r.delay(3000);

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-22 18:18       ` Lillian Angel
@ 2006-02-24  2:02         ` Thomas Fitzsimmons
  2006-02-24 14:49           ` Lillian Angel
  0 siblings, 1 reply; 18+ messages in thread
From: Thomas Fitzsimmons @ 2006-02-24  2:02 UTC (permalink / raw)
  To: Lillian Angel; +Cc: David Gilbert, mauve-patches

Hi,

On Wed, 2006-02-22 at 13:18 -0500, Lillian Angel wrote:
> I fixed up testLoc1

I don't see testLoc1 in
gnu/testlet/java/awt/Container/LightweightContainer.java.

>  so it fails with Classpath (without my AWT patch).
> I also adjusted some of the delays to be longer. It was causing race
> conditions with my new test.
> 
> 2006-02-22  Lillian Angel  <langel@redhat.com>
> 
>         * gnu/testlet/java/awt/Container/LightweightContainer.java
>         (testLoc1): Fixed up tests so it fails without pending
>         lightweight patch.

Did you mean testLoc2?  The first check in testLoc2 fails on Sun and on
JamVM with or without the lightweight patch.  This location seems wrong:

    int x = LW.getX() + f.getInsets().left + p.x - 1;
    int y = pan.getY() + f.getInsets().top + p.y;

since the bottom panel is inset from the left panel.

Also, I think this test should be simplified.  The test is:

A Frame containing a lighweight container.  The lightweight container
contains a heavyweight child.  The lightweight container is moved but
not resized (so that the heavyweight's position changes relative to the
frame but not relative to its parent).  So the test should be:

- show a Frame with a null layout and a green background, with
lightweight child at a given size and location.  inside that lightweight
child, add a blue heavyweight panel

- wait for a second

- call Component.move on the lightweight child

- check for the blue heavyweight panel's position relative to the frame

Without our patch, the panel will not move and so will end up in the
wrong location relative to the frame.  With our patch it will move along
with the lightweight container and end up in the right position.

Tom


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-24  2:02         ` Thomas Fitzsimmons
@ 2006-02-24 14:49           ` Lillian Angel
  2006-02-24 15:17             ` Lillian Angel
  0 siblings, 1 reply; 18+ messages in thread
From: Lillian Angel @ 2006-02-24 14:49 UTC (permalink / raw)
  To: Thomas Fitzsimmons; +Cc: David Gilbert, mauve-patches


> Did you mean testLoc2?  The first check in testLoc2 fails on Sun and on
> JamVM with or without the lightweight patch.  This location seems wrong:
> 
>     int x = LW.getX() + f.getInsets().left + p.x - 1;
>     int y = pan.getY() + f.getInsets().top + p.y;
> 
> since the bottom panel is inset from the left panel.
> 

Oops, yes. Odd, it does pass on Sun for me.. could be some sort of race
condition.

> Also, I think this test should be simplified.  The test is:
> 
> A Frame containing a lighweight container.  The lightweight container
> contains a heavyweight child.  The lightweight container is moved but
> not resized (so that the heavyweight's position changes relative to the
> frame but not relative to its parent).  So the test should be:
> 
> - show a Frame with a null layout and a green background, with
> lightweight child at a given size and location.  inside that lightweight
> child, add a blue heavyweight panel
> 
> - wait for a second
> 
> - call Component.move on the lightweight child
> 
> - check for the blue heavyweight panel's position relative to the frame
> 
> Without our patch, the panel will not move and so will end up in the
> wrong location relative to the frame.  With our patch it will move along
> with the lightweight container and end up in the right position.


I will fix this. I agree it needs to be simplified.

Thanks, 
Lillian

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: FYI: New Lightweight tests
  2006-02-24 14:49           ` Lillian Angel
@ 2006-02-24 15:17             ` Lillian Angel
  0 siblings, 0 replies; 18+ messages in thread
From: Lillian Angel @ 2006-02-24 15:17 UTC (permalink / raw)
  To: Thomas Fitzsimmons; +Cc: David Gilbert, mauve-patches

[-- Attachment #1: Type: text/plain, Size: 1158 bytes --]

> > Also, I think this test should be simplified.  The test is:
> > 
> > A Frame containing a lighweight container.  The lightweight container
> > contains a heavyweight child.  The lightweight container is moved but
> > not resized (so that the heavyweight's position changes relative to the
> > frame but not relative to its parent).  So the test should be:
> > 
> > - show a Frame with a null layout and a green background, with
> > lightweight child at a given size and location.  inside that lightweight
> > child, add a blue heavyweight panel
> > 
> > - wait for a second
> > 
> > - call Component.move on the lightweight child
> > 
> > - check for the blue heavyweight panel's position relative to the frame
> > 
> > Without our patch, the panel will not move and so will end up in the
> > wrong location relative to the frame.  With our patch it will move along
> > with the lightweight container and end up in the right position.
> 

 Fixed. But it appears that our patch is not correct still!


2006-02-24  Lillian Angel  <langel@redhat.com>

        * gnu/testlet/java/awt/Container/LightweightContainer.java
        (testLoc2): Simplified test.


[-- Attachment #2: patch2.diff --]
[-- Type: text/x-patch, Size: 2975 bytes --]

Index: gnu/testlet/java/awt/Container/LightweightContainer.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Container/LightweightContainer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- gnu/testlet/java/awt/Container/LightweightContainer.java	23 Feb 2006 20:39:48 -0000	1.6
+++ gnu/testlet/java/awt/Container/LightweightContainer.java	24 Feb 2006 15:16:14 -0000	1.7
@@ -140,61 +140,32 @@
   {
     Robot r = harness.createRobot();
     Frame f = new Frame();
-    f.setLayout(new BorderLayout());
-
-    Panel HW = new Panel();
-    HW.setLayout (new BorderLayout());
-    HW.add (new testPanel(Color.green), BorderLayout.CENTER);
-    f.add(HW, BorderLayout.CENTER);
-    
-    testContainer LW = new testContainer();
-    GridBagLayout gridbag = new GridBagLayout();
-    GridBagConstraints c = new GridBagConstraints();
-    LW.setLayout(gridbag);
-    
-    Button b1 = new Button("Button1");
-    Button b2 = new Button("Button2");
-    Button b3 = new Button("Button3");
-    Label l = new Label("Label");
-    Panel pan = new Panel(new GridLayout(3, 2, 2, 2));
-    Label l2 = new Label("", Label.CENTER);
-
-    pan.add(l);
-    pan.add(b1);
-    pan.add(b2);
-    pan.add(b3);
-    
-    c.fill = GridBagConstraints.HORIZONTAL;
-    c.weightx = 0.0;    c.weighty = 0.0;
-    c.insets = new Insets(4, 4, 1, 1);
-    c.gridwidth = GridBagConstraints.REMAINDER;
-    c.gridwidth = 1;
-    c.gridwidth = GridBagConstraints.REMAINDER;
-    c.weightx = 1.0;    c.weighty = 1.0;
-    gridbag.setConstraints(l2, c);
-    LW.add(l2);
-    c.weightx = 1.0;    c.weighty = 0.0;
-    gridbag.setConstraints(pan, c);
-    LW.add(pan);
-    f.add(LW, BorderLayout.EAST);
-        
+    f.setLayout(null);
+    f.setBackground(Color.green);
+    testContainer tc = new testContainer();
+    f.add(tc);
     f.setSize(500, 500);
+    tc.setBounds(100, 0, 200, 200);
+    testPanel p = new testPanel(Color.yellow);
+    tc.add(p);
+    p.setBounds(10, 10, 50, 50);
     f.show();
     
-    // Wait for delay to avoid race conditions
+    // There is a delay to avoid any race conditions.
     r.waitForIdle();
-    r.delay(2000);   
+    r.delay(1000);    
+
+    Point pt = p.getLocationOnScreen();
+    tc.move(150, 50);
     
-    Point p = f.getLocationOnScreen();
-    int x = LW.getX() + f.getInsets().left + p.x - 1;
-    int y = pan.getY() + f.getInsets().top + p.y;
-    Color d = r.getPixelColor(x, y);
-    LocationTests.checkColor(harness, d, Color.blue, false);
-    Color e = r.getPixelColor(x - 2, y);
-    LocationTests.checkColor(harness, e, Color.blue, true);
+    r.delay(1000);
     
+    Point pt2 = p.getLocationOnScreen();
+    harness.check(pt2.x, (pt.x + 50));
+    harness.check(pt2.y, (pt.y + 50));
+    	    
     // There is a delay so the tester can see the result.
-    r.delay(2000);
+    r.delay(3000);
   }
   
   class testPanel extends Panel

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2006-02-24 15:17 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-21 23:52 Patch: New Lightweight tests Lillian Angel
2006-02-21 23:55 ` Lillian Angel
2006-02-22 10:04   ` David Gilbert
2006-02-22 14:48     ` Lillian Angel
2006-02-22 17:12     ` Thomas Fitzsimmons
2006-02-22  8:12 ` Roman Kennke
2006-02-22 14:49   ` Lillian Angel
2006-02-22 10:28 ` David Gilbert
2006-02-22 14:51   ` Lillian Angel
2006-02-22 15:09     ` Michael Koch
2006-02-22 15:12       ` Lillian Angel
2006-02-22 15:55         ` FYI: " Lillian Angel
2006-02-22 17:25   ` Patch: " Thomas Fitzsimmons
2006-02-22 17:47     ` FYI: " Lillian Angel
2006-02-22 18:18       ` Lillian Angel
2006-02-24  2:02         ` Thomas Fitzsimmons
2006-02-24 14:49           ` Lillian Angel
2006-02-24 15:17             ` Lillian Angel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).