Files
Dune/tests/mobile-stronghold-passengers.test.ts

52 lines
2.1 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { MOBILE_LOCATION, MOBILE_STRONGHOLD } from '../game/board';
import {
mobileStrongholdCollectionCapacity as capacity,
type MobileCollectionPlayer,
} from '../game/mobile-stronghold-collection';
const ix: MobileCollectionPlayer = {
id: 'ix', faction: 'ixians', forces: { [MOBILE_LOCATION]: 2, arrakeen: 4 },
};
const fremen: MobileCollectionPlayer = {
id: 'fremen', faction: 'fremen', forces: { [MOBILE_LOCATION]: 3 },
};
const bg: MobileCollectionPlayer = {
id: 'bg', faction: 'beneGesserit', forces: { [MOBILE_LOCATION]: 4 },
advisors: { [MOBILE_STRONGHOLD]: {} },
};
void test('mobile spice capacity includes foreign fighters and excludes advisors', () => {
assert.equal(capacity([ix, fremen, bg]), 10);
assert.equal(capacity([ix, fremen, { ...bg, advisors: {} }]), 18);
assert.equal(capacity([]), 0);
});
void test('mobile spice capacity treats a concealed No-Field as one without reading its identity or value', () => {
const deployed = {
controller: 'fremen',
location: { territory: MOBILE_STRONGHOLD, sector: 0 },
get tokenId(): string { throw new Error('concealed token read'); },
get value(): number { throw new Error('concealed value read'); },
};
const richese: MobileCollectionPlayer = {
id: 'richese', faction: 'richese', forces: {}, noField: { deployed },
};
assert.equal(capacity([ix, fremen, richese]), 12);
assert.equal(capacity([ix, fremen, { ...richese, noField: { deployed: null } }]), 10);
assert.equal(capacity([ix, fremen, {
...richese,
noField: { deployed: { controller: 'richese', location: { territory: 'arrakeen', sector: 9 } } },
}]), 10);
});
void test('allied No-Field uses the controlling faction advisor stance', () => {
const richese: MobileCollectionPlayer = {
id: 'richese', faction: 'richese', forces: {},
noField: { deployed: { controller: 'bg', location: { territory: MOBILE_STRONGHOLD, sector: 0 } } },
};
assert.equal(capacity([ix, bg, richese]), 4);
assert.equal(capacity([ix, { ...bg, advisors: {} }, richese]), 14);
});