package com.orientechnologies.common.util; import org.testng.annotations.Test; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; import static org.testng.Assert.*; @Test public class OMultiKeyTest { @Test public void testEqualsDifferentSize() { final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); final OMultiKey anotherMultiKey = new OMultiKey(Arrays.asList(new String[]{"a", "b"})); assertFalse(multiKey.equals(anotherMultiKey)); } @Test public void testEqualsDifferentItems() { final OMultiKey multiKey = new OMultiKey(Arrays.asList(new String[]{"b", "c"})); final OMultiKey anotherMultiKey = new OMultiKey(Arrays.asList(new String[]{"a", "b"})); assertFalse(multiKey.equals(anotherMultiKey)); } @Test public void testEqualsTheSame() { final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); assertTrue(multiKey.equals(multiKey)); } @Test public void testEqualsNull() { final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); assertFalse(multiKey.equals(null)); } @Test public void testEqualsDifferentClass() { final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); assertFalse(multiKey.equals("a")); } @Test public void testEmptyKeyEquals() { final Map<OMultiKey, Object> multiKeyMap = new HashMap<OMultiKey, Object>(); final OMultiKey multiKey = new OMultiKey(Collections.emptyList()); multiKeyMap.put(multiKey, new Object()); final OMultiKey anotherMultiKey = new OMultiKey(Collections.emptyList()); final Object mapResult = multiKeyMap.get(anotherMultiKey); assertNotNull(mapResult); } @Test public void testOneKeyMap() { final Map<OMultiKey, Object> multiKeyMap = new HashMap<OMultiKey, Object>(); final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); multiKeyMap.put(multiKey, new Object()); final OMultiKey anotherMultiKey = new OMultiKey(Collections.singletonList("a")); final Object mapResult = multiKeyMap.get(anotherMultiKey); assertNotNull(mapResult); } @Test public void testOneKeyNotInMap() { final Map<OMultiKey, Object> multiKeyMap = new HashMap<OMultiKey, Object>(); final OMultiKey multiKey = new OMultiKey(Collections.singletonList("a")); multiKeyMap.put(multiKey, new Object()); final OMultiKey anotherMultiKey = new OMultiKey(Collections.singletonList("b")); final Object mapResult = multiKeyMap.get(anotherMultiKey); assertNull(mapResult); } @Test public void testTwoKeyMap() { final Map<OMultiKey, Object> multiKeyMap = new HashMap<OMultiKey, Object>(); final OMultiKey multiKey = new OMultiKey(Arrays.asList(new String[]{"a", "b"})); multiKeyMap.put(multiKey, new Object()); final OMultiKey anotherMultiKey = new OMultiKey(Arrays.asList(new String[]{"a", "b"})); final Object mapResult = multiKeyMap.get(anotherMultiKey); assertNotNull(mapResult); } @Test public void testTwoKeyMapReordered() { final Map<OMultiKey, Object> multiKeyMap = new HashMap<OMultiKey, Object>(); final OMultiKey multiKey = new OMultiKey(Arrays.asList(new String[]{"a", "b"})); multiKeyMap.put(multiKey, new Object()); final OMultiKey anotherMultiKey = new OMultiKey(Arrays.asList(new String[]{"b", "a"})); final Object mapResult = multiKeyMap.get(anotherMultiKey); assertNotNull(mapResult); } }