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);
}
}