'use strict';

const assert = require('./../../assert');
const common = require('./../../common');

let battle;

describe('Quick Claw', () => {
	afterEach(() => {
		battle.destroy();
	});

	it(`[Gen 2] shares its activation roll with every holder on any given turn`, () => {
		battle = common.gen(2).createBattle({ seed: [1, 2, 3, 27] }, [[
			{ species: 'snorlax', item: 'quickclaw', moves: ['sleeptalk'] },
		], [
			{ species: 'mewtwo', item: 'quickclaw', moves: ['sleeptalk'] },
		]]);

		const snorlax = battle.p1.active[0];
		const mewtwo = battle.p2.active[0];
		battle.makeChoices(); // Quick Claw activates
		assert.equal(snorlax.speed, mewtwo.speed);
		battle.makeChoices(); // Quick Claw activates
		assert.equal(snorlax.speed, mewtwo.speed);
		battle.makeChoices(); // Quick Claw does not activate
		assert.notEqual(snorlax.speed, mewtwo.speed);
	});

	it(`[Gen 3] causes Speed ties with every holder when activated`, () => {
		battle = common.gen(3).createBattle({ seed: [163, 106, 112, 542] }, [[
			{ species: 'snorlax', item: 'quickclaw', moves: ['spore'] },
		], [
			{ species: 'deoxys', item: 'quickclaw', moves: ['seismictoss'] },
		]]);

		const snorlax = battle.p1.active[0];
		const deoxys = battle.p2.active[0];
		battle.quickClawRoll = true;
		battle.makeChoices();
		assert.fullHP(snorlax); // Snorlax wins the tie
		assert.equal(snorlax.speed, deoxys.speed);
		battle.quickClawRoll = true;
		battle.makeChoices();
		assert.false.fullHP(snorlax); // Deoxys wakes up and wins the tie
		assert.equal(snorlax.speed, deoxys.speed);
	});
});
