1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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)
|