extern crate modelica_parser; use std::collections::HashSet; use std::iter::FromIterator; use modelica_parser::*; fn set_eq(a: Vec, b: Vec) -> bool { let set_a: HashSet = HashSet::from_iter(a); let set_b: HashSet = HashSet::from_iter(b); return set_a == set_b; } #[test] fn test_expr_identifiers() { use modelica_parser::Expr::*; assert!(set_eq( vec![], Integer(0).identifiers())); assert!(set_eq( vec!["x".to_string()], Ident("x".to_string()).identifiers())); assert!(set_eq( vec!["x".to_string(), "y".to_string(), "z".to_string()], BinExpr(BinOperator::Add, Box::new(Sign(Box::new(Ident("z".to_string())))), Box::new(BinExpr(BinOperator::Add, Box::new(Sign(Box::new(Ident("x".to_string())))), Box::new(Sign(Box::new(Ident("y".to_string()))))))).identifiers())); assert!(set_eq( vec!["z".to_string()], BinExpr(BinOperator::Add, Box::new(Ident("z".to_string())), Box::new(Ident("z".to_string()))).identifiers())); } #[test] fn test_eqn_identifiers() { use modelica_parser::Expr::*; assert!(set_eq( vec![], SimpleEquation{ lhs: Integer(0), rhs: Integer(0), }.identifiers())); assert!(set_eq( vec!["z".to_string()], SimpleEquation{ lhs: Ident("z".to_string()), rhs: BinExpr(BinOperator::Add, Box::new(Ident("z".to_string())), Box::new(Ident("z".to_string()))), }.identifiers())); }