tests/libjava-mauve/src/gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
branchjk_new_structure
changeset 1541 75c2e24dea9a
parent 1540 92ac284961c1
child 1542 be11db817bcf
--- a/tests/libjava-mauve/src/gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java	Fri Jul 20 21:39:51 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,602 +0,0 @@
-/* Copyright (C) 2001 ACUNIA
-
-   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.
-*/
-
-// Tags: JDK1.2
-
-package gnu.testlet.java.util.HashMap;
-
-import gnu.testlet.Testlet;
-import gnu.testlet.TestHarness;
-
-import java.util.*;
-import java.lang.reflect.*;
-/**
-*  Written by ACUNIA. <br>
-*                        <br>
-*  this file contains test for java.util.HashMap   <br>
-*
-*/
-public class AcuniaHashMapTest implements Testlet
-{
-  protected TestHarness th;
-
-  public void test (TestHarness harness)   {
-       th = harness;
-       test_HashMap();
-       test_get();
-       test_containsKey();
-       test_containsValue();
-       test_isEmpty();
-       test_size();
-       test_clear();
-       test_put();
-       test_putAll();
-       test_remove();
-       test_entrySet();
-       test_keySet();
-       test_values();
-       test_clone();
-       test_behaviour();
-  }
-
-  protected HashMap buildHM() {
-  	HashMap hm = new HashMap();
-  	String s;
-  	for (int i=0 ; i < 15 ; i++) {
-  		s = "a"+i;
-  		hm.put(s , s+" value");
-  	}
-  	hm.put(null,null);
-  	return hm;
-  }	
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_HashMap(){
-    Field lf = null;
-    try {
-   	lf = HashMap.class.getDeclaredField("loadFactor");
-//   	th.debug("DEBUG -- found loadFactor");
-   	lf.setAccessible(true);
-    }
-    catch(Exception e){}
-    HashMap hm;
-   th.checkPoint("HashMap()");
-    hm = new HashMap();
-    try {
-        th.check(lf.getFloat(hm), 0.75f);
-        }
-    catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
-   th.checkPoint("HashMap(java.util.Map)");
-    HashMap hm1 = buildHM();
-    hm = new HashMap(hm1);
-    try {
-        th.check(lf.getFloat(hm), 0.75f);
-        }
-    catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
-    th.check(hm.size() == 16 , "all elements are put, got "+hm.size());
-    th.check(hm.get(null) == null , "test key and value pairs -- 1");
-    th.check("a1 value".equals(hm.get("a1")) , "test key and value pairs -- 2");
-    th.check("a10 value".equals(hm.get("a10")) , "test key and value pairs -- 3");
-    th.check("a0 value".equals(hm.get("a0")) , "test key and value pairs -- 4");
-    hm = new HashMap(new Hashtable());
-    th.check(hm.size() == 0 , "no elements are put, got "+hm.size());
-    try {
-   	new HashMap(null);
-   	th.fail("should throw a NullPointerException");
-    }
-    catch(NullPointerException ne) {th.check(true);}
-
-   th.checkPoint("HashMap(int)");
-    hm = new HashMap(1);
-    try {
-        th.check(lf.getFloat(hm), 0.75f);
-        }
-    catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
-    try { new HashMap(-1);
-   	 th.fail("should throw an IllegalArgumentException");
-        }
-    catch(IllegalArgumentException iae) { th.check(true); }
-
-   th.checkPoint("HashMap(int,int)");
-    hm = new HashMap(10,0.5f);
-    try {
-        th.check(lf.getFloat(hm), 0.5f);
-        }
-    catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
-    hm = new HashMap(10,1.5f);
-    try {
-        th.check(lf.getFloat(hm), 1.5f);
-        }
-    catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
-    try {new HashMap(-1,0.1f);
-       	 th.fail("should throw an IllegalArgumentException -- 1");
-        }
-    catch(IllegalArgumentException iae) { th.check(true); }
-    try { new HashMap(1,-0.1f);
-   	 th.fail("should throw an IllegalArgumentException -- 2");
-        }
-    catch(IllegalArgumentException iae) { th.check(true); }
-    try { new HashMap(1,0.0f);
-    	 th.fail("should throw an IllegalArgumentException -- 2");
-        }
-    catch(IllegalArgumentException iae) { th.check(true); }
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_get(){
-    th.checkPoint("get(java.lang.Object)java.lang.Object");
-    HashMap hm = buildHM();
-    th.check(hm.get(null) == null , "checking get -- 1");
-    th.check(hm.get(this) == null , "checking get -- 2");
-    hm.put("a" ,this);
-    th.check("a1 value".equals(hm.get("a1")), "checking get -- 3");
-    th.check("a11 value".equals(hm.get("a11")), "checking get -- 4");
-    th.check( hm.get(new Integer(97)) == null , "checking get -- 5");
-
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_containsKey(){
-    th.checkPoint("containsKey(java.lang.Object)boolean");
-    HashMap hm = new HashMap();
-    hm.clear();
-    th.check(! hm.containsKey(null) ,"Map is empty");
-    hm.put("a" ,this);
-    th.check(! hm.containsKey(null) ,"Map does not containsthe key -- 1");
-    th.check( hm.containsKey("a") ,"Map does contain the key -- 2");
-    hm = buildHM();
-    th.check( hm.containsKey(null) ,"Map does contain the key -- 3");
-    th.check(! hm.containsKey(this) ,"Map does not contain the key -- 4");
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_containsValue(){
-    th.checkPoint("containsValue(java.lang.Object)boolean");
-    HashMap hm = new HashMap();
-    hm.clear();
-    th.check(! hm.containsValue(null) ,"Map is empty");
-    hm.put("a" ,this);
-    th.check(! hm.containsValue(null) ,"Map does not containsthe value -- 1");
-    th.check(! hm.containsValue("a") ,"Map does  not contain the value -- 2");
-    th.check( hm.containsValue(this) ,"Map does contain the value -- 3");
-    hm = buildHM();
-    th.check( hm.containsValue(null) ,"Map does contain the value -- 4");
-    th.check(! hm.containsValue(this) ,"Map does not contain the value -- 5");
-    th.check(! hm.containsValue("a1value") ,"Map does  not contain the value -- 6");
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_isEmpty(){
-    th.checkPoint("isEmpty()boolean");
-    HashMap hm = new HashMap();
-    th.check( hm.isEmpty() ,"Map is empty");
-    hm.put("a" ,this);
-    th.check(! hm.isEmpty() ,"Map is not empty");
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_size(){
-    th.checkPoint("size()int");
-    HashMap hm = new HashMap();
-    th.check(hm.size() == 0 ,"Map is empty");
-    hm.put("a" ,this);
-    th.check(hm.size() == 1 ,"Map has 1 element");
-    hm = buildHM();
-    th.check(hm.size() == 16 ,"Map has 16 elements");
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_clear(){
-    th.checkPoint("clear()void");
-    HashMap hm = buildHM();
-    hm.clear();
-    th.check(hm.size() == 0 ,"Map is cleared -- 1");
-    th.check(hm.isEmpty() ,"Map is cleared -- 2");
-	
-  }
-
-/**
-* implemented. <br>
-* is tested also in the other parts ...
-*/
-  public void test_put(){
-    th.checkPoint("put(java.lang.Object,java.lang.Object)java.lang.Object");
-    HashMap hm  = new HashMap();
-    th.check( hm.put(null , this ) == null , "check on return value -- 1");
-    th.check( hm.get(null) == this , "check on value -- 1");
-    th.check( hm.put(null , "a" ) == this , "check on return value -- 2");
-    th.check( "a".equals(hm.get(null)) , "check on value -- 2");
-    th.check( "a".equals(hm.put(null , "a" )), "check on return value -- 3");
-    th.check( "a".equals(hm.get(null)) , "check on value -- 3");
-    th.check( hm.size() == 1 , "only one key added");
-    th.check( hm.put("a" , null ) == null , "check on return value -- 4");
-    th.check( hm.get("a") == null , "check on value -- 4");
-    th.check( hm.put("a" , this ) == null , "check on return value -- 5");
-    th.check( hm.get("a") == this , "check on value -- 5");
-    th.check( hm.size() == 2 , "two keys added");
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_putAll(){
-    th.checkPoint("putAll(java.util.Map)void");
-    HashMap hm  = new HashMap();
-    hm.putAll(new Hashtable());
-    th.check(hm.isEmpty() , "nothing addad");
-    hm.putAll(buildHM());
-    th.check(hm.size() == 16 , "checking if all enough elements are added -- 1");
-    th.check(hm.equals(buildHM()) , "check on all elements -- 1");
-    hm.put(null ,this);
-    hm.putAll(buildHM());
-    th.check(hm.size() == 16 , "checking if all enough elements are added -- 2");
-    th.check(hm.equals(buildHM()) , "check on all elements -- 2");
-    try {
-    	hm.putAll(null);
-    	th.fail("should throw a NullPointerException");
-    }
-    catch(NullPointerException npe) { th.check(true); }	
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_remove(){
-    th.checkPoint("remove(java.lang.Object)java.lang.Object");
-    HashMap hm  = buildHM();
-    th.check(hm.remove(null) == null , "checking return value -- 1");
-    th.check(hm.remove(null) == null , "checking return value -- 2");
-    th.check(!hm.containsKey(null) , "checking removed key -- 1");
-    th.check(!hm.containsValue(null) , "checking removed value -- 1");
-    for (int i = 0 ; i < 15 ; i++) {
-    	th.check( ("a"+i+" value").equals(hm.remove("a"+i)), " removing a"+i);
-    }
-    th.check(hm.isEmpty() , "checking if al is gone");
-  }
-
-/**
-* implemented. <br>
-* uses AbstractSet --> check only the overwritten methods ... !
-* iterator and size
-* fail-fast iterator !
-* add not supported !
-* check the Map.Entry Objects ...
-*/
-  public void test_entrySet(){
-    th.checkPoint("entrySet()java.util.Set");
-    HashMap hm  = buildHM();
-    Set s = hm.entrySet();
-    Iterator it= s.iterator();
-    Map.Entry me=null;
-    it.next();
-    try {
-    	s.add("ADDING");
-    	th.fail("add should throw an UnsupportedOperationException");
-    }
-    catch (UnsupportedOperationException uoe) { th.check(true); }
-    th.check( s.size() == 16 );
-    hm.remove("a12");
-    th.check( s.size() == 15 );
-    try {
-    	th.check(it.hasNext());
-	th.check(true);
-    }
-    catch(ConcurrentModificationException cme) {
-	th.fail("it.hasNext should not throw ConcurrentModificationException");
-    }
-    try {
-    	it.next();
-    	th.fail("should throw a ConcurrentModificationException -- 1");
-    }
-    catch(ConcurrentModificationException cme){ th.check(true); }
-    try {
-    	it.remove();
-    	th.fail("should throw a ConcurrentModificationException -- 2");
-    }
-    catch(ConcurrentModificationException cme){ th.check(true); }
-//    th.debug(hm.debug());
-    it= s.iterator();
-    try {
-    	me = (Map.Entry)it.next();
-//    	Thread.sleep(600L);
-    	if (me.getKey()==null) me = (Map.Entry)it.next();
-    	th.check( me.hashCode() , (me.getValue().hashCode() ^ me.getKey().hashCode()),"verifying hashCode");
-    	th.check(! me.equals(it.next()));
-    	
-    	}
-    catch(Exception e) { th.fail("got unwanted exception ,got "+e);
-    	th.debug("got ME key = "+me+" and value = "+me.getKey());}
-
-    try {
-//     th.debug("got ME key = "+me.getKey()+" and value = "+me.getValue());
-    	me.setValue("alpha");
-    	th.check(hm.get(me.getKey()), "alpha", "setValue through iterator of entrySet");
-    	}
-    catch(UnsupportedOperationException uoe) { th.fail("setValue should be supported");}
-    it= s.iterator();
-    Vector v = new Vector();
-    Object ob;
-    v.addAll(s);
-    while (it.hasNext()) {
-    	ob = it.next();
-    	it.remove();
-     	if (!v.remove(ob))
-        th.debug("Object "+ob+" not in the Vector");
-     }
-     th.check( v.isEmpty() , "all elements gone from the vector");
-//     for (int k=0 ; k < v.size() ; k++ ) { th.debug("got "+v.get(k)+" as element "+k); }
-     th.check( hm.isEmpty() , "all elements removed from the HashMap");
-    it= s.iterator();
-    hm.put(null,"sdf");
-    try {
-    	it.next();
-    	th.fail("should throw a ConcurrentModificationException -- 3");
-    }
-    catch(ConcurrentModificationException cme){ th.check(true); }
-    it= s.iterator();
-    hm.clear();
-    try {
-    	it.next();
-    	th.fail("should throw a ConcurrentModificationException -- 4");
-    }
-    catch(ConcurrentModificationException cme){ th.check(true); }
-
-  }
-
-/**
-* implemented. <br>
-* uses AbstractSet --> check only the overwritten methods ... !
-* iterator and size
-* fail-fast iterator !
-* add not supported !
-*/
-  public void test_keySet(){
-    th.checkPoint("keySet()java.util.Set");
-    HashMap hm = buildHM();
-    th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
-    Set s=null;
-    Object [] o;
-    Iterator it;
-    try {
-        s = hm.keySet();
-        th.check( s != null ,"s != null");
-        th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
-        o = s.toArray();
-        th.check( o != null ,"o != null");
-        th.check( o.length == 16 ,"checking length, got "+o.length);
-//        for (int i = 0 ; i < o.length ; i++ ){ th.debug("element "+i+" is "+o[i]); }
-	it = s.iterator();
-	Vector v = new Vector();
-	Object ob;
-	v.addAll(s);
-	while ( it.hasNext() ) {
-        	ob = it.next();
-        	it.remove();
-        	if (!v.remove(ob))
-        	th.debug("Object "+ob+" not in the Vector");
-        }
-        th.check( v.isEmpty() , "all elements gone from the vector");
-        th.check( hm.isEmpty() , "all elements removed from the HashMap");
-    }
-    catch (Exception e) { th.fail("got bad Exception -- got "+e); }
-    try {
-    	s.add("ADDING");
-    	th.fail("add should throw an UnsupportedOperationException");
-    }
-    catch (UnsupportedOperationException uoe) { th.check(true); }
-
-  }
-
-/**
-* implemented. <br>
-* uses AbstractCollection --> check only the overwritten methods ... !
-* iterator and size
-* fail-fast iterator !
-* add not supported !
-*/
-  public void test_values(){
-    th.checkPoint("values()java.util.Collection");
-    HashMap hm = buildHM();
-    th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
-    Collection s=null;
-    Object [] o;
-    Iterator it;
-    try {
-        s = hm.values();
-        th.check( s != null ,"s != null");
-        th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
-        o = s.toArray();
-        th.check( o != null ,"o != null");
-        th.check( o.length == 16 ,"checking length, got "+o.length);
-//        for (int i = 0 ; i < o.length ; i++ ){ th.debug("element "+i+" is "+o[i]); }
-	it = s.iterator();
-	Vector v = new Vector();
-	Object ob;
-	v.addAll(s);
-	while ( it.hasNext() ) {
-        	ob = it.next();
-        	it.remove();
-        	if (!v.remove(ob))
-        	th.debug("Object "+ob+" not in the Vector");
-        }
-        th.check( v.isEmpty() , "all elements gone from the vector");
-        th.check( hm.isEmpty() , "all elements removed from the HashMap");
-    }
-    catch (Exception e) { th.fail("got bad Exception -- got "+e); }
-    try {
-    	s.add("ADDING");
-    	th.fail("add should throw an UnsupportedOperationException");
-    }
-    catch (UnsupportedOperationException uoe) { th.check(true); }
-
-
-  }
-
-/**
-* implemented. <br>
-*
-*/
-  public void test_clone(){
-    th.checkPoint("clone()java.lang.Object");
-    HashMap hm = buildHM();
-    Object o = hm.clone();
-    th.check( o != hm , "clone is not the same object");
-    th.check( hm.equals(o) , "clone is equal to Map");
-    hm.put("a","b");
-    th.check(! hm.equals(o) , "clone doesn't change if Map changes");
-
-  }
-/**
-* the goal of this test is to see how the hashtable behaves if we do a lot put's and removes. <br>
-* we perform this test for different loadFactors and a low initialsize <br>
-* we try to make it difficult for the table by using objects with same hashcode
-*/
-  private final String st ="a";
-  private final Byte b =new Byte((byte)97);
-  private final Short sh=new Short((short)97);
-  private final Integer i = new Integer(97);
-  private final Long l = new Long(97L);
-  private int sqnce = 1;
-
-  public void test_behaviour(){
-    th.checkPoint("behaviour testing");
-//    do_behaviourtest(0.2f);
-    do_behaviourtest(0.70f);
-    do_behaviourtest(0.75f);
-    do_behaviourtest(0.95f);
-    do_behaviourtest(1.0f);
-
-    }
-  protected void sleep(int time){
-  	try { Thread.sleep(time); }
-  	catch (Exception e) {}	
-  }
-
-  protected void check_presence(HashMap h){
-    th.check( h.get(st) != null, "checking presence st -- sequence "+sqnce);
-    th.check( h.get(sh) != null, "checking presence sh -- sequence "+sqnce);
-    th.check( h.get(i) != null, "checking presence i -- sequence "+sqnce);
-    th.check( h.get(b) != null, "checking presence b -- sequence "+sqnce);
-    th.check( h.get(l) != null, "checking presence l -- sequence "+sqnce);
-    sqnce++;
-  }
-
-  protected void do_behaviourtest(float loadFactor) {
-
-    th.checkPoint("behaviour testing with loadFactor "+loadFactor);
-    HashMap h = new HashMap(11 , loadFactor);
-    int j=0;
-    Float f;
-    h.put(st,"a"); h.put(b,"byte"); h.put(sh,"short"); h.put(i,"int"); h.put(l,"long");
-    check_presence(h);
-    sqnce = 1;
-    for ( ; j < 100 ; j++ )
-    {   f = new Float((float)j);
-        h.put(f,f);
-       // sleep(5);
-    }
-    th.check(h.size() == 105,"size checking -- 1 got: "+h.size());
-    check_presence(h);
-//    sleep(500);
-    for ( ; j < 200 ; j++ )
-    {   f = new Float((float)j);
-        h.put(f,f);
-      //  sleep(10);
-    }
-    th.check(h.size() == 205,"size checking -- 2 got: "+h.size());
-    check_presence(h);
-//    sleep(50);
-
-    for ( ; j < 300 ; j++ )
-    {   f = new Float((float)j);
-        h.put(f,f);
-      //  sleep(10);
-    }
-    th.check(h.size() == 305,"size checking -- 3 got: "+h.size());
-    check_presence(h);
-//    sleep(50);
-// replacing values -- checking if we get a non-zero value
-    th.check("a".equals(h.put(st,"na")), "replacing values -- 1 - st");
-    th.check("byte".equals(h.put(b,"nbyte")), "replacing values -- 2 - b");
-    th.check("short".equals(h.put(sh,"nshort")), "replacing values -- 3 -sh");
-    th.check("int".equals(h.put(i,"nint"))  , "replacing values -- 4 -i");
-    th.check("long".equals(h.put(l,"nlong")), "replacing values -- 5 -l");
-
-
-    for ( ; j > 199 ; j-- )
-    {   f = new Float((float)j);
-        h.remove(f);
-      //  sleep(10);
-    }
-//    sleep(150);
-    th.check(h.size() == 205,"size checking -- 4 got: "+h.size());
-    check_presence(h);
-    for ( ; j > 99 ; j-- )
-    {   f = new Float((float)j);
-        h.remove(f);
-      //  sleep(5);
-    }
-    th.check(h.size() == 105,"size checking -- 5 got: "+h.size());
-    check_presence(h);
-   // sleep(1500);
-    for ( ; j > -1 ; j-- )
-    {   f = new Float((float)j);
-        h.remove(f);
-     //   sleep(5);
-    }
-    th.check(h.size() == 5  ,"size checking -- 6 got: "+h.size());
-
-    th.debug(h.toString());
-    check_presence(h);
-   // sleep(500);
-
-    }
-
-}