/* * Copyright (c) 2007-2008 Matthew Hall 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: * Matthew Hall - initial API and implementation */ package org.eclipse.nebula.paperclips.core.internal; import org.eclipse.nebula.paperclips.core.internal.util.Util; import junit.framework.TestCase; public class UtilTest extends TestCase { public void testSameClass_same() { Object o1 = new Object(); Object o2 = new Object(); assertTrue(Util.sameClass(o1, o2)); } public void testSameClass_different() { Object o1 = new Object(); Object o2 = new Object() { }; // subclass assertFalse(Util.sameClass(o1, o2)); assertFalse(Util.sameClass(null, o2)); assertFalse(Util.sameClass(o1, null)); } public void testEqual_equivalent() { Object o1 = new Stub(); Object o2 = new Stub(); assertTrue(Util.equal(o1, o2)); } public void testEqual_different() { Object o1 = new Object(); Object o2 = new Object(); assertFalse(Util.equal(o1, o2)); assertFalse(Util.equal(null, o2)); assertFalse(Util.equal(o1, null)); } public void testEqual_equivalentArray() { assertTrue(Util.equal(new byte[] { 0, 1 }, new byte[] { 0, 1 })); assertTrue(Util.equal(new short[] { 0, 1 }, new short[] { 0, 1 })); assertTrue(Util.equal(new int[] { 0, 1 }, new int[] { 0, 1 })); assertTrue(Util.equal(new long[] { 0, 1 }, new long[] { 0, 1 })); assertTrue(Util.equal(new char[] { 0, 1 }, new char[] { 0, 1 })); assertTrue(Util.equal(new float[] { 0, 1 }, new float[] { 0, 1 })); assertTrue(Util.equal(new double[] { 0, 1 }, new double[] { 0, 1 })); assertTrue(Util.equal(new boolean[] { false, true }, new boolean[] { false, true })); assertTrue(Util.equal(new Object[] { new Stub(), new Stub() }, new Object[] { new Stub(), new Stub() })); } public void testEqual_differentArray() { assertFalse(Util.equal(new byte[] { 0, 1 }, new byte[] { 0, 2 })); assertFalse(Util.equal(new short[] { 0, 1 }, new short[] { 0, 2 })); assertFalse(Util.equal(new int[] { 0, 1 }, new int[] { 0, 2 })); assertFalse(Util.equal(new long[] { 0, 1 }, new long[] { 0, 2 })); assertFalse(Util.equal(new char[] { 0, 1 }, new char[] { 0, 2 })); assertFalse(Util.equal(new float[] { 0, 1 }, new float[] { 0, 2 })); assertFalse(Util.equal(new double[] { 0, 1 }, new double[] { 0, 2 })); assertFalse(Util.equal(new boolean[] { false, true }, new boolean[] { false, false })); assertFalse(Util.equal(new Object[] { new Stub(), new Stub() }, new Object[] { new Stub(), new Object() })); } public void testEqual_equivalentNestedArray() { assertTrue(Util.equal(new Object[] { new Object[] { new Stub() } }, new Object[] { new Object[] { new Stub() } })); assertTrue(Util.equal(new int[][] { { 0, 1 } }, new int[][] { { 0, 1 } })); } public void testEqual_differentNestedArray() { assertFalse(Util.equal(new Object[] { new Object[] { new Stub() } }, new Object[] { new Object[] { new Object() } })); assertFalse(Util.equal(new int[][] { { 0, 1 } }, new int[][] { { 0, 2 } })); } public void testEqual_double() { assertTrue(Util.equal(2.0, 2.0)); assertFalse(Util.equal(2.0, 1.0)); } public class Stub { public boolean equals(Object obj) { return Util.sameClass(this, obj); } } }