Skip to content

Commit b69e6be

Browse files
SkriptJUnitTest#spawnTestEntity + Cleanup (#7791)
* Initial Commit * Update PlayerElytraBoostEventTest.java * Requested Changes * Changes
1 parent efbde8d commit b69e6be

11 files changed

Lines changed: 48 additions & 92 deletions

File tree

src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
package ch.njol.skript.test.runner;
22

3-
import org.bukkit.Bukkit;
4-
import org.bukkit.GameRule;
5-
import org.bukkit.Location;
6-
import org.bukkit.Material;
7-
import org.bukkit.World;
3+
import ch.njol.skript.Skript;
4+
import org.bukkit.*;
85
import org.bukkit.block.Block;
96
import org.bukkit.entity.Entity;
107
import org.bukkit.entity.EntityType;
118
import org.bukkit.entity.Pig;
129

13-
import ch.njol.skript.Skript;
14-
1510
/**
1611
* Class that helps the JUnit test communicate with Skript.
1712
*/
@@ -84,9 +79,19 @@ public static Location getTestLocation() {
8479
* @return Pig that has been spawned.
8580
*/
8681
public static Pig spawnTestPig() {
82+
return spawnTestEntity(EntityType.PIG);
83+
}
84+
85+
/**
86+
* Spawns a test {@link Entity} from the provided {@code entityType}
87+
* @param entityType The desired {@link EntityType} to spawn
88+
* @return The spawned {@link Entity}
89+
*/
90+
public static <E extends Entity> E spawnTestEntity(EntityType entityType) {
8791
if (delay <= 0D)
88-
delay = 1; // A single tick allows the piggy to spawn before server shutdown.
89-
return (Pig) getTestWorld().spawnEntity(getTestLocation(), EntityType.PIG);
92+
delay = 1; // A single tick allows the entity to spawn before server shutdown.
93+
//noinspection unchecked
94+
return (E) getTestWorld().spawnEntity(getTestLocation(), entityType);
9095
}
9196

9297
/**

src/test/java/org/skriptlang/skript/test/tests/syntaxes/effects/EffGoatHornsTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package org.skriptlang.skript.test.tests.syntaxes.effects;
22

33
import ch.njol.skript.test.runner.SkriptJUnitTest;
4-
import org.bukkit.Bukkit;
4+
import org.bukkit.entity.EntityType;
55
import org.bukkit.entity.Goat;
6-
import org.bukkit.event.block.BlockBreakEvent;
7-
import org.bukkit.event.world.WorldLoadEvent;
86
import org.junit.After;
9-
import org.junit.Before;
107
import org.junit.Test;
118

129
public class EffGoatHornsTest extends SkriptJUnitTest {
@@ -19,7 +16,7 @@ public class EffGoatHornsTest extends SkriptJUnitTest {
1916

2017
@Test
2118
public void test() {
22-
goat = getTestWorld().spawn(getTestWorld().getSpawnLocation(), Goat.class);
19+
goat = spawnTestEntity(EntityType.GOAT);
2320
}
2421

2522
@After

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/BellEventsTest.java

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.skriptlang.skript.test.tests.syntaxes.events;
22

3-
import ch.njol.skript.Skript;
43
import ch.njol.skript.test.runner.SkriptJUnitTest;
54
import org.bukkit.Bukkit;
65
import org.bukkit.Material;
76
import org.bukkit.block.Block;
87
import org.bukkit.block.BlockFace;
9-
import org.bukkit.entity.Entity;
108
import org.bukkit.entity.LivingEntity;
119
import org.bukkit.entity.Pillager;
1210
import org.bukkit.event.Event;
@@ -16,46 +14,26 @@
1614
import org.junit.Test;
1715

1816
import java.util.Collections;
19-
import java.util.HashMap;
2017
import java.util.HashSet;
21-
import java.util.Map;
2218
import java.util.Set;
2319

2420
public class BellEventsTest extends SkriptJUnitTest {
2521

26-
private static final boolean canRun = Skript.classExists("org.bukkit.block.Bell");
27-
2822
private Block bell;
2923
private LivingEntity pillager;
3024

3125
@Before
3226
public void setUp() {
33-
if (!canRun)
34-
return;
3527
this.bell = setBlock(Material.BELL);
3628
this.pillager = getTestWorld().spawn(bell.getLocation().add(0, 1, 0), Pillager.class);
3729
setShutdownDelay(1);
3830
}
3931

4032
@Test
4133
public void testEvents() {
42-
if (!canRun)
43-
return;
4434
Set<Event> events = new HashSet<>();
45-
if (Skript.classExists("org.bukkit.event.block.BellRingEvent")) {
46-
events.add(new BellRingEvent(this.bell, BlockFace.EAST, null));
47-
} else if (Skript.classExists("io.papermc.paper.event.block.BellRingEvent")) {
48-
try {
49-
events.add(io.papermc.paper.event.block.BellRingEvent.class.getConstructor(Block.class, Entity.class)
50-
.newInstance(this.bell, null));
51-
} catch (ReflectiveOperationException ignored) {
52-
}
53-
54-
}
55-
56-
if (Skript.classExists("org.bukkit.event.block.BellResonateEvent"))
57-
events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager)));
58-
35+
events.add(new BellRingEvent(this.bell, BlockFace.EAST, null));
36+
events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager)));
5937
for (Event event : events)
6038
Bukkit.getPluginManager().callEvent(event);
6139
}

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBreedTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.bukkit.Material;
66
import org.bukkit.entity.Pig;
77
import org.bukkit.entity.Player;
8+
import org.bukkit.event.entity.EntityBreedEvent;
89
import org.bukkit.inventory.ItemStack;
910
import org.easymock.EasyMock;
1011
import org.junit.After;
@@ -39,7 +40,7 @@ public void before() {
3940
@Test
4041
public void test() {
4142
Bukkit.getPluginManager().callEvent(
42-
new org.bukkit.event.entity.EntityBreedEvent(
43+
new EntityBreedEvent(
4344
child, mother, father, player, new ItemStack(Material.CARROT), 0));
4445
}
4546

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBucketEntityTest.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import ch.njol.skript.test.runner.SkriptJUnitTest;
44
import org.bukkit.Bukkit;
55
import org.bukkit.Material;
6-
import org.bukkit.entity.Cod;
7-
import org.bukkit.entity.Fish;
8-
import org.bukkit.entity.Player;
9-
import org.bukkit.entity.Salmon;
6+
import org.bukkit.entity.*;
107
import org.bukkit.event.player.PlayerBucketEntityEvent;
118
import org.bukkit.inventory.EquipmentSlot;
129
import org.bukkit.inventory.ItemStack;
@@ -26,8 +23,8 @@ public class EvtBucketEntityTest extends SkriptJUnitTest {
2623

2724
@Before
2825
public void setup() {
29-
salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class);
30-
cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class);
26+
salmon = spawnTestEntity(EntityType.SALMON);
27+
cod = spawnTestEntity(EntityType.COD);
3128
}
3229

3330
@Test

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFireworkTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
public class EvtFireworkTest extends SkriptJUnitTest {
2121

2222
private EntityType entityType;
23-
private List<Firework> fireworkList = new ArrayList<>();
23+
private final List<Firework> fireworkList = new ArrayList<>();
2424

2525
@Before
2626
public void getEntity() {
@@ -35,7 +35,7 @@ public void getEntity() {
3535
public void callEvents() {
3636
List<Event> events = new ArrayList<>();
3737
for (SkriptColor color : SkriptColor.values()) {
38-
Firework firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType);
38+
Firework firework = spawnTestEntity(entityType);
3939
FireworkEffect fireworkEffect = FireworkEffect.builder().withColor(color.asDyeColor().getFireworkColor()).build();
4040
FireworkMeta fireworkMeta = firework.getFireworkMeta();
4141
fireworkMeta.addEffects(fireworkEffect);

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFishTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.skriptlang.skript.test.tests.syntaxes.events;
22

3-
import ch.njol.skript.Skript;
43
import ch.njol.skript.test.runner.SkriptJUnitTest;
54
import org.bukkit.Bukkit;
65
import org.bukkit.entity.*;
@@ -22,8 +21,8 @@ public class EvtFishTest extends SkriptJUnitTest {
2221

2322
@Before
2423
public void setup() {
25-
salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class);
26-
cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class);
24+
salmon = spawnTestEntity(EntityType.SALMON);
25+
cod = spawnTestEntity(EntityType.COD);
2726
}
2827

2928
@Test

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtPiglinBarterTest.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.skriptlang.skript.test.tests.syntaxes.events;
22

3-
import ch.njol.skript.Skript;
43
import ch.njol.skript.test.runner.SkriptJUnitTest;
54
import org.bukkit.Bukkit;
65
import org.bukkit.Material;
7-
import org.bukkit.entity.Entity;
86
import org.bukkit.entity.EntityType;
7+
import org.bukkit.entity.Piglin;
8+
import org.bukkit.event.entity.PiglinBarterEvent;
99
import org.bukkit.inventory.ItemStack;
1010
import org.junit.After;
1111
import org.junit.Before;
@@ -16,42 +16,28 @@
1616

1717
public class EvtPiglinBarterTest extends SkriptJUnitTest {
1818

19-
private Entity piglin;
20-
private static final boolean canRun = Skript.classExists("org.bukkit.event.entity.PiglinBarterEvent");
19+
private Piglin piglin;
2120

2221
static {
2322
setShutdownDelay(1);
2423
}
2524

2625
@Before
2726
public void spawn() {
28-
if (!canRun)
29-
return;
30-
31-
piglin = getTestWorld().spawnEntity(getTestLocation(), EntityType.PIGLIN);
27+
piglin = spawnTestEntity(EntityType.PIGLIN);
3228
}
3329

3430
@Test
3531
public void testCall() {
36-
if (!canRun)
37-
return;
38-
3932
ItemStack input = new ItemStack(Material.GOLD_INGOT);
4033
List<ItemStack> outcome = new ArrayList<>();
4134
outcome.add(new ItemStack(Material.EMERALD));
4235

43-
try {
44-
Bukkit.getPluginManager().callEvent(
45-
new org.bukkit.event.entity.PiglinBarterEvent(
46-
(org.bukkit.entity.Piglin) piglin, input, outcome));
47-
} catch (NoClassDefFoundError ignored) { }
36+
Bukkit.getPluginManager().callEvent(new PiglinBarterEvent(piglin, input, outcome));
4837
}
4938

5039
@After
5140
public void remove() {
52-
if (!canRun)
53-
return;
54-
5541
piglin.remove();
5642
}
5743

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtVehicleCollisionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class EvtVehicleCollisionTest extends SkriptJUnitTest {
2222
@Before
2323
public void setUp() {
2424
pig = spawnTestPig();
25-
sheep = (Sheep) getTestWorld().spawnEntity(getTestLocation(), EntityType.SHEEP);
25+
sheep = spawnTestEntity(EntityType.SHEEP);
2626
old = getBlock().getType();
2727
setBlock(Material.OBSIDIAN);
2828
}

src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/PlayerElytraBoostEventTest.java

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,37 +30,30 @@ public void setUp() {
3030
entityType = EntityType.valueOf("FIREWORK_ROCKET");
3131
}
3232
assert entityType != null;
33-
firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType);
33+
firework = spawnTestEntity(entityType);
3434
firework.setTicksToDetonate(9999999);
3535
}
3636

3737
@Test
3838
public void test() {
39+
ItemStack rocket = new ItemStack(Material.FIREWORK_ROCKET);
3940
Constructor<?> constructor = null;
40-
boolean newerConstructor = false;
41+
Event event = null;
4142
try {
42-
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class);
43-
newerConstructor = true;
44-
} catch (Exception ignored) {
45-
try {
46-
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class);
47-
} catch (NoSuchMethodException e) {
48-
throw new IllegalStateException("No valid constructor for 'PlayerElytraBoostEvent'");
43+
constructor = PlayerElytraBoostEvent.class.getDeclaredConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class);
44+
event = (Event) constructor.newInstance(player, rocket, firework, EquipmentSlot.HAND);
45+
} catch (Exception ignored) {}
46+
if (constructor == null) {
47+
try {
48+
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class);
49+
event = (Event) constructor.newInstance(player, rocket, firework);
50+
} catch (Exception e) {
51+
throw new RuntimeException("No valid constructor for 'PlayerElytraBoostEvent'");
4952
}
5053
}
54+
assert event != null;
5155

52-
try {
53-
Event event;
54-
if (newerConstructor) {
55-
event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework, EquipmentSlot.HAND);
56-
} else {
57-
event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework);
58-
}
59-
60-
Bukkit.getPluginManager().callEvent(event);
61-
} catch (Exception e) {
62-
throw new RuntimeException("Unable to construct event.");
63-
}
56+
Bukkit.getPluginManager().callEvent(event);
6457
}
6558

6659
@After

0 commit comments

Comments
 (0)