use super::harness::*; #[test] fn if_then_true() { expect_int("1 if 42 then", 42); } #[test] fn if_then_false() { let f = run("0 if 42 then"); assert!(f.stack().is_empty()); } #[test] fn if_then_with_base() { expect_int("100 0 if 50 + then", 100); } #[test] fn if_else_true() { expect_int("1 if 42 else 99 then", 42); } #[test] fn if_else_false() { expect_int("0 if 42 else 99 then", 99); } #[test] fn nested_tt() { expect_int("1 if 1 if 100 else 200 then else 300 then", 100); } #[test] fn nested_tf() { expect_int("1 if 0 if 100 else 200 then else 300 then", 200); } #[test] fn nested_f() { expect_int("0 if 1 if 100 else 200 then else 300 then", 300); } #[test] fn if_with_computation() { expect_int("3 2 gt if 42 else 99 then", 42); } #[test] fn missing_then() { expect_error("1 if 42", "missing 'then'"); } #[test] fn deeply_nested() { expect_int("1 if 1 if 1 if 42 then then then", 42); } #[test] fn chained_conditionals() { // First if leaves nothing, second if runs let f = run("0 if 1 then 1 if 42 then"); assert_eq!(stack_int(&f), 42); }