Skip to content

Commit 30206ab

Browse files
committed
add counter example unit tests
1 parent a56b42d commit 30206ab

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

src/builder/bdd/robdd.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,45 @@ mod tests {
408408
);
409409
}
410410

411+
#[test]
412+
fn condition_negate_or_ite() {
413+
let builder = RobddBuilder::<AllIteTable<BddPtr>>::new_with_linear_order(3);
414+
415+
let v0 = builder.var(VarLabel::new(0), true);
416+
let v1 = builder.var(VarLabel::new(1), true);
417+
let v2 = builder.var(VarLabel::new(2), true);
418+
419+
let bdd = builder.negate(v2);
420+
let bdd = builder.or(v1, bdd);
421+
let bdd = builder.ite(v0, bdd, v1);
422+
423+
let cond_bdd = builder.condition(bdd, VarLabel::new(2), true);
424+
assert!(builder.eq(cond_bdd, builder.var(VarLabel::new(1), true)));
425+
let cond_q0 = builder.condition(v0, VarLabel::new(2), true);
426+
let cond_q1 = builder.condition(v1, VarLabel::new(2), true);
427+
assert!(builder.eq(cond_q0, builder.var(VarLabel::new(0), true)));
428+
assert!(builder.eq(cond_q1, builder.var(VarLabel::new(1), true)));
429+
}
430+
431+
#[test]
432+
fn exists_negate_or_ite() {
433+
let builder = RobddBuilder::<AllIteTable<BddPtr>>::new_with_linear_order(3);
434+
435+
let v0 = builder.var(VarLabel::new(0), true);
436+
let v1 = builder.var(VarLabel::new(1), true);
437+
let v2 = builder.var(VarLabel::new(2), true);
438+
439+
let bdd = builder.negate(v2);
440+
let bdd = builder.or(v1, bdd);
441+
let bdd = builder.ite(v0, bdd, v1);
442+
443+
let cond_q0 = builder.exists(v0, VarLabel::new(2));
444+
let cond_q1 = builder.exists(v1, VarLabel::new(2));
445+
assert!(builder.eq(cond_q0, builder.var(VarLabel::new(0), true)));
446+
assert!(builder.eq(cond_q1, builder.var(VarLabel::new(1), true)));
447+
let cond_bdd = builder.exists(bdd, VarLabel::new(2));
448+
assert!(builder.eq(cond_bdd, builder.var(VarLabel::new(1), true)));
449+
}
411450
#[test]
412451
fn test_exist() {
413452
let builder = RobddBuilder::<AllIteTable<BddPtr>>::new_with_linear_order(3);

0 commit comments

Comments
 (0)