--- a/RegressionTests__TimeAndDateTest.st Wed Oct 18 15:01:01 2017 +0200
+++ b/RegressionTests__TimeAndDateTest.st Thu Nov 09 10:43:21 2017 +0100
@@ -12,44 +12,98 @@
!TimeAndDateTest methodsFor:'Testing'!
-test_01_ReadingTimes
+test_01a_ReadingTimes
+ self assert:(Time readFrom:'0:00' ) = (Time hours:0 minutes:0 seconds:0).
+ self assert:(Time readFrom:'2:00' ) = (Time hours:2 minutes:0 seconds:0).
+ self assert:(Time readFrom:'12:00' ) = (Time hours:12 minutes:0 seconds:0).
+ self assert:(Time readFrom:'14:00' ) = (Time hours:14 minutes:0 seconds:0).
+ self assert:(Time readFrom:'23:00' ) = (Time hours:23 minutes:0 seconds:0).
- self assert:(Time readFrom:'0:00' ) = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'2:00' ) = (Time hours:2 minutes:0 seconds:0).
- self assert:(Time readFrom:'12:00' ) = (Time hours:12 minutes:0 seconds:0).
- self assert:(Time readFrom:'14:00' ) = (Time hours:14 minutes:0 seconds:0).
- self assert:(Time readFrom:'23:00' ) = (Time hours:23 minutes:0 seconds:0).
- self assert:(Time readFrom:'24:00' ) = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'2:30 am' ) = (Time hours:2 minutes:30 seconds:0).
- self assert:(Time readFrom:'2:30 pm' ) = (Time hours:14 minutes:30 seconds:0).
- self assert:(Time readFrom:'14' ) = (Time hours:14 minutes:0 seconds:0).
- self assert:(Time readFrom:'2 am' ) = (Time hours:2 minutes:0 seconds:0).
- self assert:(Time readFrom:'2 pm' ) = (Time hours:14 minutes:0 seconds:0).
- self assert:(Time readFrom:'12:05 pm') = (Time hours:12 minutes:5 seconds:0).
- self assert:(Time readFrom:'12:06 am') = (Time hours:0 minutes:6 seconds:0).
+ self assert:(Time readFrom:'18:22:00') = (Time hours:18 minutes:22 seconds:0).
+ self assert:(Time readFrom:'14:00:11') = (Time hours:14 minutes:0 seconds:11).
+ self assert:(Time readFrom:'7:00:11' ) = (Time hours:7 minutes:0 seconds:11).
+ self assert:(Time readFrom:'0:00:00' ) = (Time hours:0 minutes:0 seconds:0).
+ self assert:(Time readFrom:'12:00:00') = (Time hours:12 minutes:0 seconds:0).
+ self assert:(Time readFrom:'0:00:00' ) = (Time hours:0 minutes:0 seconds:0).
+
+ self assert:(Time readFrom:'14' ) = (Time hours:14 minutes:0 seconds:0).
+
+ self assert:(Time readFrom:'2 am' ) = (Time hours:2 minutes:0 seconds:0).
+ self assert:(Time readFrom:'2 pm' ) = (Time hours:14 minutes:0 seconds:0).
- self assert:(Time readFrom:'18:22:00') = (Time hours:18 minutes:22 seconds:0).
- self assert:(Time readFrom:'14:00:11') = (Time hours:14 minutes:0 seconds:11).
- self assert:(Time readFrom:'7:00:11' ) = (Time hours:7 minutes:0 seconds:11).
- self assert:(Time readFrom:'24:00:00') = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'0:00:00' ) = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'12:00:00') = (Time hours:12 minutes:0 seconds:0).
- self assert:(Time readFrom:'0:00:00' ) = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'6:22:00 pm' ) = (Time hours:18 minutes:22 seconds:0).
- self assert:(Time readFrom:'2:00:11 pm' ) = (Time hours:14 minutes:0 seconds:11).
- self assert:(Time readFrom:'7:00:11 am' ) = (Time hours:7 minutes:0 seconds:11).
- self assert:(Time readFrom:'12:00:00 am') = (Time hours:0 minutes:0 seconds:0).
- self assert:(Time readFrom:'0:00:00 am' ) = (Time hours:0 minutes:0 seconds:0).
- self should:[ Time readFrom:'24:00:00 am' ] raise:TimeConversionError.
- self assert:(Time readFrom:'12:00:00 pm') = (Time hours:12 minutes:0 seconds:0).
- self assert:(Time readFrom:'0:00:00 pm' onError:'invalid') = 'invalid'.
- self should:[ Time readFrom:'24:00:00 pm' ] raise:TimeConversionError.
+ self assert:(Time readFrom:'2:30 am' ) = (Time hours:2 minutes:30 seconds:0).
+ self assert:(Time readFrom:'2:30 pm' ) = (Time hours:14 minutes:30 seconds:0).
+ self assert:(Time readFrom:'12:05 pm') = (Time hours:12 minutes:5 seconds:0).
+ self assert:(Time readFrom:'12:06 am') = (Time hours:0 minutes:6 seconds:0).
+
+ self assert:(Time readFrom:'6:22:00 pm' ) = (Time hours:18 minutes:22 seconds:0).
+ self assert:(Time readFrom:'2:00:11 pm' ) = (Time hours:14 minutes:0 seconds:11).
+ self assert:(Time readFrom:'7:00:11 am' ) = (Time hours:7 minutes:0 seconds:11).
+ self assert:(Time readFrom:'12:00:00 am') = (Time hours:0 minutes:0 seconds:0).
+ self assert:(Time readFrom:'0:00:00 am' ) = (Time hours:0 minutes:0 seconds:0).
+ self assert:(Time readFrom:'12:00:00 pm') = (Time hours:12 minutes:0 seconds:0).
+ self assert:(Time readFrom:'0:00:00 pm' onError:'invalid') = 'invalid'.
+
+ self assert:(Time readFrom:'24:00' ) = (Time hours:0 minutes:0 seconds:0).
+ self assert:(Time readFrom:'24:00:00') = (Time hours:0 minutes:0 seconds:0).
+
+ self should:[Time readFrom:'24:00:00 am' ] raise:TimeConversionError.
+ self should:[Time readFrom:'24:00:00 pm' ] raise:TimeConversionError.
"
- self new test_01_Reading
+ self new test_01a_ReadingTimes
+ "
+
+ "Created: / 09-11-2017 / 10:17:37 / cg"
+!
+
+test_01b_ReadingTimeDurations
+ self assert:(TimeDuration readFrom:'0:00' ) = (TimeDuration hours:0 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'2:00' ) = (TimeDuration hours:2 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'12:00' ) = (TimeDuration hours:12 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'14:00' ) = (TimeDuration hours:14 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'23:00' ) = (TimeDuration hours:23 minutes:0 seconds:0).
+
+ self assert:(TimeDuration readFrom:'18:22:00') = (TimeDuration hours:18 minutes:22 seconds:0).
+ self assert:(TimeDuration readFrom:'14:00:11') = (TimeDuration hours:14 minutes:0 seconds:11).
+ self assert:(TimeDuration readFrom:'7:00:11' ) = (TimeDuration hours:7 minutes:0 seconds:11).
+ self assert:(TimeDuration readFrom:'0:00:00' ) = (TimeDuration hours:0 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'12:00:00') = (TimeDuration hours:12 minutes:0 seconds:0).
+ self assert:(TimeDuration readFrom:'0:00:00' ) = (TimeDuration hours:0 minutes:0 seconds:0).
+
+ self assert:(TimeDuration readFrom:'14' ) = (TimeDuration hours:0 minutes:0 seconds:14).
+
+ "
+ self new test_01b_ReadingTimeDurations
"
- "Modified: / 27-07-2017 / 20:49:38 / mawalch"
+ "Created: / 09-11-2017 / 10:16:58 / cg"
+!
+
+test_01c_ReadingTimeStamps
+ self assert:(Timestamp readFrom:'2017-11-09 10:18:03.236') = (Timestamp year:2017 month:11 day:9 hour:10 minute:18 second:3 millisecond:236).
+
+ "/ standard format
+ self assert:(Timestamp readFrom:'2017-11-09') = (Timestamp year:2017 month:11 day:9 hour:0 minute:0 second:0).
+
+ "/ US format
+ self assert:(Timestamp readFrom:'12/09/2017') = (Timestamp year:2017 month:12 day:9 hour:0 minute:0 second:0).
+
+ "/ european format
+ self assert:(Timestamp readFrom:'9.11.2017') = (Timestamp year:2017 month:11 day:9 hour:0 minute:0 second:0).
+
+ "/ explicit format
+ self assert:(Timestamp readFrom:'9-nov-2017') = (Timestamp year:2017 month:11 day:9 hour:0 minute:0 second:0).
+ "/ explicit format
+ self assert:(Timestamp readFrom:'9. nov 2017') = (Timestamp year:2017 month:11 day:9 hour:0 minute:0 second:0).
+ "/ explicit format
+ self assert:(Timestamp readFrom:'9 nov 2017') = (Timestamp year:2017 month:11 day:9 hour:0 minute:0 second:0).
+
+ "
+ self new test_01c_ReadingTimeStamps
+ "
+
+ "Created: / 09-11-2017 / 10:19:19 / cg"
!
test_02_ReadingDates
@@ -743,6 +797,39 @@
"
self new test_16_readingOtherFormats
"
+!
+
+test_17_readingBrokenStrings
+ "endless loop happened with:
+ Timestamp readFrom:'0' onError:#foo
+ "
+
+ #(
+ ''
+ '0'
+ '1'
+ '1-'
+ '1-1'
+ '1-1-'
+ '1-1-1 10'
+ '0-0-0'
+ ) do:[:eachBadString |
+ | ts |
+
+ "/ should not run into an endless loop
+ [
+ ts := Timestamp readFrom:eachBadString onError:#foo.
+ ] valueWithTimeout:(50 milliseconds).
+
+ self assert: (ts notNil) description:'timestamp reading leads to endless loop'.
+ self assert: ts == #foo.
+ ].
+
+ "
+ self new test_17_readingBrokenStrings
+ "
+
+ "Created: / 09-11-2017 / 10:00:30 / cg"
! !
!TimeAndDateTest class methodsFor:'documentation'!