# Testing

## 测试范围

- JSON 数组/对象形式、malformed JSON 和非对象根节点。
- `.ase/.aseprite` header、frame、layer、cel、tags、slice 元数据及截断/非法 magic。
- 资源矩形、时长、重复命名、tag 范围、slice frame 和运行时就绪性校验。
- forward、reverse、pingpong、once、暂停、重置、切换 clip 和跨多帧时间推进。
- hitbox/hurtbox/collision box 提取、查找和相交。
- atlas 统计、时间轴、duration bucket、素材策略和命名序列。
- runtime manifest、Phaser 3、Canvas 2D 导出及目标兼容性预检。
- text/json/ase 报告、CLI smoke、basic example 和发布包内容。

## 本地验收

```bash
moon fmt --check
moon check --target all --deny-warn
moon build --target all --deny-warn
moon test --target all --deny-warn
moon run cmd/main
moon run cmd/main -- --json
moon run cmd/main -- --ase
moon run examples/basic
moon coverage analyze -- -f summary
moon info --target all
moon package --list
```

`--target all` 包含 Wasm、WasmGC、JavaScript 和 Native。Native 构建需要本机 C 编译器；GitHub Actions 在 Linux、macOS 和 Windows 上执行完整矩阵。

## 接口与发布回归

`pkg.generated.mbti` 及子包接口文件由 `moon info --target all` 生成并纳入版本控制。公共 API 改动必须经过人工确认，CI 会在重新生成后执行 `git diff --exit-code`。

发布前执行：

```bash
moon publish --dry-run
```

dry-run 必须通过，且 `moon package --list` 不得包含 `_build`、缓存、压缩包或 `submission` 中的个人申报材料。
