// roomtype 位串解析 + 局数/扣卡映射(design §10.1) require('./_shim'); const C = require('../class.config.js'); const t = require('./_assert')(); // 复刻 export 的两个映射(现为2行)做端到端验证 const needroomcard = rt => { const c = C.parse(rt); return c.deductAA ? (c.aset12 ? 2 : 1) : (c.aset12 ? 4 : 2); }; const asetcount = rt => { const c = C.parse(rt); return c.aset12 ? 12 : 6; }; // --- parse 位串 --- t.eq('"00000"', C.parse("00000"), { aset12: false, deductAA: false, bangwang: false, climb: false, nocheck: false }); t.eq('"10100"', C.parse("10100"), { aset12: true, deductAA: false, bangwang: true, climb: false, nocheck: false }); t.eq('"01011"', C.parse("01011"), { aset12: false, deductAA: true, bangwang: false, climb: true, nocheck: true }); t.eq('"" 兜底', C.parse(""), { aset12: false, deductAA: false, bangwang: false, climb: false, nocheck: false }); t.eq('undefined 兜底', C.parse(undefined), { aset12: false, deductAA: false, bangwang: false, climb: false, nocheck: false }); t.eq('"1" 短串', C.parse("1"), { aset12: true, deductAA: false, bangwang: false, climb: false, nocheck: false }); // --- 局数 --- t.eq('6局 "0"', asetcount("00000"), 6); t.eq('12局 "1"', asetcount("10000"), 12); // --- 开房房卡 (design §10.1) --- t.eq('房主6局', needroomcard("00000"), 2); t.eq('房主12局', needroomcard("10000"), 4); t.eq('AA6局', needroomcard("01000"), 1); t.eq('AA12局', needroomcard("11000"), 2); // --- 直接调用 export 的接口(替代复刻映射) --- const exp = require('../class.export.js').new(); t.eq('export 局数6', exp.get_asetcount("00000"), 6); t.eq('export 局数12', exp.get_asetcount("10000"), 12); t.eq('export 房主6局2张', exp.get_needroomcard("00000"), 2); t.eq('export 房主12局4张', exp.get_needroomcard("10000"), 4); t.eq('export AA6局1张', exp.get_needroomcard("01000"), 1); t.eq('export 加入·房主0张', exp.get_needroomcard_joinroom("00000"), 0); t.eq('export 加入·AA6局1张', exp.get_needroomcard_joinroom("01000"), 1); process.exit(t.done('config') ? 0 : 1);