extern crate modelica_parser; use modelica_parser::{parse_integer, parse_float, parse_model}; #[test] fn test_lexical() { assert_eq!(&format!("{:?}", parse_integer("+123").unwrap()), "123"); assert_eq!(&format!("{:?}", parse_integer("-9").unwrap()), "-9"); assert_eq!(&format!("{:?}", parse_float("-1.0e0").unwrap()), "-1"); assert_eq!(&format!("{:?}", parse_float("123.456").unwrap()), "123.456"); } #[test] fn test_parse() { let example1 = r#"model MinimalModel Real x; equation x = 1; end MinimalModel; "#; assert_eq!(&format!("{:?}", parse_model(example1).unwrap()), example1); let example2 = r#"model MinimalModel parameter Real a; Real b; equation connect(a, b); a = 1; b = ((abs(a) + 2) / 4); end MinimalModel; "#; assert_eq!(&format!("{:?}", parse_model(example2).unwrap()), example2); } // TODO: the following are illegal in Modelica // 2*-2 = -4 // --2 = 2 // ++2 = 2 // 2--2 = 4 // x^y^z (needs parens)