* FYI: JLabel tests
@ 2006-06-22 16:11 David Gilbert
0 siblings, 0 replies; only message in thread
From: David Gilbert @ 2006-06-22 16:11 UTC (permalink / raw)
To: mauve-patches
[-- Attachment #1: Type: text/plain, Size: 1072 bytes --]
This patch (committed) contains new tests for the JLabel class, which
I've been working on today. There are still a few failures, but most of
the problems have been fixed. I'm checking in the tests in case someone
wants to clean up the remaining bugs before I get a chance:
2006-06-22 David Gilbert <david.gilbert@object-refinery.com>
* gnu/testlet/javax/swing/JLabel/getActionMap.java: New file,
* gnu/testlet/javax/swing/JLabel/getInputMap.java
(testMethod2): Added new checks,
* gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java
(testKeyMap): New method,
* gnu/testlet/javax/swing/JLabel/setFont.java: New file,
* gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java: New file,
* gnu/testlet/javax/swing/JLabel/setIconTextGap.java: New file,
* gnu/testlet/javax/swing/JLabel/setText.java
(events): New field,
(propertyChange): New method,
(testGeneral): New method,
(testGeneralWithMnemonic): New method,
* gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java: New file.
Regards,
Dave
[-- Attachment #2: diff.txt --]
[-- Type: text/plain, Size: 21076 bytes --]
Index: gnu/testlet/javax/swing/JLabel/getActionMap.java
===================================================================
RCS file: gnu/testlet/javax/swing/JLabel/getActionMap.java
diff -N gnu/testlet/javax/swing/JLabel/getActionMap.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/JLabel/getActionMap.java 22 Jun 2006 16:03:53 -0000
@@ -0,0 +1,61 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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: JDK1.3
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ActionMap;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // this is the original version of the test - it shows no actions for
+ // a regular label...
+ JLabel label = new JLabel("XYZ");
+ ActionMap m = label.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ harness.check(mp, null);
+
+ // but then I remembered that when a label has a mnemonic and target
+ // component, you can get the focus for the target component via the
+ // keyboard
+ JLabel label2 = new JLabel("ABC");
+ JButton button = new JButton("Target");
+ label2.setLabelFor(button);
+ label2.setDisplayedMnemonic('A');
+
+ m = label2.getActionMap();
+ harness.check(m.keys(), null);
+ mp = m.getParent();
+ harness.check(mp.size(), 2);
+ harness.check(mp.get("press") != null);
+ harness.check(mp.get("release") != null);
+ }
+}
Index: gnu/testlet/javax/swing/JLabel/getInputMap.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/JLabel/getInputMap.java,v
retrieving revision 1.1
diff -u -r1.1 getInputMap.java
--- gnu/testlet/javax/swing/JLabel/getInputMap.java 7 Jun 2006 09:45:53 -0000 1.1
+++ gnu/testlet/javax/swing/JLabel/getInputMap.java 22 Jun 2006 16:03:53 -0000
@@ -28,8 +28,10 @@
import gnu.testlet.Testlet;
import javax.swing.InputMap;
+import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
+import javax.swing.KeyStroke;
/**
* Checks the input maps defined for a JLabel - this is really testing
@@ -67,5 +69,25 @@
InputMap m3 = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
harness.check(m3.keys(), null);
harness.check(m3.getParent(), null);
+
+ // now make a label that is the label for a component
+ JLabel label2 = new JLabel("Test");
+ JButton button = new JButton("Target");
+ label2.setLabelFor(button);
+ label2.setDisplayedMnemonic('A');
+
+ m1 = label2.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ m1p = m1.getParent();
+ harness.check(m1p, null);
+ m2 = label2.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ m3 = label2.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ InputMap m3p = m3.getParent();
+ harness.check(m3p.get(KeyStroke.getKeyStroke("alt pressed A")), "press");
+ label2.setDisplayedMnemonic('B');
+ harness.check(m3p.get(KeyStroke.getKeyStroke("alt pressed B")), "press");
}
}
Index: gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java,v
retrieving revision 1.2
diff -u -r1.2 setDisplayedMnemonic.java
--- gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java 22 Jun 2006 09:59:15 -0000 1.2
+++ gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java 22 Jun 2006 16:03:53 -0000
@@ -27,11 +27,16 @@
import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;
+import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
import javax.swing.JLabel;
+import javax.swing.KeyStroke;
public class setDisplayedMnemonic implements Testlet, PropertyChangeListener
{
@@ -55,6 +60,7 @@
{
testMethod1(harness);
testMethod2(harness);
+ testKeyMap(harness);
}
public void testMethod1(TestHarness harness)
@@ -135,4 +141,17 @@
harness.check(e1.getOldValue(), new Integer(4));
harness.check(e1.getNewValue(), new Integer(-1));
}
+
+ public void testKeyMap(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ label.setDisplayedMnemonic('B');
+ InputMap m = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m.get(KeyStroke.getKeyStroke(KeyEvent.VK_B,
+ KeyEvent.ALT_DOWN_MASK)), null);
+ label.setLabelFor(new JButton());
+ m = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m.get(KeyStroke.getKeyStroke(KeyEvent.VK_B,
+ KeyEvent.ALT_DOWN_MASK)), "press");
+ }
}
Index: gnu/testlet/javax/swing/JLabel/setFont.java
===================================================================
RCS file: gnu/testlet/javax/swing/JLabel/setFont.java
diff -N gnu/testlet/javax/swing/JLabel/setFont.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/JLabel/setFont.java 22 Jun 2006 16:03:53 -0000
@@ -0,0 +1,70 @@
+/* setFont.java -- some checks for the setFont() method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setFont implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ Font f = new Font("Dialog", Font.PLAIN, 15);
+ label.setFont(f);
+ harness.check(label.getFont(), f);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "font");
+ harness.check(e0.getNewValue(), f);
+
+ // try null
+ events.clear();
+ label.setFont(null);
+ harness.check(label.getFont(), null);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "font");
+ harness.check(e0.getOldValue(), f);
+ harness.check(e0.getNewValue(), null);
+ }
+
+}
Index: gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java
===================================================================
RCS file: gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java
diff -N gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java 22 Jun 2006 16:03:53 -0000
@@ -0,0 +1,72 @@
+/* setHorizontalAlignment.java -- some checks for the setHorizontalAlignment()
+ method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setHorizontalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ harness.check(label.getHorizontalAlignment(), JLabel.LEADING);
+ label.addPropertyChangeListener(this);
+ label.setHorizontalAlignment(JLabel.RIGHT);
+ harness.check(label.getHorizontalAlignment(), JLabel.RIGHT);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "horizontalAlignment");
+ harness.check(e0.getOldValue(), new Integer(JLabel.LEADING));
+ harness.check(e0.getNewValue(), new Integer(JLabel.RIGHT));
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ label.setHorizontalAlignment(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
Index: gnu/testlet/javax/swing/JLabel/setIconTextGap.java
===================================================================
RCS file: gnu/testlet/javax/swing/JLabel/setIconTextGap.java
diff -N gnu/testlet/javax/swing/JLabel/setIconTextGap.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/JLabel/setIconTextGap.java 22 Jun 2006 16:03:53 -0000
@@ -0,0 +1,64 @@
+/* setIconTextGap.java -- some checks for the setIconTextGap() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setIconTextGap implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+ int iconTextGapAtEventTime;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ JLabel label = (JLabel) e.getSource();
+ // recording the following tells us whether the event is fired before or
+ // after the field is updated
+ iconTextGapAtEventTime = label.getIconTextGap();
+ }
+
+ public void test(TestHarness harness) {
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ label.setIconTextGap(7);
+ harness.check(label.getIconTextGap(), 7);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), label);
+ harness.check(e.getPropertyName(), "iconTextGap");
+ harness.check(e.getOldValue(), new Integer(0));
+ harness.check(e.getNewValue(), new Integer(7));
+ harness.check(iconTextGapAtEventTime, 7);
+ }
+
+}
Index: gnu/testlet/javax/swing/JLabel/setText.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/JLabel/setText.java,v
retrieving revision 1.1
diff -u -r1.1 setText.java
--- gnu/testlet/javax/swing/JLabel/setText.java 18 Oct 2005 15:10:05 -0000 1.1
+++ gnu/testlet/javax/swing/JLabel/setText.java 22 Jun 2006 16:03:53 -0000
@@ -23,15 +23,122 @@
import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;
-public class setText implements Testlet
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setText implements Testlet, PropertyChangeListener
{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
public void test(TestHarness harness)
{
+ testGeneral(harness);
+ testGeneralWithMnemonic(harness);
testRepaint(harness);
testRevalidate(harness);
}
+
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+
+ // simple test
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ label.setText("XYZ");
+ harness.check(label.getText(), "XYZ");
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "ABC");
+ harness.check(e0.getNewValue(), "XYZ");
+ // setting the same again should generate no event
+ events.clear();
+ label.setText("XYZ");
+ harness.check(events.size(), 0);
+
+ // check null
+ events.clear();
+ label.setText(null);
+ harness.check(label.getText(), null);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "XYZ");
+ harness.check(e0.getNewValue(), null);
+
+ // setting the same again should generate no event
+ events.clear();
+ label.setText(null);
+ harness.check(events.size(), 0);
+ }
+
+ public void testGeneralWithMnemonic(TestHarness harness)
+ {
+ harness.checkPoint("testGeneralWithMnemonic()");
+
+ // simple test
+ JLabel label = new JLabel("ABC");
+ label.setDisplayedMnemonic('C');
+ harness.check(label.getDisplayedMnemonicIndex(), 2);
+ events.clear();
+ label.addPropertyChangeListener(this);
+ label.setText("CAB");
+ harness.check(label.getText(), "CAB");
+ harness.check(label.getDisplayedMnemonicIndex(), 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "ABC");
+ harness.check(e0.getNewValue(), "CAB");
+
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ if (e1.getPropertyName().equals("html"))
+ e1 = (PropertyChangeEvent) events.get(2);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(2));
+ harness.check(e1.getNewValue(), new Integer(0));
+
+ // setting the same again should generate no event
+ events.clear();
+ label.setText("CAB");
+ harness.check(events.size(), 0);
+
+ // check null
+ events.clear();
+ label.setText(null);
+ harness.check(label.getText(), null);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ harness.check(events.size(), 2);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "CAB");
+ harness.check(e0.getNewValue(), null);
+
+ e1 = (PropertyChangeEvent) events.get(1);
+ if (e1.getPropertyName().equals("html"))
+ e1 = (PropertyChangeEvent) events.get(2);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(0));
+ harness.check(e1.getNewValue(), new Integer(-1));
+
+ }
+
/**
* Tests if setText triggers a repaint. setText should trigger a
* repaint() call whenever the actual value of the property changes.
Index: gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java
===================================================================
RCS file: gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java
diff -N gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java 22 Jun 2006 16:03:53 -0000
@@ -0,0 +1,72 @@
+/* setVerticalAlignment.java -- some checks for the setVerticalAlignment()
+ method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setVerticalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ harness.check(label.getVerticalAlignment(), JLabel.CENTER);
+ label.addPropertyChangeListener(this);
+ label.setVerticalAlignment(JLabel.TOP);
+ harness.check(label.getVerticalAlignment(), JLabel.TOP);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "verticalAlignment");
+ harness.check(e0.getOldValue(), new Integer(JLabel.CENTER));
+ harness.check(e0.getNewValue(), new Integer(JLabel.TOP));
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ label.setVerticalAlignment(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-06-22 16:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-22 16:11 FYI: JLabel tests David Gilbert
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).