217 lines
2.5 KiB
Rust
217 lines
2.5 KiB
Rust
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);
|
|
}
|