@@ -262,6 +262,23 @@ def test_datetime
262262 assert_equal "2016-02-26 00:00:00" , converter . call ( "2016-02-26 00:00:00" )
263263 end
264264
265+ def test_time
266+ converter = ValueConverterFactory . new ( SCHEMA_TYPE , 'TIME' ) . create_converter
267+ assert_equal nil , converter . call ( nil )
268+ assert_equal "00:03:22.000000" , converter . call ( "00:03:22" )
269+ assert_equal "15:22:00.000000" , converter . call ( "3:22 PM" )
270+ assert_equal "03:22:00.000000" , converter . call ( "3:22 AM" )
271+ assert_equal "00:00:00.000000" , converter . call ( "2016-02-26 00:00:00" )
272+
273+ # TimeWithZone doesn't affect any change to the time value
274+ converter = ValueConverterFactory . new (
275+ SCHEMA_TYPE , 'TIME' , timezone : 'Asia/Tokyo'
276+ ) . create_converter
277+ assert_equal "15:00:01.000000" , converter . call ( "15:00:01" )
278+
279+ assert_raise { converter . call ( 'foo' ) }
280+ end
281+
265282 def test_record
266283 converter = ValueConverterFactory . new ( SCHEMA_TYPE , 'RECORD' ) . create_converter
267284 assert_equal ( { 'foo' => 'foo' } , converter . call ( %Q[{"foo":"foo"}] ) )
@@ -350,6 +367,24 @@ def test_datetime
350367 assert_raise { converter . call ( 'foo' ) }
351368 end
352369
370+ def test_time
371+ converter = ValueConverterFactory . new ( SCHEMA_TYPE , 'TIME' ) . create_converter
372+ assert_equal nil , converter . call ( nil )
373+ timestamp = Time . parse ( "2016-02-26 00:00:00.500000 +00:00" )
374+ expected = "00:00:00.500000"
375+ assert_equal expected , converter . call ( timestamp )
376+
377+ converter = ValueConverterFactory . new (
378+ SCHEMA_TYPE , 'TIME' , timezone : 'Asia/Tokyo'
379+ ) . create_converter
380+ assert_equal nil , converter . call ( nil )
381+ timestamp = Time . parse ( "2016-02-25 15:00:00.500000 +00:00" )
382+ expected = "00:00:00.500000"
383+ assert_equal expected , converter . call ( timestamp )
384+
385+ assert_raise { converter . call ( 'foo' ) }
386+ end
387+
353388 def test_record
354389 assert_raise { ValueConverterFactory . new ( SCHEMA_TYPE , 'RECORD' ) . create_converter }
355390 end
0 commit comments