@@ -0,0 +1,1773 @@
+package io.github.omskscream.ioc;%0A%0Aimport org.junit.Test;%0A%0Aimport java.util.List;%0A%0Aimport static org.junit.Assert.assertEquals;%0Aimport static org.junit.Assert.assertNotEquals;%0A%0A/**%0A * @author omskscream%0A */%0Apublic class IOCKeyTest %7B%0A    private final IOCKey k1 = IOCKey.of(Typed.STRING);%0A    private final IOCKey k2 = IOCKey.of(Typed.STRING);%0A    private final IOCKey k3 = IOCKey.of(%22name%22, Typed.STRING);%0A%0A    private final IOCKey k4 = IOCKey.of(Typed.INTEGER);%0A    private final IOCKey k5 = IOCKey.of(%22name%22, Typed.INTEGER);%0A%0A    private final IOCKey k6 = IOCKey.of(new Typed%3CList%3CString%3E%3E()%7B%7D);%0A    private final IOCKey k7 = IOCKey.of(new Typed%3CList%3CInteger%3E%3E()%7B%7D);%0A%0A    @Test%0A    public void equality() %7B%0A        assertEquals(k1, k2);       // keys with same Typed are equal%0A        assertEquals(k2, k1);       // symmetrically%0A%0A        assertNotEquals(k1, k3);    // but with different names they are not%0A        assertNotEquals(k1, k4);    // or with different Typed%0A        assertNotEquals(k1, k5);%0A        assertNotEquals(k1, k6);%0A        assertNotEquals(k4, k5);%0A        assertNotEquals(k5, k6);%0A        assertNotEquals(k6, k7);%0A        assertNotEquals(k3, k4);%0A        assertNotEquals(k3, k6);%0A        assertNotEquals(k3, k5);    // or with same name and different Typed%0A%0A    %7D%0A%0A    @Test%0A    public void hashes() %7B%0A        assertEquals(k1.hashCode(), k2.hashCode());%0A        assertNotEquals(k6.hashCode(), k7.hashCode());%0A%0A        assertNotEquals(k1.hashCode(), k3.hashCode());%0A        assertNotEquals(k1.hashCode(), k4.hashCode());%0A%0A        assertNotEquals(k4.hashCode(), k5.hashCode());%0A        assertNotEquals(k5.hashCode(), k6.hashCode());%0A        assertNotEquals(k1.hashCode(), k6.hashCode());%0A        assertNotEquals(k3.hashCode(), k6.hashCode());%0A    %7D%0A%7D%0A

Add test for IOCKey class