@@ -99,14 +99,14 @@ public void testConversionToLong() {
9999 {
100100 Conversion conversion = conversionFor (DATE , to );
101101 assertNull (conversion .convert (null ));
102- assertEquals (123379200L , conversion .convert (DateUtils .asDateOnly (123456789101L )));
103- assertEquals (-123465600L , conversion .convert (DateUtils .asDateOnly (-123456789101L )));
102+ assertEquals (123379200000L , conversion .convert (DateUtils .asDateOnly (123456789101L )));
103+ assertEquals (-123465600000L , conversion .convert (DateUtils .asDateOnly (-123456789101L )));
104104 }
105105 {
106106 Conversion conversion = conversionFor (DATETIME , to );
107107 assertNull (conversion .convert (null ));
108- assertEquals (123456789L , conversion .convert (asDateTime (123456789101L )));
109- assertEquals (-123456790L , conversion .convert (asDateTime (-123456789101L )));
108+ assertEquals (123456789101L , conversion .convert (asDateTime (123456789101L )));
109+ assertEquals (-123456789101L , conversion .convert (asDateTime (-123456789101L )));
110110 }
111111 {
112112 Conversion conversion = conversionFor (KEYWORD , to );
@@ -238,14 +238,14 @@ public void testConversionToDouble() {
238238 {
239239 Conversion conversion = conversionFor (DATE , to );
240240 assertNull (conversion .convert (null ));
241- assertEquals (1.233792E8 , (double ) conversion .convert (DateUtils .asDateOnly (123456789101L )), 0 );
242- assertEquals (-1.234656E8 , (double ) conversion .convert (DateUtils .asDateOnly (-123456789101L )), 0 );
241+ assertEquals (1.233792E11 , (double ) conversion .convert (DateUtils .asDateOnly (123456789101L )), 0 );
242+ assertEquals (-1.234656E11 , (double ) conversion .convert (DateUtils .asDateOnly (-123456789101L )), 0 );
243243 }
244244 {
245245 Conversion conversion = conversionFor (DATETIME , to );
246246 assertNull (conversion .convert (null ));
247- assertEquals (1.23456789E8 , (double ) conversion .convert (asDateTime (123456789101L )), 0 );
248- assertEquals (-1.2345679E8 , (double ) conversion .convert (asDateTime (-123456789101L )), 0 );
247+ assertEquals (1.23456789101E11 , (double ) conversion .convert (asDateTime (123456789101L )), 0 );
248+ assertEquals (-1.23456789101E11 , (double ) conversion .convert (asDateTime (-123456789101L )), 0 );
249249 }
250250 {
251251 Conversion conversion = conversionFor (KEYWORD , to );
@@ -340,39 +340,80 @@ public void testConversionToInt() {
340340 {
341341 Conversion conversion = conversionFor (DATE , to );
342342 assertNull (conversion .convert (null ));
343- assertEquals (123379200 , conversion .convert (DateUtils .asDateOnly (123456789101L )));
344- assertEquals (-123465600 , conversion .convert (DateUtils .asDateOnly (-123456789101L )));
343+ assertEquals (0 , conversion .convert (DateUtils .asDateOnly (12345678L )));
344+ assertEquals (86400000 , conversion .convert (DateUtils .asDateOnly (123456789L )));
345+ assertEquals (172800000 , conversion .convert (DateUtils .asDateOnly (223456789L )));
346+ assertEquals (-172800000 , conversion .convert (DateUtils .asDateOnly (-123456789L )));
347+ Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (DateUtils .asDateOnly (Long .MAX_VALUE )));
348+ assertEquals ("[9223372036828800000] out of [integer] range" , e .getMessage ());
345349 }
346350 {
347351 Conversion conversion = conversionFor (DATETIME , to );
348352 assertNull (conversion .convert (null ));
349- assertEquals (123456789 , conversion .convert (asDateTime (123456789101L )));
350- assertEquals (-123456790 , conversion .convert (asDateTime (-123456789101L )));
353+ assertEquals (12345678 , conversion .convert (DateUtils .asDateTime (12345678L )));
354+ assertEquals (223456789 , conversion .convert (DateUtils .asDateTime (223456789L )));
355+ assertEquals (-123456789 , conversion .convert (DateUtils .asDateTime (-123456789L )));
356+ Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (DateUtils .asDateTime (Long .MAX_VALUE )));
357+ assertEquals ("[" + Long .MAX_VALUE + "] out of [integer] range" , e .getMessage ());
351358 }
352359 }
353360
354361 public void testConversionToShort () {
362+ DataType to = SHORT ;
355363 {
356- Conversion conversion = conversionFor (DOUBLE , SHORT );
364+ Conversion conversion = conversionFor (DOUBLE , to );
357365 assertNull (conversion .convert (null ));
358366 assertEquals ((short ) 10 , conversion .convert (10.0 ));
359367 assertEquals ((short ) 10 , conversion .convert (10.1 ));
360368 assertEquals ((short ) 11 , conversion .convert (10.6 ));
361369 Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (Integer .MAX_VALUE ));
362370 assertEquals ("[" + Integer .MAX_VALUE + "] out of [short] range" , e .getMessage ());
363371 }
372+ {
373+ Conversion conversion = conversionFor (DATE , to );
374+ assertNull (conversion .convert (null ));
375+ assertEquals ((short ) 0 , conversion .convert (DateUtils .asDateOnly (12345678L )));
376+ Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (DateUtils .asDateOnly (123456789L )));
377+ assertEquals ("[86400000] out of [short] range" , e .getMessage ());
378+ }
379+ {
380+ Conversion conversion = conversionFor (DATETIME , to );
381+ assertNull (conversion .convert (null ));
382+ assertEquals ((short ) 12345 , conversion .convert (DateUtils .asDateTime (12345L )));
383+ assertEquals ((short ) -12345 , conversion .convert (DateUtils .asDateTime (-12345L )));
384+ Exception e = expectThrows (SqlIllegalArgumentException .class ,
385+ () -> conversion .convert (DateUtils .asDateTime (Integer .MAX_VALUE )));
386+ assertEquals ("[" + Integer .MAX_VALUE + "] out of [short] range" , e .getMessage ());
387+ }
364388 }
365389
366390 public void testConversionToByte () {
391+ DataType to = BYTE ;
367392 {
368- Conversion conversion = conversionFor (DOUBLE , BYTE );
393+ Conversion conversion = conversionFor (DOUBLE , to );
369394 assertNull (conversion .convert (null ));
370395 assertEquals ((byte ) 10 , conversion .convert (10.0 ));
371396 assertEquals ((byte ) 10 , conversion .convert (10.1 ));
372397 assertEquals ((byte ) 11 , conversion .convert (10.6 ));
373398 Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (Short .MAX_VALUE ));
374399 assertEquals ("[" + Short .MAX_VALUE + "] out of [byte] range" , e .getMessage ());
375400 }
401+ {
402+ Conversion conversion = conversionFor (DATE , to );
403+ assertNull (conversion .convert (null ));
404+ assertEquals ((byte ) 0 , conversion .convert (DateUtils .asDateOnly (12345678L )));
405+ Exception e = expectThrows (SqlIllegalArgumentException .class , () -> conversion .convert (DateUtils .asDateOnly (123456789L )));
406+ assertEquals ("[86400000] out of [byte] range" , e .getMessage ());
407+ }
408+ {
409+ Conversion conversion = conversionFor (DATETIME , to );
410+ assertNull (conversion .convert (null ));
411+ assertEquals ((byte ) 123 , conversion .convert (DateUtils .asDateTime (123L )));
412+ assertEquals ((byte ) -123 , conversion .convert (DateUtils .asDateTime (-123L )));
413+ Exception e = expectThrows (SqlIllegalArgumentException .class ,
414+ () -> conversion .convert (DateUtils .asDateTime (Integer .MAX_VALUE )));
415+ assertEquals ("[" + Integer .MAX_VALUE + "] out of [byte] range" , e .getMessage ());
416+ }
376417 }
377418
378419 public void testConversionToNull () {
0 commit comments