public inbox for mauve-patches@sourceware.org
 help / color / mirror / Atom feed
* FYI: Component.getLocationOnScreen() test
@ 2006-07-28 10:55 Roman Kennke
  0 siblings, 0 replies; only message in thread
From: Roman Kennke @ 2006-07-28 10:55 UTC (permalink / raw)
  To: mauve-patches

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

This tests if my new iterative approach to getLocationOnScreen() is ok, 
wrt to having intermediate lightweight components that override 
getLocationOnScreen() in weird ways. Yes it is, and the recursive 
approach is actually wrong.


2006-07-28  Roman Kennke  <kennke@aicas.com>

	* gnu/testlet/java/awt/Component/getLocationOnScreen.java:
	New test.

/Roman

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

Index: gnu/testlet/java/awt/Component/getLocationOnScreen.java
===================================================================
RCS file: gnu/testlet/java/awt/Component/getLocationOnScreen.java
diff -N gnu/testlet/java/awt/Component/getLocationOnScreen.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/awt/Component/getLocationOnScreen.java	28 Jul 2006 10:52:24 -0000
@@ -0,0 +1,91 @@
+/* getLocationOnScreen.java -- Checks getLocationOnScreen()
+   Copyright (C) 2006 Roman Kennke (kennke@aicas.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.0
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Frame;
+import java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLocationOnScreen implements Testlet
+{
+
+  /**
+   * Overrides Container and returns bogus values for getLocationOnScreen().
+   */
+  private class FakeContainer extends Container
+  {
+
+    public Point getLocationOnScreen()
+    {
+      return new Point(-1200, 12345);
+    }
+  }
+
+  public void test(TestHarness harness)
+  {
+    testOverrideSafety(harness);
+
+  }
+
+  /**
+   * Checks if that methods is safe from having components with overridden
+   * getLocationOnScreen() methods in the tree.
+   *
+   * @param h the test harness
+   */
+  private void testOverrideSafety(TestHarness h)
+  {
+    // The heavyweight parent.
+    Frame f = new Frame();
+
+    // A lightweight container with a faked getLocationOnScreen() method.
+    FakeContainer cont = new FakeContainer();
+
+    // A lightweight component.
+    Component comp = new Component(){};
+
+    f.add(cont);
+    cont.add(comp);
+
+    f.setSize(100, 100);
+    f.setVisible(true);
+
+    cont.setBounds(10, 10, 80, 80);
+    comp.setBounds(10, 10, 60, 60);
+
+
+    Point frameLoc = f.getLocationOnScreen();
+    // The component now should have
+    // (frameLoc.x + 20 + i.left, frameLoc.y + 20 + i.top).
+    Point compLoc = comp.getLocationOnScreen();
+    h.check(compLoc.x, frameLoc.x + 20);
+    h.check(compLoc.y, frameLoc.y + 20);
+
+    f.dispose();
+  }
+}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-07-28 10:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-28 10:55 FYI: Component.getLocationOnScreen() test Roman Kennke

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).