mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-04-09 10:36:31 -05:00
53 lines
2.1 KiB
JavaScript
53 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('./../../assert');
|
|
const common = require('./../../common');
|
|
const Battle = require('./../../../.sim-dist/battle').Battle;
|
|
const State = require('./../../../.sim-dist/state').State;
|
|
|
|
const TEAMS = [[
|
|
{species: 'Mew', ability: 'synchronize', item: 'assaultvest', moves: ['psychic']},
|
|
{species: 'Ditto', ability: 'imposter', item: 'choicescarf', moves: ['transform']},
|
|
{species: 'Amoonguss', ability: 'effectspore', item: 'blacksludge', moves: ['toxic']},
|
|
{species: 'Gliscor', ability: 'poisonheal', item: 'toxicorb', moves: ['curse']},
|
|
{species: 'Zoroark', ability: 'illusion', item: 'leftovers', moves: ['knockoff']},
|
|
{species: 'Gengar', ability: 'cursedbody', item: 'brightpowder', moves: ['disable']},
|
|
], [
|
|
{species: 'Ninjask', ability: 'speedboost', item: 'rockyhelmet', moves: ['batonpass']},
|
|
{species: 'Hippowdon', ability: 'sandstream', item: 'choiceband', moves: ['earthquake']},
|
|
{species: 'Jirachi', ability: 'serenegrace', item: 'choicescarf', moves: ['ironhead']},
|
|
{species: 'Chansey', ability: 'naturalcure', item: 'eviolite', moves: ['seismictoss']},
|
|
{species: 'Vaporeon', ability: 'waterabsorb', item: 'wacanberry', moves: ['surf']},
|
|
{species: 'Snorlax', ability: 'thickfat', item: 'leftovers', moves: ['rest']},
|
|
]];
|
|
|
|
describe('State', function () {
|
|
describe('Battles', function () {
|
|
it('should be able to be serialized and deserialized without affecting functionality (slow)', function () {
|
|
this.timeout(5000);
|
|
const control = common.createBattle(TEAMS);
|
|
let test = common.createBattle(TEAMS);
|
|
|
|
while (!(control.ended || test.ended)) {
|
|
control.makeChoices();
|
|
test.makeChoices();
|
|
|
|
assert.deepEqual(State.normalize(test.toJSON()), State.normalize(control.toJSON()));
|
|
|
|
// Roundtrip the test battle to confirm it still works.
|
|
const send = test.send;
|
|
test = Battle.fromJSON(JSON.stringify(test));
|
|
test.restart(send);
|
|
}
|
|
|
|
control.destroy();
|
|
test.destroy();
|
|
});
|
|
it('should require special treatment for complex objects', function () {
|
|
const battle = common.createBattle(TEAMS);
|
|
battle.foo = new Map();
|
|
assert.throws(() => battle.toJSON(), /Unsupported type Map/);
|
|
});
|
|
});
|
|
});
|