From fcf98b0ad91c9ba3da97e6c1cec43e64a963f4fc Mon Sep 17 00:00:00 2001 From: Lawliet-Chan <1576710154@qq.com> Date: Fri, 24 Oct 2025 18:25:31 +0800 Subject: [PATCH 1/4] add test riscv --- apps/riscv/.gitignore | 5 +- apps/riscv/Makefile | 8 +- apps/riscv/test_programs/array_sum.c | 16 +++ .../test_programs/build_simple_programs.sh | 57 ++++++++++ .../test_programs/build_test_programs.sh | 50 +++++++++ apps/riscv/test_programs/fibonacci.c | 14 +++ apps/riscv/test_programs/simple_add.c | 9 ++ apps/riscv/vm_bronze_test.go | 105 ++++++++++++------ 8 files changed, 227 insertions(+), 37 deletions(-) create mode 100644 apps/riscv/test_programs/array_sum.c create mode 100755 apps/riscv/test_programs/build_simple_programs.sh create mode 100755 apps/riscv/test_programs/build_test_programs.sh create mode 100644 apps/riscv/test_programs/fibonacci.c create mode 100644 apps/riscv/test_programs/simple_add.c diff --git a/apps/riscv/.gitignore b/apps/riscv/.gitignore index 312868a..fe04bab 100644 --- a/apps/riscv/.gitignore +++ b/apps/riscv/.gitignore @@ -53,4 +53,7 @@ coverage.out # Local configuration files .env -.env.local \ No newline at end of file +.env.local + +# Test compiled files +test_programs/compiled/ \ No newline at end of file diff --git a/apps/riscv/Makefile b/apps/riscv/Makefile index 7b8a29d..4f3bcfd 100644 --- a/apps/riscv/Makefile +++ b/apps/riscv/Makefile @@ -26,8 +26,14 @@ build: build-wrapper @echo "Building RISC-V module..." CGO_ENABLED=1 go build -tags $(BUILD_TAGS) . +# Compile test programs +compile-test-programs: + @echo "Compiling RISC-V test programs..." + @mkdir -p test_programs/compiled + @cd test_programs && ./build_simple_programs.sh + # Run tests -test: build-wrapper +test: build-wrapper compile-test-programs @echo "Running tests..." CGO_ENABLED=1 go test -tags $(BUILD_TAGS) -v . diff --git a/apps/riscv/test_programs/array_sum.c b/apps/riscv/test_programs/array_sum.c new file mode 100644 index 0000000..efc6324 --- /dev/null +++ b/apps/riscv/test_programs/array_sum.c @@ -0,0 +1,16 @@ +// 数组求和程序 - CKB-VM 测试用例 +// 计算数组中所有元素的和 + +int array_sum(int* arr, int length) { + int sum = 0; + for (int i = 0; i < length; i++) { + sum += arr[i]; + } + return sum; +} + +int main() { + int arr[] = {1, 2, 3, 4, 5}; + int length = 5; + return array_sum(arr, length); // 应该返回 15 +} diff --git a/apps/riscv/test_programs/build_simple_programs.sh b/apps/riscv/test_programs/build_simple_programs.sh new file mode 100755 index 0000000..62cc301 --- /dev/null +++ b/apps/riscv/test_programs/build_simple_programs.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# 编译简单的 RISC-V 程序,直接使用 ELF 文件 + +echo "🔧 编译简单的 RISC-V 程序..." + +# 检查 RISC-V 工具链 +if ! command -v riscv64-elf-gcc &> /dev/null; then + echo "❌ 未找到 riscv64-elf-gcc,请先安装 RISC-V 工具链" + exit 1 +fi + +# 创建输出目录 +mkdir -p compiled + +# 编译一个非常简单的程序 +echo "📦 编译 simple_return.c..." +cat > compiled/simple_return.c << 'EOF' +// 最简单的 RISC-V 程序 - 直接返回 42 +int main() { + return 42; +} +EOF + +riscv64-elf-gcc -nostdlib -static -o compiled/simple_return.elf compiled/simple_return.c +if [ $? -eq 0 ]; then + echo "✅ simple_return.elf 编译成功" + # 直接使用整个 ELF 文件 + cp compiled/simple_return.elf compiled/simple_return.bin + echo "✅ simple_return.bin 复制成功" +else + echo "❌ simple_return.c 编译失败" +fi + +# 编译一个简单的加法程序 +echo "📦 编译 simple_add.c..." +cat > compiled/simple_add.c << 'EOF' +// 简单的加法程序 +int add(int a, int b) { + return a + b; +} + +int main() { + return add(3, 4); // 返回 7 +} +EOF + +riscv64-elf-gcc -nostdlib -static -o compiled/simple_add.elf compiled/simple_add.c +if [ $? -eq 0 ]; then + echo "✅ simple_add.elf 编译成功" + cp compiled/simple_add.elf compiled/simple_add.bin + echo "✅ simple_add.bin 复制成功" +else + echo "❌ simple_add.c 编译失败" +fi + +echo "🎉 简单程序编译完成!" +echo "📁 编译结果在 compiled/ 目录中" diff --git a/apps/riscv/test_programs/build_test_programs.sh b/apps/riscv/test_programs/build_test_programs.sh new file mode 100755 index 0000000..1d210e6 --- /dev/null +++ b/apps/riscv/test_programs/build_test_programs.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# 编译测试程序为 RISC-V 字节码 + +echo "🔧 编译 RISC-V 测试程序..." + +# 检查 RISC-V 工具链 +if ! command -v riscv64-elf-gcc &> /dev/null; then + echo "❌ 未找到 riscv64-elf-gcc,请先安装 RISC-V 工具链" + exit 1 +fi + +# 创建输出目录 +mkdir -p compiled + +# 编译 simple_add.c +echo "📦 编译 simple_add.c..." +riscv64-elf-gcc -nostdlib -static -o compiled/simple_add.elf simple_add.c +if [ $? -eq 0 ]; then + echo "✅ simple_add.elf 编译成功" + # 提取 .text 段作为字节码 + riscv64-elf-objcopy -O binary --only-section=.text compiled/simple_add.elf compiled/simple_add.bin + echo "✅ simple_add.bin 提取成功" +else + echo "❌ simple_add.c 编译失败" +fi + +# 编译 fibonacci.c +echo "📦 编译 fibonacci.c..." +riscv64-elf-gcc -nostdlib -static -o compiled/fibonacci.elf fibonacci.c +if [ $? -eq 0 ]; then + echo "✅ fibonacci.elf 编译成功" + riscv64-elf-objcopy -O binary --only-section=.text compiled/fibonacci.elf compiled/fibonacci.bin + echo "✅ fibonacci.bin 提取成功" +else + echo "❌ fibonacci.c 编译失败" +fi + +# 编译 array_sum.c +echo "📦 编译 array_sum.c..." +riscv64-elf-gcc -nostdlib -static -o compiled/array_sum.elf array_sum.c +if [ $? -eq 0 ]; then + echo "✅ array_sum.elf 编译成功" + riscv64-elf-objcopy -O binary --only-section=.text compiled/array_sum.elf compiled/array_sum.bin + echo "✅ array_sum.bin 提取成功" +else + echo "❌ array_sum.c 编译失败" +fi + +echo "🎉 所有测试程序编译完成!" +echo "📁 编译结果在 compiled/ 目录中" diff --git a/apps/riscv/test_programs/fibonacci.c b/apps/riscv/test_programs/fibonacci.c new file mode 100644 index 0000000..c372286 --- /dev/null +++ b/apps/riscv/test_programs/fibonacci.c @@ -0,0 +1,14 @@ +// 斐波那契数列程序 - CKB-VM 测试用例 +// 计算第 n 个斐波那契数 + +int fibonacci(int n) { + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); +} + +int main() { + // 计算第 10 个斐波那契数 + return fibonacci(10); // 应该返回 55 +} diff --git a/apps/riscv/test_programs/simple_add.c b/apps/riscv/test_programs/simple_add.c new file mode 100644 index 0000000..de76e38 --- /dev/null +++ b/apps/riscv/test_programs/simple_add.c @@ -0,0 +1,9 @@ +// 简单的加法程序 - CKB-VM 测试用例 +// 这个程序计算 3 + 4 = 7 + +int main() { + int a = 3; + int b = 4; + int result = a + b; + return result; // 应该返回 7 +} diff --git a/apps/riscv/vm_bronze_test.go b/apps/riscv/vm_bronze_test.go index 4ff6913..54c558e 100644 --- a/apps/riscv/vm_bronze_test.go +++ b/apps/riscv/vm_bronze_test.go @@ -1,65 +1,100 @@ package riscv import ( + "io" + "os" "testing" ) -func TestVMRunnerAsBronze(t *testing.T) { +func TestSimpleReturnProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/simple_return.elf") + if err != nil { + t.Fatalf("Failed to open simple_return.elf: %v", err) + } + defer file.Close() + + program, err := io.ReadAll(file) + if err != nil { + t.Fatalf("Failed to read simple_return.elf: %v", err) + } + vm := NewVMRunner() defer vm.Cleanup() - // Test initialization - err := vm.Init() + t.Logf("Executing simple_return program (%d bytes)", len(program)) + + // Execute program + err = vm.ExecuteProgram(program) if err != nil { - t.Fatalf("Failed to initialize VM: %v", err) + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) } +} - if !vm.initialized { - t.Error("VM should be initialized") +func TestSimpleAddProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/simple_add.elf") + if err != nil { + t.Fatalf("Failed to open simple_add.elf: %v", err) } + defer file.Close() - // Test with empty program - program := []byte{} - err = vm.LoadProgram(program) + program, err := io.ReadAll(file) if err != nil { - t.Logf("Expected error when loading empty program: %v", err) + t.Fatalf("Failed to read simple_add.elf: %v", err) } - // Test GetExitCode without running - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) + vm := NewVMRunner() + defer vm.Cleanup() + + t.Logf("Executing simple_add program (%d bytes)", len(program)) - // Test cleanup - vm.Cleanup() - if vm.initialized { - t.Error("VM should not be initialized after cleanup") + // Execute program + err = vm.ExecuteProgram(program) + if err != nil { + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) } } -func TestExecuteProgram(t *testing.T) { - vm := NewVMRunner() - - // Test with empty program - program := []byte{} +func TestFibonacciProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/fibonacci.elf") + if err != nil { + t.Fatalf("Failed to open fibonacci.elf: %v", err) + } + defer file.Close() - err := vm.ExecuteProgram(program) + program, err := io.ReadAll(file) if err != nil { - t.Logf("Expected error when executing empty program: %v", err) + t.Fatalf("Failed to read fibonacci.elf: %v", err) } -} -func TestBronzeName(t *testing.T) { vm := NewVMRunner() + defer vm.Cleanup() - // Test that it's properly configured as a Bronze - if vm.Bronze == nil { - t.Fatal("Bronze should not be nil") - } + t.Logf("Executing fibonacci program (%d bytes)", len(program)) - name := vm.Bronze.Name() - if name != "vm" { - t.Errorf("Expected Bronze name to be 'vm', got '%s'", name) + // Execute program + err = vm.ExecuteProgram(program) + if err != nil { + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) } - - t.Logf("Bronze name: %s", name) } From 652bb0f1bc034eaae51046d420ed9be2073eefc6 Mon Sep 17 00:00:00 2001 From: Lawliet-Chan <1576710154@qq.com> Date: Fri, 24 Oct 2025 18:37:57 +0800 Subject: [PATCH 2/4] fix --- apps/riscv/Makefile | 2 +- .../test_programs/build_simple_programs.sh | 57 ------------------- .../test_programs/build_test_programs.sh | 45 +++++++-------- 3 files changed, 20 insertions(+), 84 deletions(-) delete mode 100755 apps/riscv/test_programs/build_simple_programs.sh diff --git a/apps/riscv/Makefile b/apps/riscv/Makefile index 4f3bcfd..f5bfeed 100644 --- a/apps/riscv/Makefile +++ b/apps/riscv/Makefile @@ -30,7 +30,7 @@ build: build-wrapper compile-test-programs: @echo "Compiling RISC-V test programs..." @mkdir -p test_programs/compiled - @cd test_programs && ./build_simple_programs.sh + @cd test_programs && ./build_test_programs.sh # Run tests test: build-wrapper compile-test-programs diff --git a/apps/riscv/test_programs/build_simple_programs.sh b/apps/riscv/test_programs/build_simple_programs.sh deleted file mode 100755 index 62cc301..0000000 --- a/apps/riscv/test_programs/build_simple_programs.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# 编译简单的 RISC-V 程序,直接使用 ELF 文件 - -echo "🔧 编译简单的 RISC-V 程序..." - -# 检查 RISC-V 工具链 -if ! command -v riscv64-elf-gcc &> /dev/null; then - echo "❌ 未找到 riscv64-elf-gcc,请先安装 RISC-V 工具链" - exit 1 -fi - -# 创建输出目录 -mkdir -p compiled - -# 编译一个非常简单的程序 -echo "📦 编译 simple_return.c..." -cat > compiled/simple_return.c << 'EOF' -// 最简单的 RISC-V 程序 - 直接返回 42 -int main() { - return 42; -} -EOF - -riscv64-elf-gcc -nostdlib -static -o compiled/simple_return.elf compiled/simple_return.c -if [ $? -eq 0 ]; then - echo "✅ simple_return.elf 编译成功" - # 直接使用整个 ELF 文件 - cp compiled/simple_return.elf compiled/simple_return.bin - echo "✅ simple_return.bin 复制成功" -else - echo "❌ simple_return.c 编译失败" -fi - -# 编译一个简单的加法程序 -echo "📦 编译 simple_add.c..." -cat > compiled/simple_add.c << 'EOF' -// 简单的加法程序 -int add(int a, int b) { - return a + b; -} - -int main() { - return add(3, 4); // 返回 7 -} -EOF - -riscv64-elf-gcc -nostdlib -static -o compiled/simple_add.elf compiled/simple_add.c -if [ $? -eq 0 ]; then - echo "✅ simple_add.elf 编译成功" - cp compiled/simple_add.elf compiled/simple_add.bin - echo "✅ simple_add.bin 复制成功" -else - echo "❌ simple_add.c 编译失败" -fi - -echo "🎉 简单程序编译完成!" -echo "📁 编译结果在 compiled/ 目录中" diff --git a/apps/riscv/test_programs/build_test_programs.sh b/apps/riscv/test_programs/build_test_programs.sh index 1d210e6..933197d 100755 --- a/apps/riscv/test_programs/build_test_programs.sh +++ b/apps/riscv/test_programs/build_test_programs.sh @@ -1,50 +1,43 @@ #!/bin/bash -# 编译测试程序为 RISC-V 字节码 +# Compile RISC-V programs to ELF format for CKB-VM -echo "🔧 编译 RISC-V 测试程序..." +echo "🔧 Compiling RISC-V programs to ELF format..." -# 检查 RISC-V 工具链 +# Check RISC-V toolchain if ! command -v riscv64-elf-gcc &> /dev/null; then - echo "❌ 未找到 riscv64-elf-gcc,请先安装 RISC-V 工具链" + echo "❌ riscv64-elf-gcc not found, please install RISC-V toolchain first" exit 1 fi -# 创建输出目录 +# Create output directory mkdir -p compiled -# 编译 simple_add.c -echo "📦 编译 simple_add.c..." +# Compile simple add program +echo "📦 Compiling simple_add.c..." riscv64-elf-gcc -nostdlib -static -o compiled/simple_add.elf simple_add.c if [ $? -eq 0 ]; then - echo "✅ simple_add.elf 编译成功" - # 提取 .text 段作为字节码 - riscv64-elf-objcopy -O binary --only-section=.text compiled/simple_add.elf compiled/simple_add.bin - echo "✅ simple_add.bin 提取成功" + echo "✅ simple_add.elf compiled successfully" else - echo "❌ simple_add.c 编译失败" + echo "❌ simple_add.c compilation failed" fi -# 编译 fibonacci.c -echo "📦 编译 fibonacci.c..." +# Compile fibonacci program +echo "📦 Compiling fibonacci.c..." riscv64-elf-gcc -nostdlib -static -o compiled/fibonacci.elf fibonacci.c if [ $? -eq 0 ]; then - echo "✅ fibonacci.elf 编译成功" - riscv64-elf-objcopy -O binary --only-section=.text compiled/fibonacci.elf compiled/fibonacci.bin - echo "✅ fibonacci.bin 提取成功" + echo "✅ fibonacci.elf compiled successfully" else - echo "❌ fibonacci.c 编译失败" + echo "❌ fibonacci.c compilation failed" fi -# 编译 array_sum.c -echo "📦 编译 array_sum.c..." +# Compile array sum program +echo "📦 Compiling array_sum.c..." riscv64-elf-gcc -nostdlib -static -o compiled/array_sum.elf array_sum.c if [ $? -eq 0 ]; then - echo "✅ array_sum.elf 编译成功" - riscv64-elf-objcopy -O binary --only-section=.text compiled/array_sum.elf compiled/array_sum.bin - echo "✅ array_sum.bin 提取成功" + echo "✅ array_sum.elf compiled successfully" else - echo "❌ array_sum.c 编译失败" + echo "❌ array_sum.c compilation failed" fi -echo "🎉 所有测试程序编译完成!" -echo "📁 编译结果在 compiled/ 目录中" +echo "🎉 RISC-V programs compiled to ELF format!" +echo "📁 Compiled files are in compiled/ directory" From 2022c7709c630d1673fc939c612c483913a35bfe Mon Sep 17 00:00:00 2001 From: Lawliet-Chan <1576710154@qq.com> Date: Fri, 24 Oct 2025 18:44:41 +0800 Subject: [PATCH 3/4] Update unit tests to require exit code 0 for test success --- apps/riscv/vm_bronze_test.go | 12 ++++ apps/riscv/vm_test.go | 112 +++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 apps/riscv/vm_test.go diff --git a/apps/riscv/vm_bronze_test.go b/apps/riscv/vm_bronze_test.go index 54c558e..9a78fb3 100644 --- a/apps/riscv/vm_bronze_test.go +++ b/apps/riscv/vm_bronze_test.go @@ -30,10 +30,14 @@ func TestSimpleReturnProgram(t *testing.T) { t.Logf("Program execution result: %v", err) exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) } else { t.Log("Program executed successfully") exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } } } @@ -61,10 +65,14 @@ func TestSimpleAddProgram(t *testing.T) { t.Logf("Program execution result: %v", err) exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) } else { t.Log("Program executed successfully") exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } } } @@ -92,9 +100,13 @@ func TestFibonacciProgram(t *testing.T) { t.Logf("Program execution result: %v", err) exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) } else { t.Log("Program executed successfully") exitCode := vm.GetExitCode() t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } } } diff --git a/apps/riscv/vm_test.go b/apps/riscv/vm_test.go new file mode 100644 index 0000000..9a78fb3 --- /dev/null +++ b/apps/riscv/vm_test.go @@ -0,0 +1,112 @@ +package riscv + +import ( + "io" + "os" + "testing" +) + +func TestSimpleReturnProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/simple_return.elf") + if err != nil { + t.Fatalf("Failed to open simple_return.elf: %v", err) + } + defer file.Close() + + program, err := io.ReadAll(file) + if err != nil { + t.Fatalf("Failed to read simple_return.elf: %v", err) + } + + vm := NewVMRunner() + defer vm.Cleanup() + + t.Logf("Executing simple_return program (%d bytes)", len(program)) + + // Execute program + err = vm.ExecuteProgram(program) + if err != nil { + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } + } +} + +func TestSimpleAddProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/simple_add.elf") + if err != nil { + t.Fatalf("Failed to open simple_add.elf: %v", err) + } + defer file.Close() + + program, err := io.ReadAll(file) + if err != nil { + t.Fatalf("Failed to read simple_add.elf: %v", err) + } + + vm := NewVMRunner() + defer vm.Cleanup() + + t.Logf("Executing simple_add program (%d bytes)", len(program)) + + // Execute program + err = vm.ExecuteProgram(program) + if err != nil { + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } + } +} + +func TestFibonacciProgram(t *testing.T) { + // Read compiled RISC-V ELF file + file, err := os.Open("test_programs/compiled/fibonacci.elf") + if err != nil { + t.Fatalf("Failed to open fibonacci.elf: %v", err) + } + defer file.Close() + + program, err := io.ReadAll(file) + if err != nil { + t.Fatalf("Failed to read fibonacci.elf: %v", err) + } + + vm := NewVMRunner() + defer vm.Cleanup() + + t.Logf("Executing fibonacci program (%d bytes)", len(program)) + + // Execute program + err = vm.ExecuteProgram(program) + if err != nil { + t.Logf("Program execution result: %v", err) + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } else { + t.Log("Program executed successfully") + exitCode := vm.GetExitCode() + t.Logf("Exit code: %d", exitCode) + if exitCode != 0 { + t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) + } + } +} From fa77a8d69c170070b23621608420ab5438768ad8 Mon Sep 17 00:00:00 2001 From: Lawliet-Chan <1576710154@qq.com> Date: Fri, 24 Oct 2025 18:50:07 +0800 Subject: [PATCH 4/4] Remove vm_bronze_test.go, keep only vm_test.go with exit code validation --- apps/riscv/vm_bronze_test.go | 112 ----------------------------------- 1 file changed, 112 deletions(-) delete mode 100644 apps/riscv/vm_bronze_test.go diff --git a/apps/riscv/vm_bronze_test.go b/apps/riscv/vm_bronze_test.go deleted file mode 100644 index 9a78fb3..0000000 --- a/apps/riscv/vm_bronze_test.go +++ /dev/null @@ -1,112 +0,0 @@ -package riscv - -import ( - "io" - "os" - "testing" -) - -func TestSimpleReturnProgram(t *testing.T) { - // Read compiled RISC-V ELF file - file, err := os.Open("test_programs/compiled/simple_return.elf") - if err != nil { - t.Fatalf("Failed to open simple_return.elf: %v", err) - } - defer file.Close() - - program, err := io.ReadAll(file) - if err != nil { - t.Fatalf("Failed to read simple_return.elf: %v", err) - } - - vm := NewVMRunner() - defer vm.Cleanup() - - t.Logf("Executing simple_return program (%d bytes)", len(program)) - - // Execute program - err = vm.ExecuteProgram(program) - if err != nil { - t.Logf("Program execution result: %v", err) - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } else { - t.Log("Program executed successfully") - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - if exitCode != 0 { - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } - } -} - -func TestSimpleAddProgram(t *testing.T) { - // Read compiled RISC-V ELF file - file, err := os.Open("test_programs/compiled/simple_add.elf") - if err != nil { - t.Fatalf("Failed to open simple_add.elf: %v", err) - } - defer file.Close() - - program, err := io.ReadAll(file) - if err != nil { - t.Fatalf("Failed to read simple_add.elf: %v", err) - } - - vm := NewVMRunner() - defer vm.Cleanup() - - t.Logf("Executing simple_add program (%d bytes)", len(program)) - - // Execute program - err = vm.ExecuteProgram(program) - if err != nil { - t.Logf("Program execution result: %v", err) - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } else { - t.Log("Program executed successfully") - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - if exitCode != 0 { - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } - } -} - -func TestFibonacciProgram(t *testing.T) { - // Read compiled RISC-V ELF file - file, err := os.Open("test_programs/compiled/fibonacci.elf") - if err != nil { - t.Fatalf("Failed to open fibonacci.elf: %v", err) - } - defer file.Close() - - program, err := io.ReadAll(file) - if err != nil { - t.Fatalf("Failed to read fibonacci.elf: %v", err) - } - - vm := NewVMRunner() - defer vm.Cleanup() - - t.Logf("Executing fibonacci program (%d bytes)", len(program)) - - // Execute program - err = vm.ExecuteProgram(program) - if err != nil { - t.Logf("Program execution result: %v", err) - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } else { - t.Log("Program executed successfully") - exitCode := vm.GetExitCode() - t.Logf("Exit code: %d", exitCode) - if exitCode != 0 { - t.Errorf("Program execution failed with exit code: %d, expected: 0", exitCode) - } - } -}