Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
89 lines
2.1 KiB
Bash
89 lines
2.1 KiB
Bash
#!/bin/bash
|
||
# ny-echo テストスクリプト
|
||
|
||
set -e
|
||
|
||
NYASH=${NYASH:-"../../target/release/hakorune"}
|
||
if [ ! -x "$NYASH" ] && [ -x "../../target/release/nyash" ]; then
|
||
NYASH="../../target/release/nyash"
|
||
fi
|
||
SCRIPT="main.hako"
|
||
|
||
echo "=== ny-echo Test Suite ==="
|
||
|
||
# Test 1: 基本エコー
|
||
echo "Test 1: Basic echo"
|
||
echo "Hello World" | $NYASH $SCRIPT > out1.txt
|
||
if [ "$(cat out1.txt)" == "Hello World" ]; then
|
||
echo "✓ Basic echo passed"
|
||
else
|
||
echo "✗ Basic echo failed"
|
||
exit 1
|
||
fi
|
||
|
||
# Test 2: 大文字変換
|
||
echo "Test 2: Uppercase transformation"
|
||
echo "hello world" | $NYASH $SCRIPT --upper > out2.txt
|
||
if [ "$(cat out2.txt)" == "HELLO WORLD" ]; then
|
||
echo "✓ Uppercase passed"
|
||
else
|
||
echo "✗ Uppercase failed"
|
||
exit 1
|
||
fi
|
||
|
||
# Test 3: 小文字変換
|
||
echo "Test 3: Lowercase transformation"
|
||
echo "HELLO WORLD" | $NYASH $SCRIPT --lower > out3.txt
|
||
if [ "$(cat out3.txt)" == "hello world" ]; then
|
||
echo "✓ Lowercase passed"
|
||
else
|
||
echo "✗ Lowercase failed"
|
||
exit 1
|
||
fi
|
||
|
||
# Test 4: 複数行入力
|
||
echo "Test 4: Multiple lines"
|
||
printf "Line 1\nLine 2\nLine 3" | $NYASH $SCRIPT > out4.txt
|
||
if [ $(wc -l < out4.txt) -eq 3 ]; then
|
||
echo "✓ Multiple lines passed"
|
||
else
|
||
echo "✗ Multiple lines failed"
|
||
exit 1
|
||
fi
|
||
|
||
# Test 5: パフォーマンステスト(1万行)
|
||
echo "Test 5: Performance test (10000 lines)"
|
||
seq 1 10000 | $NYASH $SCRIPT > out5.txt
|
||
if [ $(wc -l < out5.txt) -eq 10000 ]; then
|
||
echo "✓ Performance test passed"
|
||
else
|
||
echo "✗ Performance test failed"
|
||
exit 1
|
||
fi
|
||
|
||
# Test 6: VM/JIT/AOT比較
|
||
echo "Test 6: Backend comparison"
|
||
|
||
# VM実行
|
||
echo "hello" | $NYASH --backend interpreter $SCRIPT > vm_out.txt
|
||
VM_HASH=$(sha256sum vm_out.txt | cut -d' ' -f1)
|
||
|
||
# JIT実行(利用可能な場合)
|
||
if $NYASH --help | grep -q "jit"; then
|
||
echo "hello" | $NYASH --backend jit $SCRIPT > jit_out.txt
|
||
JIT_HASH=$(sha256sum jit_out.txt | cut -d' ' -f1)
|
||
|
||
if [ "$VM_HASH" == "$JIT_HASH" ]; then
|
||
echo "✓ VM/JIT output matches"
|
||
else
|
||
echo "✗ VM/JIT output mismatch"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# クリーンアップ
|
||
rm -f out*.txt vm_out.txt jit_out.txt
|
||
|
||
echo ""
|
||
echo "=== All tests passed! ==="
|