blob: 55666e22702f3671e2b176a2dca8c44be4873f27 [file] [log] [blame]
/*******************************************************************************
* 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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* 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);
}
}