lhsazevedo/sh4objtest

此软件包最新版本(v0.1.1)没有可用的许可信息。

v0.1.1 2024-06-26 08:01 UTC

This package is auto-updated.

Last update: 2024-09-01 02:31:39 UTC


README

日立SH4对象测试器是一个专为支持东京公交指南反编译项目而开发的专用模拟器和测试框架。此工具允许开发者使用一系列预定义的期望和测试用例运行和验证SH4对象文件。

注意

此项目处于积极开发中,可能包含破坏性更改。

特性

  • 模拟日立SH4对象代码执行
  • 提供编写和运行测试用例的框架
  • 支持内存分配和初始化
  • 允许模拟函数调用和返回值
  • 启用验证内存写入和函数调用

使用方法

要使用日立SH4对象测试器,您需要编写测试用例,定义SH4对象代码的初始状态、预期行为和断言。假设我们想测试以下函数

void functionUnderTest(int* ptr) {
    int value = *ptr;
    int result = someFunction(value);
    *ptr = result;
}

此C函数从由ptr指向的内存位置读取值,使用该值调用someFunction,然后将结果写回到同一个内存位置。

以下是此函数测试用例的基本结构示例

# example_test.php

use Lhsazevedo\Sh4ObjTest\TestCase;

return new class extends TestCase {
    public function test_exampleFunction() {
        // Set up initial memory state
        $someAddress = $this->alloc(4);
        $this->initUint32($someAddress, 0x1234);

        // Define expected function calls
        $this->shouldCall('_someFunction')
            ->with(0x1234)
            ->andReturn(0x5678);

        // Define expected memory writes
        $this->shouldWrite($someAddress, 0x5678);

        // Run the function under test
        $this->call('_functionUnderTest')
            ->with($someAddress)
            ->run();
    }
};

此示例演示了如何

  1. 分配和初始化内存
  2. 设置函数调用期望
  3. 设置内存写入期望
  4. 运行测试函数

请注意,在调用run()之前定义了所有期望。函数执行后没有断言。

要运行测试用例,需要执行以下命令

sh4objtest example_test.php path/to/your/object/file.o

Sh4objtest将加载对象文件,执行测试用例,并报告结果

test_exampleFunction...
✔ Fulfilled: Called _someFunction
✔ Fulfilled: Wrote 0x5678 to 0x800000

[ PASS ] 2 expectations fulfilled

文档

此项目的完整文档仍在开发中。在此期间,请参阅东京公交指南反编译项目中的测试用例,了解如何使用此框架编写测试的实际示例。