package com.revolsys.datatype; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; public class DataTypeTest { protected void assertEquals(final DataType dataType, final Object value1, final Object value2) { final String label = value1 + "=" + value2; Assert.assertTrue(label, dataType.equals(value1, value2)); Assert.assertTrue(label, dataType.equals(value2, value1)); Assert.assertTrue(label, DataType.equal(value1, value2)); } protected void assertEqualsValues(final DataType dataType, final Object... values) { for (final Object value : values) { assertEquals(dataType, value, value); assertEquals(dataType, value, dataType.toString(value)); assertNotEquals(dataType, value, "~"); assertNotEquals(dataType, value, null); } } protected void assertNotEquals(final DataType dataType, final Object value1, final Object value2) { final String label = value1 + "!=" + value2; Assert.assertFalse(label, dataType.equals(value1, value2)); Assert.assertFalse(label, dataType.equals(value2, value1)); Assert.assertFalse(label, DataType.equal(value1, value2)); } public void assertNumberEquals(final DataType dataType, final Object min, final Object max, final Object invalid) { assertEquals(dataType, min, min); assertEquals(dataType, min, String.valueOf(min)); assertEquals(dataType, max, max); assertEquals(dataType, max, String.valueOf(max)); } @Test public void testBoolean() { for (final Object falseValue : Arrays.asList(false, "fAlse", "n", "0")) { assertEquals(DataTypes.BOOLEAN, false, falseValue); assertNotEquals(DataTypes.BOOLEAN, true, "x"); } for (final Object trueValue : Arrays.asList(true, "tRue", "y", "1")) { assertEquals(DataTypes.BOOLEAN, true, trueValue); assertNotEquals(DataTypes.BOOLEAN, false, trueValue); assertNotEquals(DataTypes.BOOLEAN, false, "x"); } } @Test public void testByte() { assertEqualsValues(DataTypes.BYTE, Byte.MIN_VALUE, Byte.MAX_VALUE); } @Test public void testDouble() { assertEqualsValues(DataTypes.DOUBLE, -Double.MAX_VALUE, Double.MAX_VALUE, Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, Double.NaN); } @Test public void testFloat() { assertEqualsValues(DataTypes.FLOAT, -Float.MAX_VALUE, Float.MAX_VALUE, Float.NaN, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NaN); } @Test public void testInt() { assertEqualsValues(DataTypes.INT, Integer.MIN_VALUE, Integer.MAX_VALUE); } @Test public void testLong() { assertEqualsValues(DataTypes.LONG, Long.MIN_VALUE, Long.MAX_VALUE); } @Test public void testShort() { assertEqualsValues(DataTypes.SHORT, Short.MIN_VALUE, Short.MAX_VALUE); } }