package org.infinispan.persistence.keymappers; import org.testng.annotations.Test; @Test(groups = "unit", testName = "persistence.keymappers.DefaultTwoWayKey2StringMapperTest") public class DefaultTwoWayKey2StringMapperTest { DefaultTwoWayKey2StringMapper mapper = new DefaultTwoWayKey2StringMapper(); public void testKeyMapper() { String skey = mapper.getStringMapping("k1"); assert skey.equals("k1"); skey = mapper.getStringMapping(Integer.valueOf(100)); assert !skey.equals("100"); Integer i = (Integer) mapper.getKeyMapping(skey); assert i == 100; skey = mapper.getStringMapping(Boolean.TRUE); assert !skey.equalsIgnoreCase("true"); Boolean b = (Boolean) mapper.getKeyMapping(skey); assert b; skey = mapper.getStringMapping(Double.valueOf(3.141592d)); assert !skey.equals("3.141592"); Double d = (Double) mapper.getKeyMapping(skey); assert d == 3.141592d; } public void testPrimitivesAreSupported() { assert mapper.isSupportedType(Integer.class); assert mapper.isSupportedType(Byte.class); assert mapper.isSupportedType(Short.class); assert mapper.isSupportedType(Long.class); assert mapper.isSupportedType(Double.class); assert mapper.isSupportedType(Float.class); assert mapper.isSupportedType(Boolean.class); assert mapper.isSupportedType(String.class); } public void testTwoWayContract() { Object[] toTest = { 0, new Byte("1"), new Short("2"), (long) 3, new Double("3.4"), new Float("3.5"), Boolean.FALSE, "some string" }; for (Object o : toTest) { Class<?> type = o.getClass(); String rep = mapper.getStringMapping(o); assert o.equals(mapper.getKeyMapping(rep)) : String.format("Failed on type %s and value %s", type, rep); } } public void testAssumption() { // even if they have the same value, they have a different type assert !new Float(3.0f).equals(new Integer(3)); } public void testString() { assert mapper.isSupportedType(String.class); assert assertWorks("") : "Expected empty string, was " + mapper.getStringMapping(""); assert assertWorks("mircea") : "Expected 'mircea', was " + mapper.getStringMapping("mircea"); } public void testShort() { assert mapper.isSupportedType(Short.class); assert assertWorks((short) 2); } public void testByte() { assert mapper.isSupportedType(Byte.class); assert assertWorks((byte) 2); } public void testLong() { assert mapper.isSupportedType(Long.class); assert assertWorks(new Long(2)); } public void testInteger() { assert mapper.isSupportedType(Integer.class); assert assertWorks(2); } public void testDouble() { assert mapper.isSupportedType(Double.class); assert assertWorks(2.4d); } public void testFloat() { assert mapper.isSupportedType(Float.class); assert assertWorks(2.1f); } public void testBoolean() { assert mapper.isSupportedType(Boolean.class); assert assertWorks(true); assert assertWorks(false); } private boolean assertWorks(Object key) { return mapper.getKeyMapping(mapper.getStringMapping(key)).equals(key); } }