package com.jcwhatever.nucleus.collections.players; import static org.junit.Assert.assertEquals; import com.jcwhatever.v1_8_R3.BukkitTester; import com.jcwhatever.nucleus.NucleusTest; import org.bukkit.entity.Player; import org.junit.BeforeClass; import org.junit.Test; import java.util.Collection; /* * */ public abstract class AbstractPlayerCollectionTest { /** * Make sure Nucleus and Bukkit are initialized. */ @BeforeClass public static void init() { NucleusTest.init(); } /** * Invoked to get a new collection instance for testing. */ protected abstract Collection<Player> getCollection(); /** * Make sure player is removed when they log out. */ @Test public void testPlayerRemoved1() { Collection<Player> collection = getCollection(); assertEquals(0, collection.size()); Player player1 = BukkitTester.login("playerCollectionTest1"); Player player2 = BukkitTester.login("playerCollectionTest2"); collection.add(player1); collection.add(player2); assertEquals(true, collection.contains(player1)); assertEquals(true, collection.contains(player2)); assertEquals(2, collection.size()); BukkitTester.pause(20); // make sure players are still in collection after waiting 20 ticks assertEquals(true, collection.contains(player1)); assertEquals(true, collection.contains(player2)); assertEquals(2, collection.size()); // logout player 1 BukkitTester.logout("playerCollectionTest1"); BukkitTester.pause(3); // make sure player1 was removed assertEquals(false, collection.contains(player1)); assertEquals(true, collection.contains(player2)); assertEquals(1, collection.size()); // kick player 2 BukkitTester.kick("playerCollectionTest2"); BukkitTester.pause(3); // make sure player2 was removed assertEquals(false, collection.contains(player1)); assertEquals(false, collection.contains(player2)); assertEquals(0, collection.size()); } }