aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib.rs')
-rw-r--r--tests/lib.rs69
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);
+}