package com.nicewuerfel.blockown; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; public class TestUser { private static List<UUID> ids; @BeforeClass public static void init() { Set<UUID> ids = new HashSet<>(40); for (int i = 0; i < 20; i++) { if (!ids.add(UUID.randomUUID())) { i--; } } TestUser.ids = Collections.unmodifiableList(listFromSet(ids)); } private static <T> List<T> listFromSet(Set<T> ids) { List<T> list = new ArrayList<>(ids.size()); list.addAll(ids); return list; } @Rule public ExpectedException expected = ExpectedException.none(); @Test public void testIntegrity() { assertEquals(0, User.class.getConstructors().length); User u1 = User.getInstance(ids.get(0)); User u1_2 = User.getInstance(ids.get(0)); User u2 = User.getInstance(ids.get(1)); assertSame(u1, u1_2); assertNotSame(u1, u2); User u2_2 = User.getInstance(ids.get(1), null); assertSame(u2_2, u2); expected.expect(NullPointerException.class); @SuppressWarnings("unused") User noob = User.getInstance(null); } @Test public void testEquals() { User u1 = User.getInstance(ids.get(0)); User u1_2 = User.getInstance(ids.get(0)); User u1_3 = User.getInstance(ids.get(0)); User u2 = User.getInstance(ids.get(1)); // Integrity assertFalse(u1.equals(u2)); assertFalse(u2.equals(u1)); // Reflexivity assertTrue(u1.equals(u1)); // Transivity assertTrue(u1.equals(u1_2)); assertTrue(u1_2.equals(u1_3)); assertTrue(u1.equals(u1_3)); // Symmetry assertTrue(u1.equals(u1_2)); assertTrue(u1_2.equals(u1)); assertFalse(u1.equals(u2)); assertFalse(u2.equals(u1)); } @Test public void testHashCode() { User u1 = User.getInstance(ids.get(0)); User u1_2 = User.getInstance(ids.get(0)); User u2 = User.getInstance(ids.get(1)); assertEquals(u1.hashCode(), u1_2.hashCode()); assertEquals(u2.hashCode(), u2.hashCode()); } @Test public void testToString() { // Just to make sure no NullPointers are thrown User u1 = User.getInstance(ids.get(0)); u1.toString(); } }