package org.drooms.impl.util; import org.assertj.core.api.Assertions; import org.drooms.api.Player; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public class PlayerPropertiesTest { private static final Player PLAYER1 = new Player("name1", "some.strategies", "strategy-a", "1.0-SNAPSHOT"); private static final Player PLAYER2_SAME_GAV = new Player("name2", PLAYER1.getStrategyReleaseId()); private static final Player PLAYER3_DIFFERENT_VERSION = new Player("name3", PLAYER1.getStrategyReleaseId() .getGroupId(), PLAYER1.getStrategyReleaseId().getArtifactId(), "1.0"); private static final Player PLAYER4_SAME_GROUP_ID = new Player("name4", PLAYER1.getStrategyReleaseId().getGroupId(), "strategy-b", "1.0-SNAPSHOT"); private static final Player PLAYER5_ALL_DIFFERENT = new Player("name5", "other.strategies", "strategy-c", "1.0-SNAPSHOT"); @Test public void testRoundTrip() throws Exception { final Map<String, Player> players = Arrays.asList(PLAYER1, PLAYER2_SAME_GAV, PLAYER3_DIFFERENT_VERSION, PLAYER4_SAME_GROUP_ID, PLAYER5_ALL_DIFFERENT).stream().collect(Collectors.toMap(Player::getName, Function.identity())); final PlayerProperties props = new PlayerProperties(File.createTempFile("drooms-", ".test")); props.write(players.values()); final List<Player> retrievedPlayers = props.read(); // and now figure out the assertions Assertions.assertThat(retrievedPlayers).hasSameSizeAs(players.keySet()); retrievedPlayers.forEach(player -> { Assertions.assertThat(players.keySet()).contains(player.getName()); Assert.assertTrue("No such player in the original collection", players.containsKey(player.getName())); final Player originalPlayer = players.get(player.getName()); Assertions.assertThat(player.getStrategyReleaseId()).isEqualTo(originalPlayer.getStrategyReleaseId()); }); } }