'use strict';

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

let battle;

describe('Miracle Eye', function () {
	afterEach(function () {
		battle.destroy();
	});

	it('should negate Psychic immunities', function () {
		battle = common.createBattle({seed: [1, 2, 3, 4]}, [[
			{species: "Smeargle", moves: ['miracleeye', 'psychic']},
		], [
			{species: "Darkrai", moves: ['nastyplot']},
		]]);
		battle.makeChoices('move miracle eye', 'move nasty plot');
		battle.makeChoices('move psychic', 'move nasty plot');
		assert.notEqual(battle.p2.active[0].hp, battle.p2.active[0].maxhp);
	});

	it('should ignore the effect of positive evasion stat stages', function () {
		battle = common.createBattle({seed: [1, 2, 3, 4]}, [[
			{species: "Smeargle", moves: ['avalanche', 'miracleeye']},
		], [
			{species: "Forretress", moves: ['synthesis']},
		]]);
		battle.makeChoices('move miracle eye', 'move synthesis');
		battle.boost({evasion: 6}, battle.p2.active[0]);
		for (let i = 0; i < 3; i++) {
			battle.makeChoices('move avalanche', 'move synthesis');
			assert.notEqual(battle.p2.active[0].hp, battle.p2.active[0].maxhp);
		}
	});

	it('should not ignore the effect of negative evasion stat stages', function () {
		battle = common.createBattle({seed: [1, 2, 3, 4]}, [[
			{species: "Smeargle", moves: ['zapcannon', 'miracleeye']},
		], [
			{species: "Zapdos", moves: ['roost']},
		]]);
		battle.makeChoices('move miracle eye', 'move roost');
		battle.boost({spe: 6, evasion: -6}, battle.p2.active[0]);
		for (let i = 0; i < 3; i++) {
			battle.makeChoices('move zap cannon', 'move roost');
			assert.notEqual(battle.p2.active[0].hp, battle.p2.active[0].maxhp);
		}
	});
});
