big commit

This commit is contained in:
2026-01-27 01:04:08 +01:00
parent 66933433d1
commit 5456c9414a
15 changed files with 821 additions and 222 deletions

View File

@@ -59,31 +59,31 @@ fn nested_quotations() {
#[test]
fn quotation_with_param() {
let outputs = expect_outputs(r#""kick" s { 2 distort } 1 ? emit"#, 1);
let outputs = expect_outputs(r#""kick" s { 2 distort } 1 ? ."#, 1);
assert!(outputs[0].contains("distort/2"));
}
#[test]
fn quotation_skips_param() {
let outputs = expect_outputs(r#""kick" s { 2 distort } 0 ? emit"#, 1);
let outputs = expect_outputs(r#""kick" s { 2 distort } 0 ? ."#, 1);
assert!(!outputs[0].contains("distort"));
}
#[test]
fn quotation_with_emit() {
// When true, emit should fire
let outputs = expect_outputs(r#""kick" s { emit } 1 ?"#, 1);
// When true, . should fire
let outputs = expect_outputs(r#""kick" s { . } 1 ?"#, 1);
assert!(outputs[0].contains("kick"));
}
#[test]
fn quotation_skips_emit() {
// When false, emit should not fire
// When false, . should not fire
let f = forth();
let outputs = f
.evaluate(r#""kick" s { emit } 0 ?"#, &default_ctx())
.evaluate(r#""kick" s { . } 0 ?"#, &default_ctx())
.unwrap();
// No output since emit was skipped and no implicit emit
// No output since . was skipped and no implicit emit
assert_eq!(outputs.len(), 0);
}
@@ -110,7 +110,7 @@ fn every_with_quotation_integration() {
let ctx = ctx_with(|c| c.iter = iter);
let f = forth();
let outputs = f
.evaluate(r#""kick" s { 2 distort } 2 every ? emit"#, &ctx)
.evaluate(r#""kick" s { 2 distort } 2 every ? ."#, &ctx)
.unwrap();
if iter % 2 == 0 {
assert!(
@@ -163,7 +163,7 @@ fn when_and_unless_complementary() {
let f = forth();
let outputs = f
.evaluate(
r#""kick" s { 2 distort } 2 every ? { 4 distort } 2 every !? emit"#,
r#""kick" s { 2 distort } 2 every ? { 4 distort } 2 every !? ."#,
&ctx,
)
.unwrap();