// Tags: JDK1.0
/* Copyright (C) 1999 Artur Biesiadowski
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.wonka.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;
h.setclass("java.util.BitSet");
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("{}"));
b2.set(1);
h.check(b2.toString().equals("{1}"));
h.checkPoint("Hashcode");
h.check(b1.hashCode() == 2260);
b3 = new BitSet();
h.check(b3.hashCode() == 1234);
h.checkPoint("And/Or/Xor");
b2.set(1);
b2.set(3);
b2.set(200);
b2.set(300);
b2.and(b1);
h.check( b2.toString(),"{1, 200}" );
b1.set(17);
b2.set(15);
b2.or(b1);
h.check( b2.toString(), "{1, 2, 11, 15, 17, 200}" );
b2.xor(b2);
h.check( b2.toString(), "{}");
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;
}
h.check (e1 == e2);
return e2;
}
}