Skip to content

Commit

Permalink
sdd: add compression tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jsfpdn committed Oct 10, 2024
1 parent a4c09b3 commit 4e1fa41
Showing 1 changed file with 52 additions and 2 deletions.
54 changes: 52 additions & 2 deletions sdd-rs-lib/sdd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -641,11 +641,61 @@ mod test {

#[test]
fn not_compressed() {
// TODO: Implement me!
let pos_a = create_literal(Literal::new(Polarity::Positive, "A"));
let neg_b = create_literal(Literal::new(Polarity::Negative, "B"));
let element_1 = Element {
prime: Sdd::new_true().id(),
sub: neg_b.id(),
};

let element_2 = Element {
prime: pos_a.id(),
sub: neg_b.id(),
};

// Decomposition `{(true, !B), (A, !B)}` is not compressed due to identical subs.
let decision_1 = Decision {
elements: btreeset!(element_1, element_2),
};

let sdd = Sdd {
sdd_type: SddType::DecisionRegular(decision_1),
vtree_idx: 0, // TODO: Fix vtree index
};

let decisions = &vec![sdd.clone(), pos_a, neg_b];
let manager = SddManager::new_with_nodes(SddOptions::new(), decisions);

assert!(!sdd.is_compressed(&manager));
}

#[test]
fn compressed() {
// TODO: Implement me!
let pos_a = create_literal(Literal::new(Polarity::Positive, "A"));
let neg_b = create_literal(Literal::new(Polarity::Negative, "B"));
let element_1 = Element {
prime: Sdd::new_true().id(),
sub: neg_b.id(),
};

let element_2 = Element {
prime: pos_a.id(),
sub: Sdd::new_true().id(),
};

// Decomposition `{(true, !B), (A, true)}` is compressed.
let decision_1 = Decision {
elements: btreeset!(element_1, element_2),
};

let sdd = Sdd {
sdd_type: SddType::DecisionRegular(decision_1),
vtree_idx: 0, // TODO: Fix vtree index
};

let decisions = &vec![sdd.clone(), pos_a, neg_b];
let manager = SddManager::new_with_nodes(SddOptions::new(), decisions);

assert!(sdd.is_compressed(&manager));
}
}

0 comments on commit 4e1fa41

Please sign in to comment.