diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2021-11-24 09:27:22 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2021-11-25 09:53:44 +0200 |
| commit | ecc88efd10db08afad1027892d44d473839a4b86 (patch) | |
| tree | 6ff0f3f20354e570108f6df26b1b96cae9096372 /src/test.rs | |
| parent | 2a2fe4c5e8487185cc08da687e7a781c58d9d19c (diff) | |
Add int.eq builtin and test
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(()) +} |
