Smokes: add composite loop canaries (multi-continue, multi-carriers, nested break+continue) under quick/core
This commit is contained in:
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# vm_loop_phi_multi_carriers.sh — two loop carriers (fibonacci-like)
|
||||
|
||||
source "$(dirname "$0")/../../../lib/test_runner.sh"
|
||||
require_env || exit 2
|
||||
preflight_plugins || exit 2
|
||||
|
||||
test_multi_carriers_fib6() {
|
||||
# Fibonacci with 6 steps starting a=0,b=1 => b ends at 13
|
||||
local code='i=0; a=0; b=1; loop(i<6) { t=a+b; a=b; b=t; i=i+1 }; print(b)'
|
||||
local out
|
||||
out=$(run_nyash_vm -c "$code")
|
||||
[ "$out" = "13" ]
|
||||
}
|
||||
|
||||
run_test "loop_phi_multi_carriers" test_multi_carriers_fib6
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
# vm_loop_phi_multi_continue.sh — multi-continue paths with single loop carrier
|
||||
|
||||
source "$(dirname "$0")/../../../lib/test_runner.sh"
|
||||
require_env || exit 2
|
||||
preflight_plugins || exit 2
|
||||
|
||||
test_multi_continue_sum() {
|
||||
# Expect: sum of odd numbers 1..9 except 7 -> 1+3+5+9 = 18
|
||||
local code='i=0; sum=0; loop(i<10) {
|
||||
if i%2==0 { i=i+1; continue }
|
||||
if i==7 { i=i+1; continue }
|
||||
sum=sum+i; i=i+1
|
||||
}; print(sum)'
|
||||
local out
|
||||
out=$(run_nyash_vm -c "$code")
|
||||
[ "$out" = "18" ]
|
||||
}
|
||||
|
||||
run_test "loop_phi_multi_continue" test_multi_continue_sum
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
# vm_nested_mixed_break_continue.sh — nested loops with mixed break/continue
|
||||
|
||||
source "$(dirname "$0")/../../../lib/test_runner.sh"
|
||||
require_env || exit 2
|
||||
preflight_plugins || exit 2
|
||||
|
||||
test_nested_mixed() {
|
||||
# Outer i=0..4, inner j=0..4, skip j==2 (continue), break inner entirely when i==3.
|
||||
# Counts per i: 0->4, 1->4, 2->4, 3->0 (break), 4->4 => total 16
|
||||
local code='i=0; sum=0; loop(i<5) {
|
||||
j=0; loop(j<5) {
|
||||
if j==2 { j=j+1; continue }
|
||||
if i==3 { break }
|
||||
sum=sum+1; j=j+1
|
||||
}; i=i+1
|
||||
}; print(sum)'
|
||||
local out
|
||||
out=$(run_nyash_vm -c "$code")
|
||||
[ "$out" = "16" ]
|
||||
}
|
||||
|
||||
run_test "nested_mixed_break_continue" test_nested_mixed
|
||||
|
||||
Reference in New Issue
Block a user