1 17 package org.alfresco.service.cmr.repository.datatype; 18 19 import java.math.BigDecimal ; 20 import java.math.BigInteger ; 21 import java.util.ArrayList ; 22 import java.util.Date ; 23 import java.util.Iterator ; 24 25 import junit.framework.TestCase; 26 27 import org.alfresco.util.CachingDateFormat; 28 29 public class ValueConverterTest extends TestCase 30 { 31 32 public ValueConverterTest() 33 { 34 super(); 35 } 36 37 public ValueConverterTest(String arg0) 38 { 39 super(arg0); 40 } 41 42 public void testPrimitives() 43 { 44 assertEquals(Boolean.valueOf(false), ValueConverter.convert(Boolean .class, false)); 45 assertEquals(Boolean.valueOf(true), ValueConverter.convert(Boolean .class, true)); 46 assertEquals(Character.valueOf('a'), ValueConverter.convert(Character .class, 'a')); 47 assertEquals(Byte.valueOf("3"), ValueConverter.convert(Byte .class, (byte) 3)); 48 assertEquals(Short.valueOf("4"), ValueConverter.convert(Short .class, (short) 4)); 49 assertEquals(Integer.valueOf("5"), ValueConverter.convert(Integer .class, (int) 5)); 50 assertEquals(Long.valueOf("6"), ValueConverter.convert(Long .class, (long) 6)); 51 assertEquals(Float.valueOf("7.1"), ValueConverter.convert(Float .class, (float) 7.1)); 52 assertEquals(Double.valueOf("123.123"), ValueConverter.convert(Double .class, (double) 123.123)); 53 } 54 55 public void testNoConversion() 56 { 57 assertEquals(Boolean.valueOf(false), ValueConverter.convert(Boolean .class, Boolean.valueOf(false))); 58 assertEquals(Boolean.valueOf(true), ValueConverter.convert(Boolean .class, Boolean.valueOf(true))); 59 assertEquals(Character.valueOf('w'), ValueConverter.convert(Character .class, Character.valueOf('w'))); 60 assertEquals(Byte.valueOf("3"), ValueConverter.convert(Byte .class, Byte.valueOf("3"))); 61 assertEquals(Short.valueOf("4"), ValueConverter.convert(Short .class, Short.valueOf("4"))); 62 assertEquals(Integer.valueOf("5"), ValueConverter.convert(Integer .class, Integer.valueOf("5"))); 63 assertEquals(Long.valueOf("6"), ValueConverter.convert(Long .class, Long.valueOf("6"))); 64 assertEquals(Float.valueOf("7.1"), ValueConverter.convert(Float .class, Float.valueOf("7.1"))); 65 assertEquals(Double.valueOf("123.123"), ValueConverter.convert(Double .class, Double.valueOf("123.123"))); 66 assertEquals(Double.valueOf("123.123"), ValueConverter.convert(Double .class, Double.valueOf("123.123"))); 67 assertEquals(new BigInteger ("1234567890123456789"), ValueConverter.convert(BigInteger .class, new BigInteger ("1234567890123456789"))); 68 assertEquals(new BigDecimal ("12345678901234567890.12345678901234567890"), ValueConverter.convert(BigDecimal .class, new BigDecimal ("12345678901234567890.12345678901234567890"))); 69 Date date = new Date (); 70 assertEquals(date, ValueConverter.convert(Date .class, date)); 71 assertEquals(new Duration("P25D"), ValueConverter.convert(Duration.class, new Duration("P25D"))); 72 assertEquals("woof", ValueConverter.convert(String .class, "woof")); 73 } 74 75 public void testToString() 76 { 77 assertEquals("true", ValueConverter.convert(String .class, new Boolean (true))); 78 assertEquals("false", ValueConverter.convert(String .class, new Boolean (false))); 79 assertEquals("v", ValueConverter.convert(String .class, Character.valueOf('v'))); 80 assertEquals("3", ValueConverter.convert(String .class, Byte.valueOf("3"))); 81 assertEquals("4", ValueConverter.convert(String .class, Short.valueOf("4"))); 82 assertEquals("5", ValueConverter.convert(String .class, Integer.valueOf("5"))); 83 assertEquals("6", ValueConverter.convert(String .class, Long.valueOf("6"))); 84 assertEquals("7.1", ValueConverter.convert(String .class, Float.valueOf("7.1"))); 85 assertEquals("123.123", ValueConverter.convert(String .class, Double.valueOf("123.123"))); 86 assertEquals("1234567890123456789", ValueConverter.convert(String .class, new BigInteger ("1234567890123456789"))); 87 assertEquals("12345678901234567890.12345678901234567890", ValueConverter.convert(String .class, new BigDecimal ("12345678901234567890.12345678901234567890"))); 88 Date date = new Date (); 89 assertEquals(CachingDateFormat.getDateFormat().format(date), ValueConverter.convert(String .class, date)); 90 assertEquals("P0Y25D", ValueConverter.convert(String .class, new Duration("P0Y25D"))); 91 assertEquals("woof", ValueConverter.convert(String .class, "woof")); 92 } 93 94 public void testFromString() 95 { 96 assertEquals(Boolean.valueOf(true), ValueConverter.convert(Boolean .class, "True")); 97 assertEquals(Boolean.valueOf(false), ValueConverter.convert(Boolean .class, "woof")); 98 assertEquals(Character.valueOf('w'), ValueConverter.convert(Character .class, "w")); 99 assertEquals(Byte.valueOf("3"), ValueConverter.convert(Byte .class, "3")); 100 assertEquals(Short.valueOf("4"), ValueConverter.convert(Short .class, "4")); 101 assertEquals(Integer.valueOf("5"), ValueConverter.convert(Integer .class, "5")); 102 assertEquals(Long.valueOf("6"), ValueConverter.convert(Long .class, "6")); 103 assertEquals(Float.valueOf("7.1"), ValueConverter.convert(Float .class, "7.1")); 104 assertEquals(Double.valueOf("123.123"), ValueConverter.convert(Double .class, "123.123")); 105 assertEquals(new BigInteger ("1234567890123456789"), ValueConverter.convert(BigInteger .class, "1234567890123456789")); 106 assertEquals(new BigDecimal ("12345678901234567890.12345678901234567890"), ValueConverter.convert(BigDecimal .class, "12345678901234567890.12345678901234567890")); 107 assertEquals("2004-03-12T00:00:00", CachingDateFormat.getDateFormat().format(ValueConverter.convert(Date .class, "2004-03-12T00:00:00"))); 108 assertEquals(new Duration("P25D"), ValueConverter.convert(Duration.class, "P25D")); 109 assertEquals("woof", ValueConverter.convert(String .class, "woof")); 110 } 111 112 public void testPrimativeAccessors() 113 { 114 assertEquals(false, ValueConverter.convert(Boolean .class, false).booleanValue()); 115 assertEquals(true, ValueConverter.convert(Boolean .class, true).booleanValue()); 116 assertEquals('a', ValueConverter.convert(Character .class, 'a').charValue()); 117 assertEquals((byte) 3, ValueConverter.convert(Byte .class, (byte) 3).byteValue()); 118 assertEquals((short) 4, ValueConverter.convert(Short .class, (short) 4).shortValue()); 119 assertEquals((int) 5, ValueConverter.convert(Integer .class, (int) 5).intValue()); 120 assertEquals((long) 6, ValueConverter.convert(Long .class, (long) 6).longValue()); 121 assertEquals((float) 7.1, ValueConverter.convert(Float .class, (float) 7.1).floatValue()); 122 assertEquals((double) 123.123, ValueConverter.convert(Double .class, (double) 123.123).doubleValue()); 123 } 124 125 public void testInterConversions() 126 { 127 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Byte.valueOf("1"))); 128 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Byte.valueOf("2"))); 129 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Byte.valueOf("3"))); 130 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Byte.valueOf("4"))); 131 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Byte.valueOf("5"))); 132 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Byte.valueOf("6"))); 133 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Byte.valueOf("7"))); 134 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Byte.valueOf("8"))); 135 136 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Short.valueOf("1"))); 137 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Short.valueOf("2"))); 138 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Short.valueOf("3"))); 139 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Short.valueOf("4"))); 140 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Short.valueOf("5"))); 141 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Short.valueOf("6"))); 142 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Short.valueOf("7"))); 143 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Short.valueOf("8"))); 144 145 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Integer.valueOf("1"))); 146 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Integer.valueOf("2"))); 147 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Integer.valueOf("3"))); 148 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Integer.valueOf("4"))); 149 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Integer.valueOf("5"))); 150 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Integer.valueOf("6"))); 151 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Integer.valueOf("7"))); 152 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Integer.valueOf("8"))); 153 154 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Long.valueOf("1"))); 155 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Long.valueOf("2"))); 156 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Long.valueOf("3"))); 157 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Long.valueOf("4"))); 158 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Long.valueOf("5"))); 159 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Long.valueOf("6"))); 160 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Long.valueOf("7"))); 161 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Long.valueOf("8"))); 162 163 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Float.valueOf("1"))); 164 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Float.valueOf("2"))); 165 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Float.valueOf("3"))); 166 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Float.valueOf("4"))); 167 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Float.valueOf("5"))); 168 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Float.valueOf("6"))); 169 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Float.valueOf("7"))); 170 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Float.valueOf("8"))); 171 172 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, Double.valueOf("1"))); 173 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, Double.valueOf("2"))); 174 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, Double.valueOf("3"))); 175 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, Double.valueOf("4"))); 176 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, Double.valueOf("5"))); 177 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, Double.valueOf("6"))); 178 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, Double.valueOf("7"))); 179 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, Double.valueOf("8"))); 180 181 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, new BigInteger ("1"))); 182 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, new BigInteger ("2"))); 183 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, new BigInteger ("3"))); 184 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, new BigInteger ("4"))); 185 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, new BigInteger ("5"))); 186 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, new BigInteger ("6"))); 187 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, new BigInteger ("7"))); 188 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, new BigInteger ("8"))); 189 190 assertEquals(Byte.valueOf("1"), ValueConverter.convert(Byte .class, new BigDecimal ("1"))); 191 assertEquals(Short.valueOf("2"), ValueConverter.convert(Short .class, new BigDecimal ("2"))); 192 assertEquals(Integer.valueOf("3"), ValueConverter.convert(Integer .class, new BigDecimal ("3"))); 193 assertEquals(Long.valueOf("4"), ValueConverter.convert(Long .class, new BigDecimal ("4"))); 194 assertEquals(Float.valueOf("5"), ValueConverter.convert(Float .class, new BigDecimal ("5"))); 195 assertEquals(Double.valueOf("6"), ValueConverter.convert(Double .class, new BigDecimal ("6"))); 196 assertEquals(new BigInteger ("7"), ValueConverter.convert(BigInteger .class, new BigDecimal ("7"))); 197 assertEquals(new BigDecimal ("8"), ValueConverter.convert(BigDecimal .class, new BigDecimal ("8"))); 198 } 199 200 public void testDate() 201 { 202 Date date = new Date (101); 203 204 assertEquals(Byte.valueOf("101"), ValueConverter.convert(Byte .class, date)); 205 assertEquals(Short.valueOf("101"), ValueConverter.convert(Short .class, date)); 206 assertEquals(Integer.valueOf("101"), ValueConverter.convert(Integer .class, date)); 207 assertEquals(Long.valueOf("101"), ValueConverter.convert(Long .class, date)); 208 assertEquals(Float.valueOf("101"), ValueConverter.convert(Float .class, date)); 209 assertEquals(Double.valueOf("101"), ValueConverter.convert(Double .class, date)); 210 assertEquals(new BigInteger ("101"), ValueConverter.convert(BigInteger .class, date)); 211 assertEquals(new BigDecimal ("101"), ValueConverter.convert(BigDecimal .class, date)); 212 213 assertEquals(date, ValueConverter.convert(Date .class, (byte)101)); 214 assertEquals(date, ValueConverter.convert(Date .class, (short)101)); 215 assertEquals(date, ValueConverter.convert(Date .class, (int)101)); 216 assertEquals(date, ValueConverter.convert(Date .class, (long)101)); 217 assertEquals(date, ValueConverter.convert(Date .class, (float)101)); 218 assertEquals(date, ValueConverter.convert(Date .class, (double)101)); 219 220 assertEquals(date, ValueConverter.convert(Date .class, new BigInteger ("101"))); 221 assertEquals(date, ValueConverter.convert(Date .class, (Object )(new BigDecimal ("101")))); 222 223 assertEquals(101, ValueConverter.intValue(date)); 224 } 225 226 public void testMultiValue() 227 { 228 ArrayList <Object > list = makeList(); 229 230 assertEquals(true, ValueConverter.isMultiValued(list)); 231 assertEquals(14, ValueConverter.size(list)); 232 233 for(Iterator <String > it = ValueConverter.iterator(String .class, list); it.hasNext(); ) 234 { 235 System.out.println("Value is "+it.next()); 236 } 237 238 for(String stringValue: ValueConverter.getCollection(String .class, list)) 239 { 240 System.out.println("Value is "+stringValue); 241 } 242 243 } 244 245 private ArrayList <Object > makeList() 246 { 247 ArrayList <Object > list = new ArrayList <Object >(); 248 list.add(Boolean.valueOf(true)); 249 list.add(Boolean.valueOf(false)); 250 list.add(Character.valueOf('q')); 251 list.add(Byte.valueOf("1")); 252 list.add(Short.valueOf("2")); 253 list.add(Integer.valueOf("3")); 254 list.add(Long.valueOf("4")); 255 list.add(Float.valueOf("5")); 256 list.add(Double.valueOf("6")); 257 list.add(new BigInteger ("7")); 258 list.add(new BigDecimal ("8")); 259 list.add(new Date ()); 260 list.add(new Duration("P5Y0M")); 261 list.add("Hello mum"); 262 return list; 263 } 264 265 public void testSingleValuseAsMultiValue() 266 { 267 Integer integer = Integer.valueOf(43); 268 269 assertEquals(false, ValueConverter.isMultiValued(integer)); 270 assertEquals(1, ValueConverter.size(integer)); 271 272 for(Iterator <String > it = ValueConverter.iterator(String .class, integer); it.hasNext(); ) 273 { 274 System.out.println("Value is "+it.next()); 275 } 276 277 for(String stringValue: ValueConverter.getCollection(String .class, integer)) 278 { 279 System.out.println("Value is "+stringValue); 280 } 281 282 } 283 284 public void testMultiAsSingle() 285 { 286 ArrayList <Object > list = makeList(); 287 assertEquals(true, ValueConverter.convert(Boolean .class, list).booleanValue()); 288 } 289 290 public void testNullAndEmpty() 291 { 292 assertNull(ValueConverter.convert(Boolean .class, null)); 293 ArrayList <Object > list = new ArrayList <Object >(); 294 assertNull(ValueConverter.convert(Boolean .class, list)); 295 list.add(null); 296 assertNull(ValueConverter.convert(Boolean .class, list)); 297 298 } 299 } 300 | Popular Tags |