forked from ppxf25tqu/nudt-compiler-cpp
parent
6b6de49fcf
commit
e26b9f8a43
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,65 +0,0 @@
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
PROJECT_ROOT=$(cd "$(dirname "$0")/.." ; pwd)
|
||||
COMPILER="$PROJECT_ROOT/build/bin/compiler"
|
||||
TEST_DIR="$PROJECT_ROOT/test/test_case/basic"
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
if [ ! -f "$COMPILER" ]; then
|
||||
echo "错误: 编译器不存在: $COMPILER"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=========================================="
|
||||
echo "RISC-V 浮点转换测试"
|
||||
echo "=========================================="
|
||||
|
||||
TESTS="
|
||||
float_conv:3
|
||||
float_add:13
|
||||
float_mul:30
|
||||
"
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
for test in $TESTS; do
|
||||
name=$(echo $test | cut -d: -f1)
|
||||
expected=$(echo $test | cut -d: -f2)
|
||||
|
||||
echo -n "测试 $name (期望 $expected) ... "
|
||||
|
||||
"$COMPILER" "$TEST_DIR/$name.sy" --emit-asm > /tmp/test_$name.s 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}失败 (汇编错误)${NC}"
|
||||
cat /tmp/test_$name.s | head -3
|
||||
FAIL=$((FAIL + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
riscv64-linux-gnu-gcc -static /tmp/test_$name.s -o /tmp/test_$name -no-pie 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}失败 (链接错误)${NC}"
|
||||
FAIL=$((FAIL + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
qemu-riscv64 /tmp/test_$name > /dev/null 2>&1
|
||||
exit_code=$?
|
||||
|
||||
if [ $exit_code -eq $expected ]; then
|
||||
echo -e "${GREEN}通过${NC}"
|
||||
PASS=$((PASS + 1))
|
||||
else
|
||||
echo -e "${RED}失败 (实际 $exit_code)${NC}"
|
||||
FAIL=$((FAIL + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "=========================================="
|
||||
echo -e "测试结果: ${GREEN}通过 $PASS${NC} / ${RED}失败 $FAIL${NC}"
|
||||
echo "=========================================="
|
||||
@ -1,85 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 获取项目根目录
|
||||
PROJECT_ROOT=$(cd "$(dirname "$0")/.." ; pwd)
|
||||
COMPILER="$PROJECT_ROOT/build/bin/compiler"
|
||||
TEST_DIR="$PROJECT_ROOT/test/test_case/basic"
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 检查编译器
|
||||
if [ ! -f "$COMPILER" ]; then
|
||||
echo "错误: 编译器不存在: $COMPILER"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查工具链
|
||||
if ! command -v riscv64-linux-gnu-gcc >/dev/null 2>&1; then
|
||||
echo "错误: 未找到 riscv64-linux-gnu-gcc"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v qemu-riscv64 >/dev/null 2>&1; then
|
||||
echo "错误: 未找到 qemu-riscv64"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=========================================="
|
||||
echo "RISC-V 基础功能测试"
|
||||
echo "=========================================="
|
||||
|
||||
# 定义测试用例
|
||||
TESTS="arith:50 add:30 sub:7 mul:50 div:25 mod:2 var:43"
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
for test in $TESTS; do
|
||||
name=$(echo $test | cut -d: -f1)
|
||||
expected=$(echo $test | cut -d: -f2)
|
||||
|
||||
echo -n "测试 $name (期望 $expected) ... "
|
||||
|
||||
# 生成汇编
|
||||
"$COMPILER" "$TEST_DIR/$name.sy" --emit-asm > /tmp/test_$name.s 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}失败 (汇编错误)${NC}"
|
||||
FAIL=$((FAIL + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# 链接
|
||||
riscv64-linux-gnu-gcc -static /tmp/test_$name.s -o /tmp/test_$name -no-pie 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}失败 (链接错误)${NC}"
|
||||
FAIL=$((FAIL + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# 运行
|
||||
qemu-riscv64 /tmp/test_$name > /dev/null 2>&1
|
||||
exit_code=$?
|
||||
|
||||
if [ $exit_code -eq $expected ]; then
|
||||
echo -e "${GREEN}通过${NC}"
|
||||
PASS=$((PASS + 1))
|
||||
else
|
||||
echo -e "${RED}失败 (实际 $exit_code)${NC}"
|
||||
FAIL=$((FAIL + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "=========================================="
|
||||
echo -e "测试结果: ${GREEN}通过 $PASS${NC} / ${RED}失败 $FAIL${NC}"
|
||||
echo "=========================================="
|
||||
|
||||
if [ $FAIL -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ 所有基础测试通过!${NC}"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}✗ 有 $FAIL 个测试失败${NC}"
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Reference in new issue