pokemon-showdown/test/random-battles/gen3.js
2022-03-03 18:26:01 -08:00

57 lines
1.7 KiB
JavaScript

/**
* Tests for Gen 3 randomized formats
*/
'use strict';
const assert = require('../assert');
const {testSet, testAlwaysHasMove, testHiddenPower, testNotBothMoves} = require('./tools');
describe('[Gen 3] Random Battle', () => {
const options = {format: 'gen3randombattle'};
it('should enforce STAB', () => {
testSet('beautifly', options, set => assert(
set.moves.some(m => m.startsWith('hiddenpower')),
`bad Beautifly set: ${JSON.stringify(set.moves)} has no STAB`
));
testSet('lickitung', options, set => assert(
set.moves.includes('return') || set.moves.includes('seismictoss'),
`bad Lickitung set: ${JSON.stringify(set.moves)} has no STAB`
));
testAlwaysHasMove('delcatty', options, 'doubleedge');
});
it('should prevent double Hidden Power', () => {
testHiddenPower('kingler', options);
testHiddenPower('moltres', options);
});
it('should not give Magneton Sleep Talk without Rest', () => {
testSet('magneton', options, set => {
if (set.moves.includes('sleeptalk')) {
assert(set.moves.includes('rest'), `bad Magneton set: ${JSON.stringify(set.moves)}`);
}
});
});
it('should give Blissey Soft-Boiled', () => {
testSet('blissey', options, set => {
assert(set.moves.includes('softboiled'), `bad Blissey set: ${JSON.stringify(set.moves)}`);
});
});
it('should not give Registeel Sleep Talk and Protect', () => {
testSet('registeel', options, set => {
if (set.moves.includes('sleeptalk')) {
assert(!set.moves.includes('protect'), `Registeel with Sleep Talk + Protect (${set.moves})`);
}
});
});
it('should not give Skarmory Roar + Sleep Talk', () => {
testNotBothMoves('skarmory', options, 'roar', 'sleeptalk');
});
});