diff options
Diffstat (limited to 'src/test.rs')
| -rw-r--r-- | src/test.rs | 41 |
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(()) +} |
