aboutsummaryrefslogtreecommitdiffstats
path: root/src/test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test.rs')
-rw-r--r--src/test.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test.rs b/src/test.rs
index 10d907c..70bfd49 100644
--- a/src/test.rs
+++ b/src/test.rs
@@ -195,3 +195,44 @@ fn reduce_builtin_int_add() -> Result<(), String> {
Ok(())
}
+
+#[test]
+#[serial]
+fn reduce_builtin_int_eq() -> Result<(), String> {
+ initialize_before_test();
+ let source = "
+ int.eq? 10 20
+ \"true\"
+ \"false\";
+ int.eq? 30 30
+ \"true\"
+ \"false\";
+ ";
+
+ let (terms, symbol_table) = evaluate_from_source(String::from(source), None)?;
+ assert_eq!(terms.len(), 2);
+ let term1 = &terms[0];
+ let term2 = &terms[1];
+
+ // First expression
+ let (result_term1, _) = repeatedly_reduce_term(&symbol_table, Rc::clone(term1), &None, false)?;
+ let expected1_string = Value::String(String::from("false"));
+ let result_builtin1 = match &*result_term1 {
+ Term::Primitive(p) => p,
+ _ => return Err(format!("{} is not a primitive", result_term1)),
+ };
+
+ assert_eq!(*result_builtin1, expected1_string);
+
+ // Second expression
+ let (result_term2, _) = repeatedly_reduce_term(&symbol_table, Rc::clone(term2), &None, false)?;
+ let expected2_string = Value::String(String::from("true"));
+ let result_builtin2 = match &*result_term2 {
+ Term::Primitive(p) => p,
+ _ => return Err(format!("{} is not a primitive", result_term2)),
+ };
+
+ assert_eq!(*result_builtin2, expected2_string);
+
+ Ok(())
+}