From: John W. <joe...@us...> - 2004-10-19 11:46:38
|
Update of /cvsroot/javabdd/JavaBDD_tests/bdd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4991/bdd Modified Files: BDDTestCase.java Added Files: IteratorTests.java Log Message: Updated JavaBDD tests. Index: BDDTestCase.java =================================================================== RCS file: /cvsroot/javabdd/JavaBDD_tests/bdd/BDDTestCase.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BDDTestCase.java 19 Oct 2004 06:50:09 -0000 1.3 --- BDDTestCase.java 19 Oct 2004 11:46:29 -0000 1.4 *************** *** 19,55 **** public abstract class BDDTestCase extends TestCase implements Iterator { ! static volatile Collection factories; ! static final String[] factoryNames = { "net.sf.javabdd.BuDDyFactory", - "net.sf.javabdd.CUDDFactory", - "net.sf.javabdd.CALFactory", "net.sf.javabdd.JFactory", //"net.sf.javabdd.JDDFactory", }; ! static void initFactories(int nodenum, int cachesize) { if (factories != null) return; ! synchronized (BDDTestCase.class) { ! if (factories != null) return; ! Collection f = new LinkedList(); ! for (int k = 0; k < factoryNames.length; ++k) { ! String bddpackage = factoryNames[k]; ! try { ! Class c = Class.forName(bddpackage); ! Method m = c.getMethod("init", new Class[] { int.class, int.class }); ! BDDFactory b = (BDDFactory) m.invoke(null, new Object[] { new Integer(nodenum), new Integer(cachesize) }); ! f.add(b); ! } ! catch (Throwable _) {} } - factories = f; } } ! protected Iterator i; public BDDTestCase(int nodenum, int cachesize) { ! initFactories(nodenum, cachesize); ! reset(); } public BDDTestCase() { --- 19,64 ---- public abstract class BDDTestCase extends TestCase implements Iterator { ! public static final String[] factoryNames = { "net.sf.javabdd.BuDDyFactory", "net.sf.javabdd.JFactory", + //"net.sf.javabdd.CUDDFactory", + //"net.sf.javabdd.CALFactory", //"net.sf.javabdd.JDDFactory", }; ! protected static Collection factories; ! protected Iterator i; ! protected int nodenum, cachesize; ! ! protected void initFactories() { if (factories != null) return; ! Collection f = new LinkedList(); ! for (int k = 0; k < factoryNames.length; ++k) { ! String bddpackage = factoryNames[k]; ! try { ! Class c = Class.forName(bddpackage); ! Method m = c.getMethod("init", new Class[] { int.class, int.class }); ! BDDFactory b = (BDDFactory) m.invoke(null, new Object[] { new Integer(nodenum), new Integer(cachesize) }); ! f.add(b); ! } ! catch (Throwable _) { ! System.out.println("Failed: "+_); } } + factories = f; } ! protected void destroyFactories() { ! if (factories == null) return; ! for (Iterator i = factories.iterator(); i.hasNext(); ) { ! BDDFactory f = (BDDFactory) i.next(); ! f.done(); ! } ! factories = null; ! } public BDDTestCase(int nodenum, int cachesize) { ! this.nodenum = nodenum; ! this.cachesize = cachesize; } public BDDTestCase() { *************** *** 57,66 **** } public BDDFactory nextFactory() { ! return (BDDFactory) i.next(); } public Object next() { ! return i.next(); } --- 66,83 ---- } + protected void setUp() { + //System.out.println("Doing setUp()"); + initFactories(); + reset(); + } + public BDDFactory nextFactory() { ! BDDFactory f = (BDDFactory) i.next(); ! f.reset(); ! return f; } public Object next() { ! return nextFactory(); } *************** *** 76,78 **** --- 93,101 ---- i = factories.iterator(); } + + protected void tearDown() { + //System.out.println("Doing tearDown()"); + //destroyFactories(); + } + } --- NEW FILE: IteratorTests.java --- // IteratorTests.java, created Oct 19, 2004 1:16:36 AM by joewhaley // Copyright (C) 2004 John Whaley <jw...@al...> // Licensed under the terms of the GNU LGPL; see COPYING for details. package bdd; import java.util.HashSet; import java.util.Iterator; import java.util.Random; import java.util.Set; import junit.framework.Assert; import net.sf.javabdd.BDD; import net.sf.javabdd.BDDDomain; import net.sf.javabdd.BDDFactory; /** * IteratorTests * * @author jwhaley * @version $Id: IteratorTests.java,v 1.1 2004/10/19 11:46:29 joewhaley Exp $ */ public class IteratorTests extends BDDTestCase { public static void main(String[] args) { junit.textui.TestRunner.run(IteratorTests.class); } public void testIterator() { reset(); Assert.assertTrue(hasNext()); while (hasNext()) { BDDFactory bdd = nextFactory(); bdd.setNodeTableSize(200000); int domainSize = 1024; bdd.extDomain(new int[] { domainSize, domainSize }); BDDDomain d = bdd.getDomain(0); BDDDomain d2 = bdd.getDomain(1); Random r = new Random(); int times = 1000; int combine = 400; for (int i = 0; i < times; ++i) { int count = r.nextInt(combine); BDD b = bdd.zero(); for (int j = 0; j < count; ++j) { int varNum = r.nextInt(domainSize); BDD c = d.ithVar(varNum); //.andWith(d2.ithVar(domainSize - varNum - 1)); b.orWith(c); } BDD var = d.set(); Iterator i1 = b.iterator(var); Iterator i2 = b.iterator2(var); b.free(); Set s1 = new HashSet(); Set s2 = new HashSet(); while (i1.hasNext()) { BDD b1 = (BDD) i1.next(); double sc = b1.satCount(var); Assert.assertEquals(1., sc, 0.0000001); s1.add(b1); } while (i2.hasNext()) { BDD b2 = (BDD) i2.next(); double sc = b2.satCount(var); Assert.assertEquals(1., sc, 0.0000001); s2.add(b2); } var.free(); if (!s1.equals(s2)) { Set s1_minus_s2 = new HashSet(s1); s1_minus_s2.removeAll(s2); Set s2_minus_s1 = new HashSet(s2); s2_minus_s1.removeAll(s1); Assert.fail("iterator() contains these extras: "+s1_minus_s2+"\n"+ "iterator2() contains these extras: "+s2_minus_s1); } for (Iterator k = s1.iterator(); k.hasNext(); ) { BDD q = (BDD) k.next(); q.free(); } for (Iterator k = s2.iterator(); k.hasNext(); ) { BDD q = (BDD) k.next(); q.free(); } } } } } |