diff options
Diffstat (limited to 'tests/lib.rs')
-rw-r--r-- | tests/lib.rs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/lib.rs b/tests/lib.rs new file mode 100644 index 0000000..baddf72 --- /dev/null +++ b/tests/lib.rs @@ -0,0 +1,69 @@ + +extern crate modelthing; + +use std::path::Path; + +use modelthing::*; + + +#[test] +fn test_parse_metadata() { + let raw = +r#" +[model] +name-en = "Bogus Dummy Model" +[variables] +"#.to_string(); + assert_eq!(parse_metadata(raw).unwrap(), + ModelMetadata { + name_en: "Bogus Dummy Model".to_string(), + description_en: None, + vars: vec![], + }); +} + +#[test] +fn test_load_model_entry() { + load_model_entry(Path::new("./examples/classic_gravitation/")).unwrap(); +} + +#[test] +fn test_search_models() { + assert_eq!(search_models(Path::new("./examples/")).len() > 1, true); +} + +#[test] +fn test_lexical() { + assert_eq!(&format!("{:?}", modelica_parser::parse_integer("+123").unwrap()), + "123"); + assert_eq!(&format!("{:?}", modelica_parser::parse_integer("-9").unwrap()), + "-9"); + assert_eq!(&format!("{:?}", modelica_parser::parse_float("-1.0e0").unwrap()), + "-1"); + assert_eq!(&format!("{:?}", modelica_parser::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!("{:?}", modelica_parser::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!("{:?}", modelica_parser::parse_model(example2).unwrap()), example2); +} |