28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { acquireDuke, captureDuke, consumeDuke, createDukeVidal, dukeController, expireDuke } from '../game/duke-vidal';
|
|
|
|
void test('Moritani takes the actual living captive without restoring the captor after its tenure', () => {
|
|
const initial = acquireDuke(createDukeVidal(), 'm', 1, 'moritani');
|
|
initial.leader.deaths = 2;
|
|
const captive = captureDuke(initial, 'h', 'm', 1, 'arrakeen');
|
|
const before = structuredClone(captive);
|
|
const taken = acquireDuke(captive, 'm', 2, 'moritani');
|
|
assert.deepEqual(captive, before);
|
|
assert.equal(dukeController(taken), 'm');
|
|
assert.equal(taken.source, 'moritani');
|
|
assert.equal(taken.leader.capturedBy, undefined);
|
|
assert.equal(taken.leader.concealed, undefined);
|
|
assert.equal(taken.captureVisibility, undefined);
|
|
assert.equal(taken.leader.dead, false);
|
|
assert.equal(taken.leader.deaths, 2);
|
|
assert.equal(taken.leader.faction, 'ecaz');
|
|
assert.equal(taken.leader.strength, 6);
|
|
const unused = expireDuke(taken, 2);
|
|
assert.equal(dukeController(unused), null);
|
|
assert.equal(unused.leader.capturedBy, undefined);
|
|
const used = consumeDuke(taken);
|
|
assert.equal(dukeController(used), null);
|
|
assert.equal(used.leader.deaths, 2);
|
|
});
|