/******************************************************************************* * Copyright (c) 2015 EfficiOS Inc. and others * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alexandre Montplaisir - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.tests.event; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.tracecompass.tmf.core.event.TmfEventField; import org.junit.After; import org.junit.Test; /** * Tests for the {@link TmfEventField#equals} method, when using complex types * of values. */ public class TmfEventFieldValueEqualsTest { private static final @NonNull String FIELD_NAME = "Field1"; private TmfEventField fField1; private TmfEventField fField2; /** Test cleanup */ @After public void tearDown() { fField1 = null; fField2 = null; } private void createFields(Object value1, Object value2) { fField1 = new TmfEventField(FIELD_NAME, value1, null); fField2 = new TmfEventField(FIELD_NAME, value2, null); } /** * Test with values being Object[] arrays. */ @Test public void testValueArrayObject() { Object object1 = new Object(); Object object2 = new Object(); assertNotEquals(object1, object2); Object[] value1 = new Object[] { object1, object2 }; Object[] value2 = new Object[] { object1, object2 }; assertNotEquals(value1, value2); assertTrue(Arrays.equals(value1, value2)); createFields(value1, value2); assertEquals(fField1, fField2); } /** * Test with values being primitive arrays. */ @Test public void testValueArrayPrimitives() { long[] value1 = new long[] { 10, 20 }; long[] value2 = new long[] { 10, 20 }; assertNotEquals(value1, value2); assertTrue(Arrays.equals(value1, value2)); createFields(value1, value2); assertEquals(fField1, fField2); } /** * Test with values being both primitive arrays, but different ones. */ @Test public void testValueArrayPrimitivesNotEquals() { long[] value1 = new long[] { 10, 20 }; long[] value2 = new long[] { 10, 30 }; createFields(value1, value2); assertNotEquals(fField1, fField2); } /** * Test with values being arrays of arrays of primitives. */ @Test public void testValueArrayOfArrays() { long[][] value1 = new long[][] { { 10, 20 }, { 10, 30 } }; long[][] value2 = new long[][] { { 10, 20 }, { 10, 30 } }; assertNotEquals(value1, value2); assertTrue(Arrays.deepEquals(value1, value2)); createFields(value1, value2); assertEquals(fField1, fField2); } /** * Test with values being arrays of arrays of primitives, in a case where * they are not equals. */ @Test public void testValueArrayOfArraysNotEquals() { long[][] value1 = new long[][] { { 10, 20 }, { 10, 30 } }; long[][] value2 = new long[][] { { 10, 20 }, { 15, 40 } }; assertNotEquals(value1, value2); assertFalse(Arrays.deepEquals(value1, value2)); createFields(value1, value2); assertNotEquals(fField1, fField2); } /** * Test with values being arrays, but of different element types. */ @Test public void testValueArrayMismatchedTypes() { Object[] value1 = new Object[] { new Object(), new Object() }; long[] value2 = new long[] { 10, 20 }; createFields(value1, value2); assertNotEquals(fField1, fField2); } /** * Test with values being one array, and one other standard type. */ @Test public void testValueArrayAndOther() { long[] value1 = new long[] { 10, 20 }; Integer value2 = Integer.valueOf(10); createFields(value1, value2); assertNotEquals(fField1, fField2); } }