[Javabdd-checkins] SF.net SVN: javabdd: [475] trunk/JavaBDD_tests/bdd/IteratorTests.java
Brought to you by:
joewhaley
From: <joe...@us...> - 2006-12-05 10:59:03
|
Revision: 475 http://svn.sourceforge.net/javabdd/?rev=475&view=rev Author: joewhaley Date: 2006-12-05 02:59:01 -0800 (Tue, 05 Dec 2006) Log Message: ----------- Added random relprod test. Modified Paths: -------------- trunk/JavaBDD_tests/bdd/IteratorTests.java Modified: trunk/JavaBDD_tests/bdd/IteratorTests.java =================================================================== --- trunk/JavaBDD_tests/bdd/IteratorTests.java 2006-12-05 10:58:16 UTC (rev 474) +++ trunk/JavaBDD_tests/bdd/IteratorTests.java 2006-12-05 10:59:01 UTC (rev 475) @@ -13,6 +13,7 @@ import net.sf.javabdd.BDDDomain; import net.sf.javabdd.BDDFactory; import net.sf.javabdd.BDDVarSet; +import net.sf.javabdd.TestBDDFactory; /** * IteratorTests @@ -21,6 +22,8 @@ * @version $Id$ */ public class IteratorTests extends BDDTestCase { + static Random random = new Random(1238); + public static void main(String[] args) { junit.textui.TestRunner.run(IteratorTests.class); } @@ -84,8 +87,6 @@ } } - static Random random = new Random(1234); - static BDD randomBDD(BDDFactory f) { BDD result = f.zero(); for (int i = 0; i < f.varNum(); ++i) { @@ -100,6 +101,15 @@ return result; } + static BDDVarSet randomBDDVarSet(BDDFactory f) { + BDDVarSet s = f.emptySet(); + for (int i = 0; i < f.varNum(); ++i) { + if (random.nextBoolean()) + s.unionWith(i); + } + return s; + } + static BDD betterRandomBDD(BDDFactory f) { // Use a random truth table. byte[] bytes = new byte[(1 << f.varNum()) / 8 + 1]; @@ -153,6 +163,25 @@ } } + public void testRandomRelprod() { + System.setProperty("bdd1", "zdd"); + System.setProperty("bdd2", "j"); + BDDFactory bdd = TestBDDFactory.init(10000, 1000); + bdd.setVarNum(5); + for (int i = 0; i < 1000; ++i) { + BDD b = betterRandomBDD(bdd); + BDD c = betterRandomBDD(bdd); + BDDVarSet d = randomBDDVarSet(bdd); + BDD e = b.relprod(c, d); + + BDD f = b.and(c); + BDD g = f.exist(d); + Assert.assertEquals(g, e); + + b.free(); c.free(); d.free(); e.free(); f.free(); g.free(); + } + } + public void testRandomIterator() { reset(); Assert.assertTrue(hasNext()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |