Files
hakorune/apps/ny-echo/test.sh
nyash-codex d7805e5974 feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
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
2025-12-10 00:01:53 +09:00

89 lines
2.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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! ==="