Files
erqiwang_youle/server/games/erqiwang/test/test_desk.js
T
joywayerandClaude Opus 4.8 6939e70ed7 二七王测试:完成 P1 用例(L3 RPC 层 + 坐庄轮换)
- mod.js:加 module.exports 守卫,使其可被 Node require(友乐无 module 跳过)
- test/_rpc.js(新):L3 脚手架——挂类全局、mock cls_mod/min_loadJsFile 装配 mod.js、
  捕获 SendPack/sendpack_toother 下发包
- test/test_rpc.js(新):§9 明牌 mingpai(合法/不查牌·未报无主·非出牌阶段拒 + others结构)、
  §9 出牌 chupai 的 info/baozhu 查牌门控(可查有/不查无)、§4 投降 touxiang 条件(70·step2·庄家)、
  §4.2 mod.jiaofen 入参校验(>70/非5倍/首家必叫/后叫更低)、
  §4 70分上庄暗牌亮牌(真实 jiaofen 驱动到上庄,验证 bottomcards/ancard3s 门控)
- test/test_desk.js(新):§4.6 坐庄轮换 do_prepare(庄赢连庄/闲赢·投降下家)
- 02-测试计划.md/README:P1 标记完成,剩余归入 P2

全部单测 156 项断言全绿(node server/games/erqiwang/test/run.js)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 01:14:33 +08:00

22 lines
1.2 KiB
JavaScript

// §4.6 坐庄轮换 do_prepare(庄赢连庄 / 闲赢·投降下家)。期望取自 design §4.6
require('./_shim');
const D = require('../class.desk.js');
const t = require('./_assert')();
// 造一个牌桌,压入一局"已结束"的牌局(banker/result),三家都准备后开新局,取新局 firstseat
function nextFirstseat(banker, result) {
const o_room = { seatlist: [{ conmode: 0, fromid: 0 }, { conmode: 0, fromid: 1 }, { conmode: 0, fromid: 2 }], asetcount: 6, method: { sendpack_toother: () => { } } };
const desk = D.new(o_room);
desk.paiju_list.push({ banker, result, tmp_jiesuan_aset: {} });
D.do_prepare(desk, 0); D.do_prepare(desk, 1); D.do_prepare(desk, 2);
return desk.paiju_list[desk.paiju_list.length - 1].firstseat;
}
t.eq('轮庄 庄1赢(result0)连庄', nextFirstseat(1, 0), 1);
t.eq('轮庄 庄1闲赢(result1)下家2', nextFirstseat(1, 1), 2);
t.eq('轮庄 庄1投降(result2)下家2', nextFirstseat(1, 2), 2);
t.eq('轮庄 庄2赢连庄', nextFirstseat(2, 0), 2);
t.eq('轮庄 庄2闲赢下家(回0)', nextFirstseat(2, 1), 0);
t.eq('轮庄 庄0闲赢下家1', nextFirstseat(0, 1), 1);
process.exit(t.done('desk') ? 0 : 1);