9d0675fce814b317aaf48317e22b1d00dc4ba57f
前五轮的端到端都只跑单局、且只出单张。本轮补两个从未被驱动过的维度: 一、多局大局(design §12.1 步骤10 / §12.2 / §4.6) 真实驱动 6 局与 12 局:跨局轮庄与「上局 banker+result」严格对应,另单独造出 result=0 的庄赢局验证连庄端到端(此前只有 do_prepare 的桩单测);每局零和、 累计分与逐局累加一致;account 只在末局出现,打满后再准备被拒;房卡只扣一次; 战绩载荷完整;中途解散按当前累计分结算、result=3。全部相符。 二、整局带牌型模糊(新增 test/test_fuzz.js) test_endgame 的驱动器只会出单张,对子/拖拉机/甩牌/甩错在整局链路里从未跑过。 新测试用带牌型的对局补上,并对每一墩用独立参考实现重算「谁最大」与服务端 比对(不是抽查),另独立重算捡分、扣底倍数、算奖与捡分子数分配。探针阶段 跑了 160 局约 3800 墩(4 个种子)0 异常,入库版固定为 20 局约 480 墩、0.3s。 变异检验:牌的归属写给非胜者、单张毙牌不再压过副牌、算奖分配去掉 ×X、 跟牌牌面值改回未排序入参 —— 四条全部转红。 过程中修正了测试自身的三个问题(已写进 test/README 与 compliance): - 参考实现的 rank 取了负数,而 0 是「不参与本墩」的哨兵,哨兵反而数值最大; - 闲家捡分按 playowner 累加再与 aset.grade 比,是拿被测字段自证,playowner 写错时两边一起错照样通过 —— 改成按独立算出的墩胜者累计; - 扣底倍数再调 get_bottom_multiple 去比,同样是自证,倍数表改成恒返回 2 也 通过 —— 改成按 design §6.3 独立重算。 另:该文件的覆盖下限是发牌相关的,随机发牌下扣底可能一次都不出现(实测 60 次里有 1 次),故把发牌也接到固定种子上;随机发牌的整局覆盖由 test_endgame 承担。 全套单测 511 → 519 项全绿,总耗时 < 1.7s。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Description
No description provided
11 MiB
Languages
JavaScript
99%
HTML
0.8%
PHP
0.1%