44 lines
1.8 KiB
Rust
44 lines
1.8 KiB
Rust
#[cfg(test)]
|
|
mod tests {
|
|
use crate::ast::{ add_binary_node, Node, Token };
|
|
|
|
#[test]
|
|
fn add_nodes() {
|
|
let mut stack = vec![Node::Leaf(true), Node::Leaf(false)];
|
|
let rhs = vec![Node::Binary {
|
|
operator: Token::Conjunction,
|
|
lhs: Box::new(Node::Leaf(true)),
|
|
rhs: Box::new(Node::Leaf(false))
|
|
}];
|
|
add_binary_node(&mut stack, Token::Conjunction);
|
|
assert_eq!(stack, rhs);
|
|
}
|
|
|
|
#[test]
|
|
fn ast_to_formula_bool() {
|
|
let formula = "01&";
|
|
assert_eq!(Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)), formula);
|
|
let formula = "01&00|&";
|
|
assert_eq!(Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)), formula);
|
|
let formula = "01&00|&11^&";
|
|
assert_eq!(Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)), formula);
|
|
let formula = "01&00|&11=^";
|
|
assert_eq!(Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)), formula);
|
|
let formula = "01&00|&0!=";
|
|
assert_eq!(Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)), formula);
|
|
}
|
|
|
|
#[test]
|
|
fn ast_to_formula_char() {
|
|
let formula = "AB&";
|
|
assert_eq!(Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)), formula);
|
|
let formula = "AB&CD|&";
|
|
assert_eq!(Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)), formula);
|
|
let formula = "AB&AC|&DE^&";
|
|
assert_eq!(Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)), formula);
|
|
let formula = "AB&CD|&EF=^";
|
|
assert_eq!(Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)), formula);
|
|
let formula = "AB&CD|&E!=";
|
|
assert_eq!(Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)), formula);
|
|
}
|
|
} |