/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.linkedin.pinot.common.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.testng.Assert; import org.testng.annotations.Test; public class EqualityUtilsTest { @Test public void testPrimitiveType() { Assert.assertTrue(EqualityUtils.isEqual(Float.NaN, Float.NaN)); Assert.assertTrue(EqualityUtils.isEqual(Double.NaN, Double.NaN)); } @Test public void testObjectArray() { Integer[] integerArray1 = {1}; Integer[] integerArray1Copy = {1}; Integer[] integerArray2 = {1, 2}; Assert.assertFalse(EqualityUtils.isSameReference(integerArray1, integerArray1Copy)); Assert.assertTrue(EqualityUtils.isEqual(integerArray1, integerArray1Copy)); Assert.assertFalse(EqualityUtils.isEqual(integerArray1, integerArray2)); } @Test public void testListObject() { List<Integer> list1 = Arrays.asList(1, 2); List<Integer> list1Copy = Arrays.asList(1, 2); List<Integer> list2 = Arrays.asList(2, 1); Assert.assertFalse(EqualityUtils.isSameReference(list1, list1Copy)); Assert.assertTrue(EqualityUtils.isEqual(list1, list1Copy)); Assert.assertFalse(EqualityUtils.isEqual(list1, list2)); Assert.assertTrue(EqualityUtils.isEqualIgnoreOrder(list1, list2)); } @Test public void testSetObject() { Set<Integer> set1 = Collections.singleton(1); Set<Integer> set1Copy = Collections.singleton(1); Set<Long> set2 = Collections.singleton(1L); Assert.assertFalse(EqualityUtils.isSameReference(set1, set1Copy)); Assert.assertTrue(EqualityUtils.isEqual(set1, set1Copy)); Assert.assertFalse(EqualityUtils.isEqual(set1, set2)); } @Test public void testMapObject() { Map<Integer, Integer> map1 = new HashMap<>(); map1.put(1, 1); Map<Integer, Integer> map1Copy = new HashMap<>(); map1Copy.put(1, 1); Map<Long, Integer> map2 = new HashMap<>(); map2.put(1L, 1); Assert.assertFalse(EqualityUtils.isSameReference(map1, map1Copy)); Assert.assertTrue(EqualityUtils.isEqual(map1, map1Copy)); Assert.assertFalse(EqualityUtils.isEqual(map1, map2)); } @Test public void testNull() { List list = new ArrayList(); Assert.assertTrue(EqualityUtils.isEqual(null, null)); Assert.assertTrue(EqualityUtils.isEqualIgnoreOrder(null, null)); Assert.assertTrue(EqualityUtils.isSameReference(null, null)); Assert.assertFalse(EqualityUtils.isEqual(list, null)); Assert.assertFalse(EqualityUtils.isEqualIgnoreOrder(list, null)); Assert.assertFalse(EqualityUtils.isSameReference(list, null)); Assert.assertTrue(EqualityUtils.isNullOrNotSameClass(list, null)); Assert.assertEquals(EqualityUtils.hashCodeOf(null), 0); } }