More tests
This commit is contained in:
parent
9b6a24e222
commit
60b9bdc28a
@ -131,11 +131,11 @@ impl Expression {
|
|||||||
let mut operations: Vec<Operation> = vec![];
|
let mut operations: Vec<Operation> = vec![];
|
||||||
let expression = self.elimination_of_implication(&mut operations)
|
let expression = self.elimination_of_implication(&mut operations)
|
||||||
.de_morgans_laws(&mut operations)
|
.de_morgans_laws(&mut operations)
|
||||||
.absorption_law(&mut operations, options.ignore_case)
|
|
||||||
.absorb_opposites(&mut operations, options.ignore_case)
|
.absorb_opposites(&mut operations, options.ignore_case)
|
||||||
// .associative_law(&mut operations)
|
// .associative_law(&mut operations)
|
||||||
.distributive_law(&mut operations)
|
.distributive_law(&mut operations)
|
||||||
.double_negation_elimination(&mut operations);
|
.double_negation_elimination(&mut operations)
|
||||||
|
.absorption_law(&mut operations, options.ignore_case);
|
||||||
// .commutative_law(&mut operations);
|
// .commutative_law(&mut operations);
|
||||||
(expression, operations)
|
(expression, operations)
|
||||||
}
|
}
|
||||||
@ -566,6 +566,34 @@ mod tests {
|
|||||||
assert_eq!(operations[0].after, "b ⋁ a");
|
assert_eq!(operations[0].after, "b ⋁ a");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A ⋁ ¬B ⋁ A <=> ¬B ⋁ A
|
||||||
|
#[test]
|
||||||
|
fn test_absorption_law_duplicate_a_or_not_b() {
|
||||||
|
let mut operations = vec![];
|
||||||
|
let expression = atomic("a").or(not(atomic("b")).or(atomic("a")))
|
||||||
|
.absorption_law(&mut operations, Default::default())
|
||||||
|
.absorb_opposites(&mut operations, Default::default());
|
||||||
|
assert_eq!(expression, or(not(atomic("b")), atomic("a")));
|
||||||
|
assert_eq!(operations.len(), 1);
|
||||||
|
assert_eq!(operations[0].law, Law::AbsorptionLaw);
|
||||||
|
assert_eq!(operations[0].before, "a ⋁ ¬b ⋁ a");
|
||||||
|
assert_eq!(operations[0].after, "¬b ⋁ a");
|
||||||
|
}
|
||||||
|
|
||||||
|
// A ⋁ ¬B ⋁ A <=> ¬B ⋁ A
|
||||||
|
#[test]
|
||||||
|
fn test_absorption_law_duplicate_a_or_not_b_flipped() { // TODO works on master
|
||||||
|
let mut operations = vec![];
|
||||||
|
let expression = atomic("a").or(not(atomic("b"))).or(atomic("a"))
|
||||||
|
.absorption_law(&mut operations, Default::default())
|
||||||
|
.absorb_opposites(&mut operations, Default::default());
|
||||||
|
assert_eq!(expression, or(not(atomic("b")), atomic("a")));
|
||||||
|
assert_eq!(operations.len(), 1);
|
||||||
|
assert_eq!(operations[0].law, Law::AbsorptionLaw);
|
||||||
|
assert_eq!(operations[0].before, "a ⋁ ¬b ⋁ a");
|
||||||
|
assert_eq!(operations[0].after, "¬b ⋁ a");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_absorption_law_duplicate_not() {
|
fn test_absorption_law_duplicate_not() {
|
||||||
let mut operations = vec![];
|
let mut operations = vec![];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user