Files
hakorune/apps/ny-echo/test.sh

89 lines
2.1 KiB
Bash
Raw Normal View History

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