package net.zomis.cardshifter.ecs;
import static org.junit.Assert.*;
import org.junit.Test;
import com.cardshifter.modapi.base.ComponentRetriever;
import com.cardshifter.modapi.base.ECSGame;
import com.cardshifter.modapi.base.ECSSystem;
import com.cardshifter.modapi.base.Entity;
import com.cardshifter.modapi.base.PlayerComponent;
import com.cardshifter.modapi.base.Retriever;
import com.cardshifter.modapi.base.RetrieverSingleton;
import com.cardshifter.modapi.base.Retrievers;
import com.cardshifter.modapi.phase.Phase;
import com.cardshifter.modapi.phase.PhaseController;
public class InjectionTest {
@RetrieverSingleton
private PhaseController phases;
@Retriever
private ComponentRetriever<PlayerComponent> playerData;
private int test;
@Test
public void injectOnAdd() {
ECSGame game = new ECSGame();
game.newEntity().addComponent(new PlayerComponent(21, "Test"));
game.addSystem(new ECSSystem() {
@RetrieverSingleton
private PlayerComponent player;
@Override
public void startGame(ECSGame game) {
assertEquals(21, player.getIndex());
test++;
}
});
game.startGame();
assertEquals(1, test);
}
@Test
public void inject() {
ECSGame game = new ECSGame();
PhaseController phase = new PhaseController();
phase.addPhase(new Phase(null, "Main"));
game.newEntity().addComponent(phase);
Entity player = game.newEntity().addComponent(new PlayerComponent(42, "Tester"));
Retrievers.inject(this, game);
assertEquals(42, playerData.get(player).getIndex());
assertEquals(phase, phases);
assertEquals("Main", phases.getCurrentPhase().getName());
}
}