public void ChooseUnifromlyTest() { CharSetSolver solver = new CharSetSolver(BitWidth.BV16); BDD set1 = solver.MkRangeConstraint('\0', '\x01', true); BDD set2 = solver.MkRangeConstraint('\u0FFF', '\u0FFF'); string set2str = solver.PrettyPrint(set2); BDD set3 = solver.MkRangeConstraint('\u00FF', '\u00FF'); BDD set4 = solver.MkRangeConstraint('\u000F', '\u000F'); BDD set = solver.MkOr(new BDD[] { set2, set3, set4, set1 }); string setstr = solver.PrettyPrint(set); set.ToDot(@"foo.dot"); var map = new Dictionary <char, int>(); map['\0'] = 0; map['\x01'] = 0; map['\u0FFF'] = 0; map['\u00FF'] = 0; map['\u000F'] = 0; for (int i = 0; i < 50000; i++) { var c = solver.ChooseUniformly(set); map[c] += 1; } foreach (var kv in map) { Assert.IsTrue(kv.Value > 9700); } }
public void ChooseUnifromlyTest() { CharSetSolver solver = new CharSetSolver(BitWidth.BV16); BDD set1 = solver.MkRangeConstraint('\0', '\x01', true); BDD set2 = solver.MkRangeConstraint( '\u0FFF', '\u0FFF'); string set2str = solver.PrettyPrint(set2); BDD set3 = solver.MkRangeConstraint( '\u00FF', '\u00FF'); BDD set4 = solver.MkRangeConstraint( '\u000F', '\u000F'); BDD set = solver.MkOr(new BDD[]{set2, set3, set4, set1}); string setstr = solver.PrettyPrint(set); set.ToDot(@"foo.dot"); var map = new Dictionary<char, int>(); map['\0'] = 0; map['\x01'] = 0; map['\u0FFF'] = 0; map['\u00FF'] = 0; map['\u000F'] = 0; for (int i = 0; i < 50000; i++) { var c = solver.ChooseUniformly(set); map[c] += 1; } foreach (var kv in map) Assert.IsTrue(kv.Value > 9700); }