use super::harness::*; #[test] fn eq_true() { expect_int("3 3 =", 1); } #[test] fn eq_false() { expect_int("3 4 =", 0); } #[test] fn eq_mixed_types() { expect_int("3.0 3 =", 1); } #[test] fn ne_true() { expect_int("3 4 <>", 1); } #[test] fn ne_false() { expect_int("3 3 <>", 0); } #[test] fn lt_true() { expect_int("2 3 lt", 1); } #[test] fn lt_equal() { expect_int("3 3 lt", 0); } #[test] fn lt_false() { expect_int("4 3 lt", 0); } #[test] fn gt_true() { expect_int("4 3 gt", 1); } #[test] fn gt_equal() { expect_int("3 3 gt", 0); } #[test] fn gt_false() { expect_int("2 3 gt", 0); } #[test] fn le_less() { expect_int("2 3 <=", 1); } #[test] fn le_equal() { expect_int("3 3 <=", 1); } #[test] fn le_greater() { expect_int("4 3 <=", 0); } #[test] fn ge_greater() { expect_int("4 3 >=", 1); } #[test] fn ge_equal() { expect_int("3 3 >=", 1); } #[test] fn ge_less() { expect_int("2 3 >=", 0); } #[test] fn and_tt() { expect_int("1 1 and", 1); } #[test] fn and_tf() { expect_int("1 0 and", 0); } #[test] fn and_ff() { expect_int("0 0 and", 0); } #[test] fn or_tt() { expect_int("1 1 or", 1); } #[test] fn or_tf() { expect_int("1 0 or", 1); } #[test] fn or_ff() { expect_int("0 0 or", 0); } #[test] fn not_true() { expect_int("1 not", 0); } #[test] fn not_false() { expect_int("0 not", 1); } #[test] fn truthy_nonzero() { expect_int("5 not", 0); } #[test] fn truthy_negative() { expect_int("-1 not", 0); } #[test] fn xor_tt() { expect_int("1 1 xor", 0); } #[test] fn xor_tf() { expect_int("1 0 xor", 1); } #[test] fn xor_ft() { expect_int("0 1 xor", 1); } #[test] fn xor_ff() { expect_int("0 0 xor", 0); } #[test] fn nand_tt() { expect_int("1 1 nand", 0); } #[test] fn nand_tf() { expect_int("1 0 nand", 1); } #[test] fn nand_ff() { expect_int("0 0 nand", 1); } #[test] fn nor_tt() { expect_int("1 1 nor", 0); } #[test] fn nor_tf() { expect_int("1 0 nor", 0); } #[test] fn nor_ff() { expect_int("0 0 nor", 1); } #[test] fn ifelse_true() { expect_int("{ 42 } { 99 } 1 ifelse", 42); } #[test] fn ifelse_false() { expect_int("{ 42 } { 99 } 0 ifelse", 99); } #[test] fn pick_first() { expect_int("{ 10 } { 20 } { 30 } 0 pick", 10); } #[test] fn pick_second() { expect_int("{ 10 } { 20 } { 30 } 1 pick", 20); } #[test] fn pick_third() { expect_int("{ 10 } { 20 } { 30 } 2 pick", 30); } #[test] fn pick_preserves_stack() { expect_int("5 { 10 } { 20 } 0 pick +", 15); }