Files
util.nix/test/package/hemar/test/parser-for-loops.sh

39 lines
1.9 KiB
Bash

#!/bin/dash
# Test: For loops (MVP feature - currently unimplemented)
# These tests document expected behavior when for loops are implemented
log notice "test case: ${WHITE}for loop structure (should fail until implemented)"
if answer="$(printf '%s' '{[ for i in items ]}' | hemar -c 2>&1)"; then
log error "test failed: ${WHITE}for loop should not be implemented yet, but parser succeeded"
exit 1
fi
log notice "test case: ${WHITE}for loop correctly rejected (expected behavior)"
log notice "test case: ${WHITE}for loop with done (should fail until implemented)"
if answer="$(printf '{[ for i in items ]}\n content\n{[ done ]}' | hemar -c 2>&1)"; then
log error "test failed: ${WHITE}for loop should not be implemented yet, but parser succeeded"
exit 1
fi
log notice "test case: ${WHITE}for loop with done correctly rejected (expected behavior)"
# When for loops are implemented, these should be the expected outputs:
#
# log notice "test case: ${WHITE}simple for loop"
# answer="$(printf '{[ for i in items ]}\n{[ done ]}' | hemar -c)"
# expected='[{"type":"section","variable":"i","path":"items","body":[]}]'
# json_diff "$answer" "$expected"
#
# log notice "test case: ${WHITE}for loop with content"
# answer="$(printf '{[ for i in items ]}\n hello {[i]}\n{[ done ]}' | hemar -c)"
# expected='[{"type":"section","variable":"i","path":"items","body":[{"type":"text","value":" hello "},{"type":"interpolation","path":"i"}]}]'
# json_diff "$answer" "$expected"
#
# log notice "test case: ${WHITE}nested for loops"
# answer="$(printf '{[ for i in items ]}\n {[ for j in i.subitems ]}\n {[j]}\n {[ done ]}\n{[ done ]}' | hemar -c)"
# expected='[{"type":"section","variable":"i","path":"items","body":[{"type":"text","value":" "},{"type":"section","variable":"j","path":"i.subitems","body":[{"type":"text","value":" "},{"type":"interpolation","path":"j"}]}]}]'
# json_diff "$answer" "$expected"
log notice "test passed (for loops not yet implemented - this is expected)"