extern crate modelica_parser; use std::collections::HashSet; use std::iter::FromIterator; use modelica_parser::*; #[test] fn test_expr_identifiers() { use modelica_parser::Expr::*; assert_eq!( HashSet::new(), Integer(0).identifiers()); assert_eq!( HashSet::from_iter(vec!["x".to_string()]), Ident("x".to_string()).identifiers()); assert_eq!( HashSet::from_iter(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_eq!( HashSet::from_iter(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_eq!( HashSet::new(), SimpleEquation{ lhs: Integer(0), rhs: Integer(0), }.identifiers()); assert_eq!( HashSet::from_iter(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()); }