public inbox for mauve-patches@sourceware.org
 help / color / mirror / Atom feed
* FYI: Test for PR43536
@ 2010-05-11 21:12 Andrew John Hughes
  0 siblings, 0 replies; only message in thread
From: Andrew John Hughes @ 2010-05-11 21:12 UTC (permalink / raw)
  To: mauve-patches

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

This patch adds a test to Mauve which ensures all known
Collection implementations in java.util and java.util.concurrent
meet the requirements of remove(Object).   Others may be
added later.

2010-05-11  Andrew John Hughes  <ahughes@redhat.com>

	PR classpath/43536
	* gnu/testlet/java/util/Collection/Test.java:
	New test ensuring all Collection implementations meet
	the requirements of remove(Object).

-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

[-- Attachment #2: pr43536.diff --]
[-- Type: text/plain, Size: 4996 bytes --]

Index: gnu/testlet/java/util/Collection/Test.java
===================================================================
RCS file: gnu/testlet/java/util/Collection/Test.java
diff -N gnu/testlet/java/util/Collection/Test.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Collection/Test.java	11 May 2010 20:11:59 -0000
@@ -0,0 +1,155 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2010 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+package gnu.testlet.java.util.Collection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Collection;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Delayed;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Some tests for the remove() method in the {@link List} interface.
+ */
+public class Test implements Testlet
+{
+
+  private TestHarness harness;
+
+  /**
+   * Runs the test using the specified harness.
+   *
+   * @param harness  the test harness (<code>null</code> not permitted).
+   */
+  public void test(TestHarness harness)
+  {
+    this.harness = harness;
+    testClass(java.util.concurrent.ArrayBlockingQueue.class);
+    testClass(java.util.ArrayDeque.class);
+    testClass(java.util.ArrayList.class);
+    testClass(java.util.concurrent.ConcurrentLinkedQueue.class);
+    testClass(java.util.concurrent.ConcurrentSkipListSet.class);
+    testClass(java.util.concurrent.CopyOnWriteArrayList.class);
+    testClass(java.util.concurrent.CopyOnWriteArraySet.class);
+    testClass(java.util.concurrent.DelayQueue.class);
+    testClass(java.util.EnumSet.class);
+    testClass(java.util.HashSet.class);
+    testClass(java.util.concurrent.LinkedBlockingQueue.class);
+    testClass(java.util.LinkedHashSet.class);
+    testClass(java.util.LinkedList.class);
+    testClass(java.util.concurrent.PriorityBlockingQueue.class);
+    testClass(java.util.PriorityQueue.class);
+    testClass(java.util.Stack.class);
+    testClass(java.util.concurrent.SynchronousQueue.class);
+    testClass(java.util.TreeSet.class);
+    testClass(java.util.Vector.class);
+  }
+
+  /**
+   * Tests the given {@link java.util.Collection} class.
+   *
+   * @param cls the class to test.
+   */
+  public void testClass(Class<? extends Collection> cls)
+  {
+    harness.checkPoint(cls.getName());
+    Collection result = null;
+    try
+    {
+      result = (Collection) cls.newInstance();
+    }
+    catch (Exception e)
+    {
+      harness.debug(e);
+    }
+    if (result != null)
+      {
+        testRemove(result);
+      }
+  }
+
+  /**
+   * Test the {@link Collection#remove(Object)} method of
+   * the given collection.
+   *
+   * @param coll the collection to test.
+   */
+  public void testRemove(Collection coll)
+  {
+    /**
+     * Use Delayed Object so DelayQueue
+     * and sorted collections work.
+     */
+    Delayed obj = new Delayed()
+      {
+        public long getDelay(TimeUnit unit)
+        {
+          return unit.convert(10, TimeUnit.MINUTES);
+        }
+        public int compareTo(Delayed o)
+        {
+          Long other = o.getDelay(TimeUnit.NANOSECONDS);
+          return other.compareTo(getDelay(TimeUnit.NANOSECONDS));
+        }
+      };
+    String type = coll.getClass().getName();
+
+    harness.check(coll.remove(obj) == false,
+                  "Object is not present in empty " + type);
+
+    boolean result = false;
+    try
+      {
+        result = coll.remove(null);
+      }
+    catch (NullPointerException e)
+      {
+        /* Collection does not support null elements */
+      }
+    harness.check(result == false, "Null is not present in empty " + type);
+
+    /* Can't do post-addition tests if no capacity */
+    if (coll instanceof BlockingQueue &&
+        ((BlockingQueue) coll).remainingCapacity() == 0)
+      return;
+
+    coll.add(obj);
+    harness.check(coll.remove(obj) == true,
+                  "Object is present in non-empty " + type);
+
+    result = true;
+    try
+      {
+        coll.add(null);
+        result = coll.remove(null);
+      }
+    catch (NullPointerException e)
+      {
+        /* Collection does not support null elements */
+      }
+    harness.check(result == true, "Null is present in non-empty " + type);
+  }
+
+}

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

only message in thread, other threads:[~2010-05-11 21:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-11 21:12 FYI: Test for PR43536 Andrew John Hughes

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