using PkmnLib.Dynamic.Models; using PkmnLib.Dynamic.ScriptHandling.Registry; using PkmnLib.Plugin.Gen7.Scripts.Moves; using GrassyTerrainScript = PkmnLib.Plugin.Gen7.Scripts.Terrain.GrassyTerrain; namespace PkmnLib.Plugin.Gen7.Tests.Scripts.Moves; /// /// Tests for the move script. /// Gen VII Bulbapedia behavior (Generations VI to VII): "Grassy Terrain creates terrain that envelops the /// field and replaces the background environment and any other terrain that is already in effect." /// public class GrassyTerrainTests { private static (GrassyTerrain script, IExecutingMove move, IBattle battle) CreateTestSetup() { var script = new GrassyTerrain(); var move = Substitute.For(); var battle = Substitute.For(); var user = Substitute.For(); move.User.Returns(user); user.Battle.Returns(battle); return (script, move, battle); } /// /// Bulbapedia: Grassy Terrain "envelops the field and replaces the background environment and any /// other terrain that is already in effect" — the move sets the battle's terrain to the /// terrain script. /// [Test] public void OnSecondaryEffect_SetsGrassyTerrainOnBattle() { // Arrange var (script, move, battle) = CreateTestSetup(); // Act script.OnSecondaryEffect(move, Substitute.For(), 0); // Assert battle.Received(1).SetTerrain(ScriptUtils.ResolveName()); } }