docs(plans): add combinatorial name suggestions milestone
This commit is contained in:
@@ -22,6 +22,32 @@ test("keyboard and swipe controls produce equivalent directions", () => {
|
||||
assert.equal(player.directionFromSwipe(0, 0, 12, 4), null);
|
||||
});
|
||||
|
||||
test("frontend name suggestions randomize both words and remain bounded", () => {
|
||||
const picks = [3, 4];
|
||||
const suggestion = player.randomSuggestedName([], () => picks.shift());
|
||||
assert.equal(suggestion, "Смелый-Кактус");
|
||||
assert.match(suggestion, /^[^-]+-[^-]+$/u);
|
||||
assert.ok(Buffer.byteLength(suggestion, "utf8") <= 32);
|
||||
assert.equal(player.NAME_COMBINATION_COUNT, 144);
|
||||
|
||||
const occupied = "Бодрый-Барсук";
|
||||
const skipped = player.randomSuggestedName([occupied], () => 0);
|
||||
assert.notEqual(skipped, occupied);
|
||||
assert.equal(skipped, "Бодрый-Крот");
|
||||
const allNames = [];
|
||||
for (let adjective = 0; adjective < 12; adjective++) {
|
||||
for (let noun = 0; noun < 12; noun++) {
|
||||
const pair = [adjective, noun];
|
||||
allNames.push(player.randomSuggestedName([], () => pair.shift()));
|
||||
}
|
||||
}
|
||||
assert.equal(player.randomSuggestedName(allNames, () => 0), null);
|
||||
assert.equal(player.randomIndex(12, () => 99), 0);
|
||||
|
||||
const script = fs.readFileSync(path.join(project, "web/player.js"), "utf8");
|
||||
assert.doesNotMatch(script, /suggest_name|name_suggestion/);
|
||||
});
|
||||
|
||||
test("command envelopes contain intentions rather than client-owned state", () => {
|
||||
const move = player.createEnvelope("move", 7, "move-7", {direction: "west"});
|
||||
assert.deepEqual(move, {v: 1, type: "move", seq: 7, requestId: "move-7", payload: {direction: "west"}});
|
||||
|
||||
Reference in New Issue
Block a user