This is the mail archive of the mauve-discuss@sourceware.cygnus.com mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

BitSet test


Attached is test for JDK1.0 BitSet. There are some new methods in 1.2,
but as it is not avail on linux...

BTW, mauve check rules are very counter-intuitive for me. I was
supposing that with
make KEYS='!java java.util.BitSet' check
I'll be able to run only my test. Actual result was to run all tests. I
was trying to give these options in mauve-something file, no luck. I've
ended up with compiling by hand and running through make check with hand
edited 'classes' file

Artur
// Taqs: JDK1.0

package gnu.testlet.java.util.BitSet;
import gnu.testlet.Testlet;
import gnu.testlet.TestHarness;
import java.util.BitSet;

public class jdk10 implements Testlet
{
	TestHarness h;
	public void test ( TestHarness harness )
	{
		h = harness;
		BitSet b1, b2, b3, b4, b5;
		
		h.checkPoint("Clone/Equals");
		b1 = new BitSet();
		b2 = (BitSet)b1.clone();
		h.check( trulyEquals(b1,b2) );
		b1 = new BitSet(100);
		h.check( trulyEquals(b1,b2) );
		b1.set(5);
		h.check( !trulyEquals(b1,b2) );
		b2 = (BitSet)b1.clone();
		h.check( trulyEquals(b1,b2));
		h.check(!b2.equals(null));
		
		h.checkPoint("NegativeSize");
		try {
			b1 = new BitSet(-1);
			h.check(false);
		} catch ( NegativeArraySizeException e )
			{
				h.check(true);
			}
			
		h.checkPoint("Set/Clear/Get");
		b1 = new BitSet();
		b1.set(1);
		b1.set(200);
		b1.set(0);
		h.check(b1.get(0));
		h.check(b1.get(1));
		h.check(!b1.get(2));
		h.check(b1.get(200));
		b1.clear(0);
		h.check(!b1.get(0));
		
		h.checkPoint("Set/Clear/Get negative index");
		try {
			b1.set(-1);
			h.check(false);
		} catch ( IndexOutOfBoundsException e )
		{
			h.check(true);
		}
		
		try {
			b1.get(-1);
			h.check(false);
		} catch ( IndexOutOfBoundsException e )
		{
			h.check(true);
		}
		
		try {
			b1.clear(-1);
			h.check(false);
		} catch ( IndexOutOfBoundsException e )
		{
			h.check(true);
		}
		
		h.checkPoint("toString");
		h.check(b1.toString().equals("{1, 200}"));
		b1.set(2);
		b1.set(11);
		h.check(b1.toString().equals("{1, 2, 11, 200}"));
		b2 = new BitSet(100);
		h.check(b2.toString().equals("{}"));
		
		h.checkPoint("Hascode");
		h.check(b1.hashCode() == 2260);
		h.check(b2.hashCode() == 1234);
		
		h.checkPoint("And/Or/Xor");
		b3 = new BitSet();
		b2.and(b1);
		h.check( trulyEquals(b2,b3) );
		b2.or(b1);
		h.check( trulyEquals(b2,b1) );
		b2.xor(b2);
		h.check( trulyEquals(b2,b3) );
		b2.xor(b1);
		b3.or(b1);
		h.check( trulyEquals(b2,b3) );
		
		h.checkPoint("Size");
		h.check ( b3.size() > 0 );
		
		h.checkPoint("NullPointerExceptions");
		try {
			b1.and(null);
			h.check(false);
		} catch ( NullPointerException e )
			{
				h.check(true);
			}
		try {
			b1.or(null);
			h.check(false);
		} catch ( NullPointerException e )
			{
				h.check(true);
			}
			
		try {
			b1.xor(null);
			h.check(false);
		} catch ( NullPointerException e )
			{
				h.check(true);
			}			
		
	}
	
	private boolean trulyEquals( BitSet b1, BitSet b2 )
	{
		boolean e1 = b1.equals(b2);
		boolean e2 = true;
		for ( int i = 0; i < 300; i++ )
		{
			if ( b1.get(i) !=  b2.get(i) )
				e2 = false;
		}
		if ( e1 != e2 )
			h.check(false, "BitSet.equals is wrong");
		else
			h.check(true);
		return e2;	
	}
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]