Spaces:
Running
Running
File size: 2,990 Bytes
5c2ed06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
'use strict';
const assert = require('assert').strict;
const { makeUser } = require('../users-utils');
describe('Simulator abstraction layer features', () => {
describe('Battle', () => {
let p1, p2, room;
afterEach(() => {
if (p1) {
p1.disconnectAll();
p1.destroy();
}
if (p2) {
p2.disconnectAll();
p2.destroy();
}
if (room) room.destroy();
});
it('should not get players out of sync in rated battles on rename', () => {
// Regression test for 47263c8749
const packedTeam = 'Weavile||lifeorb||swordsdance,knockoff,iceshard,iciclecrash|Jolly|,252,,,4,252|||||';
p1 = makeUser("MissingNo.");
p2 = makeUser();
room = Rooms.createBattle({
format: '',
players: [{ user: p1, team: packedTeam }, { user: p2, team: packedTeam }],
allowRenames: false,
});
assert(room.battle);
p1.resetName();
for (const player of room.battle.players) {
assert.equal(player, room.battle.playerTable[toID(player.name)]);
}
});
});
describe('BattleStream', () => {
it('should work (slow)', async () => {
Config.simulatorprocesses = 1;
const PM = require('../../dist/server/room-battle').PM;
assert.equal(PM.processes.length, 0);
PM.spawn(1, true);
assert.equal(PM.processes[0].getLoad(), 0);
const stream = PM.createStream();
assert.equal(PM.processes[0].getLoad(), 1);
stream.write(
'>version a2393dfd2a2da5594148bf99eea514e72b136c2c\n' +
'>start {"formatid":"gen8randombattle","seed":[9619,36790,28450,62465],"rated":"Rated battle"}\n' +
'>player p1 {"name":"p1","avatar":"ethan","team":"","rating":1507,"seed":[59512,58581,51338,7861]}\n' +
'>player p2 {"name":"p2","avatar":"dawn","team":"","rating":1447,"seed":[33758,53485,62378,29757]}\n'
);
assert((await stream.read()).startsWith('sideupdate\np1\n|request|'));
assert((await stream.read()).startsWith('sideupdate\np2\n|request|'));
assert((await stream.read()).includes('|switch|'));
stream.write(
'>p1 move 1\n' +
'>p2 move 1\n'
);
assert((await stream.read()).startsWith('sideupdate\np1\n|request|'));
assert((await stream.read()).startsWith('sideupdate\np2\n|request|'));
assert((await stream.read()).includes('|move|'));
stream.destroy();
assert.equal(PM.processes[0].getLoad(), 0);
const stream2 = PM.createStream();
assert.equal(PM.processes[0].getLoad(), 1);
stream2.write(
'>version a2393dfd2a2da5594148bf99eea514e72b136c2c\n' +
'>start {"formatid":"gen8randombattle","seed":[9619,36790,28450,62465],"rated":"Rated battle"}\n' +
'>player p1 {"name":"p1","avatar":"ethan","team":"","rating":1507,"seed":[59512,58581,51338,7861]}\n' +
'>player p2 {"name":"p2","avatar":"dawn","team":"","rating":1447,"seed":[33758,53485,62378,29757]}\n' +
'>p1 move 1\n' +
'>p2 move 1\n'
);
assert(await stream2.read());
stream2.writeEnd();
await stream2.readAll();
assert.equal(PM.processes[0].getLoad(), 0);
PM.unspawn();
});
});
});
|