Init
This commit is contained in:
39
tests/forth/variables.rs
Normal file
39
tests/forth/variables.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
use super::harness::*;
|
||||
|
||||
#[test]
|
||||
fn set_get() {
|
||||
expect_int(r#"42 "x" set "x" get"#, 42);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_nonexistent() {
|
||||
expect_int(r#""novar" get"#, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn persistence_across_evals() {
|
||||
let f = forth();
|
||||
let ctx = default_ctx();
|
||||
f.evaluate(r#"10 "counter" set"#, &ctx).unwrap();
|
||||
f.clear_stack();
|
||||
f.evaluate(r#""counter" get 1 +"#, &ctx).unwrap();
|
||||
assert_eq!(stack_int(&f), 11);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn overwrite() {
|
||||
expect_int(r#"1 "x" set 99 "x" set "x" get"#, 99);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn multiple_vars() {
|
||||
let f = run(r#"10 "a" set 20 "b" set "a" get "b" get +"#);
|
||||
assert_eq!(stack_int(&f), 30);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn float_var() {
|
||||
let f = run(r#"3.14 "pi" set "pi" get"#);
|
||||
let val = stack_float(&f);
|
||||
assert!((val - 3.14).abs() < 1e-9);
|
||||
}
|
||||
Reference in New Issue
Block a user