Lines
100 %
Functions
Branches
use nms::interpreter::Interpreter;
use scripting::nomiscript::Value;
#[test]
fn test_eval_num_eq() {
let mut interp = Interpreter::new(false).unwrap();
assert_eq!(interp.eval("(= 1 1 1)").unwrap(), vec![Value::Bool(true)]);
assert_eq!(interp.eval("(= 1 2)").unwrap(), vec![Value::Nil]);
}
fn test_eval_num_eq_single() {
assert_eq!(interp.eval("(= 42)").unwrap(), vec![Value::Bool(true)]);
fn test_eval_num_neq() {
assert_eq!(interp.eval("(/= 1 2 3)").unwrap(), vec![Value::Bool(true)]);
assert_eq!(interp.eval("(/= 1 2 1)").unwrap(), vec![Value::Nil]);
fn test_eval_num_lt() {
assert_eq!(interp.eval("(< 1 2 3)").unwrap(), vec![Value::Bool(true)]);
assert_eq!(interp.eval("(< 1 2 2)").unwrap(), vec![Value::Nil]);
fn test_eval_num_gt() {
assert_eq!(interp.eval("(> 3 2 1)").unwrap(), vec![Value::Bool(true)]);
assert_eq!(interp.eval("(> 3 3 1)").unwrap(), vec![Value::Nil]);
fn test_eval_num_le() {
assert_eq!(
interp.eval("(<= 1 2 2 3)").unwrap(),
vec![Value::Bool(true)]
);
assert_eq!(interp.eval("(<= 1 3 2)").unwrap(), vec![Value::Nil]);
fn test_eval_num_ge() {
interp.eval("(>= 3 2 2 1)").unwrap(),
assert_eq!(interp.eval("(>= 1 2 3)").unwrap(), vec![Value::Nil]);
fn test_eval_comparison_type_error() {
assert!(interp.eval("(= 1 \"one\")").is_err());
assert!(interp.eval("(< \"a\" \"b\")").is_err());
fn test_eval_eql_numbers() {
assert_eq!(interp.eval("(eql 1 1)").unwrap(), vec![Value::Bool(true)]);
assert_eq!(interp.eval("(eql 1 2)").unwrap(), vec![Value::Nil]);
fn test_eval_eql_strings() {
interp.eval(r#"(eql "abc" "abc")"#).unwrap(),
interp.eval(r#"(eql "abc" "def")"#).unwrap(),
vec![Value::Nil]
fn test_eval_eql_mixed_types() {
assert_eq!(interp.eval(r#"(eql 1 "1")"#).unwrap(), vec![Value::Nil]);
fn test_eval_eql_nil() {
interp.eval("(eql nil nil)").unwrap(),
fn test_eval_eql_arity_error() {
assert!(interp.eval("(eql 1)").is_err());
assert!(interp.eval("(eql 1 2 3)").is_err());
fn test_eval_equal_strings() {
interp.eval(r#"(equal "hello" "hello")"#).unwrap(),
interp.eval(r#"(equal "hello" "world")"#).unwrap(),
fn test_eval_equal_numbers() {
interp.eval("(equal 0.5 0.5)").unwrap(),
fn test_eval_equal_arity_error() {
assert!(interp.eval("(equal 1)").is_err());