RegressionTests__TimeAndDateTest.st
changeset 1226 b5123dd5c3da
parent 1225 67d011bbcad5
child 1227 d303d4c8b01d
--- a/RegressionTests__TimeAndDateTest.st	Fri Nov 07 00:03:55 2014 +0100
+++ b/RegressionTests__TimeAndDateTest.st	Fri Nov 07 20:13:15 2014 +0100
@@ -251,72 +251,155 @@
 !
 
 test_07_readingISO8601
+    "tests reading into a 'natural' timestamp - that is if there was a TZ info,
+     that will be printed. If not, it will remain a local timestamp.
+     Presenting timestamps this way is not usually a good idea, except for GUI
+     (but not for data exchange)"
+
     {
      { '1995-02-20T13:11:06.123'   . '1995-02-20 13:11:06.123' } . 
-     { '1995-02-20T13:11:06'       . '1995-02-20 13:11:06.000' } . 
-     { '1995-02T13:11:06'          . '1995-02-01 13:11:06.000' } . 
-     { '1995T13:11:06'             . '1995-01-01 13:11:06.000' } . 
-     { '1995T13:11'                . '1995-01-01 13:11:00.000' } . 
-     { '1995T13:11.5'              . '1995-01-01 13:11:30.000' } . 
-     { '1995T13:11,5'              . '1995-01-01 13:11:30.000' } . 
-     { '1995T13'                   . '1995-01-01 13:00:00.000' } . 
-     { '1995T13.25'                . '1995-01-01 13:15:00.000' } . 
+     { '1995-02-20T13:11:06'       . '1995-02-20 13:11:06' } . 
+     { '1995-02T13:11:06'          . '1995-02-01 13:11:06' } . 
+     { '1995T13:11:06'             . '1995-01-01 13:11:06' } . 
+     { '1995T13:11'                . '1995-01-01 13:11' } . 
+     { '1995T13:11.5'              . '1995-01-01 13:11:30' } . 
+     { '1995T13:11,5'              . '1995-01-01 13:11:30' } . 
+     { '1995T13'                   . '1995-01-01 13:00' } . 
+     { '1995T13.25'                . '1995-01-01 13:15' } . 
      { '1995T13.333333'            . '1995-01-01 13:19:59.999' } .   
-     { '1995'                      . '1995-01-01 00:00:00.000' } . 
-     { '1995-02'                   . '1995-02-01 00:00:00.000' } . 
-     { '19950204'                  . '1995-02-04 00:00:00.000' } . 
+     { '1995'                      . '1995-01-01 00:00' } . 
+     { '1995-02'                   . '1995-02-01 00:00' } . 
+     { '19950204'                  . '1995-02-04 00:00' } . 
 
      "/ day in year
-     { '1995-001'                  . '1995-01-01 00:00:00.000' } . 
-     { '1995-035'                  . '1995-02-04 00:00:00.000' } . 
-     { '1995035'                   . '1995-02-04 00:00:00.000' } . 
+     { '1995-001'                  . '1995-01-01 00:00' } . 
+     { '1995-035'                  . '1995-02-04 00:00' } . 
+     { '1995035'                   . '1995-02-04 00:00' } . 
 
-     { '1997-01-01'                . '1997-01-01 00:00:00.000' } . 
+     { '1997-01-01'                . '1997-01-01 00:00' } . 
      "/ week and weekday
-     { '1997-W01'                  . '1996-12-30 00:00:00.000' } . 
-     { '1997W01'                   . '1996-12-30 00:00:00.000' } . 
-     { '1997W01-1'                 . '1996-12-30 00:00:00.000' } . 
-     { '1997W011'                  . '1996-12-30 00:00:00.000' } . 
-     { '1997W01'                   . '1996-12-30 00:00:00.000' } . 
-     { '1997W01-2'                 . '1996-12-31 00:00:00.000' } . 
-     { '1997-W01-2'                . '1996-12-31 00:00:00.000' } . 
-     { '1997W012'                  . '1996-12-31 00:00:00.000' } . 
-     { '2014W40'                   . '2014-09-29 00:00:00.000' } . 
-     { '2014W44-4'                 . '2014-10-30 00:00:00.000' } . 
-     { '2014W01'                   . '2013-12-30 00:00:00.000' } .     
-     { '2014W01-1'                 . '2013-12-30 00:00:00.000' } . 
-     { '2014W01-2'                 . '2013-12-31 00:00:00.000' } . 
-     { '2014W01-3'                 . '2014-01-01 00:00:00.000' } . 
+     { '1997-W01'                  . '1996-12-30 00:00' } . 
+     { '1997W01'                   . '1996-12-30 00:00' } . 
+     { '1997W01-1'                 . '1996-12-30 00:00' } . 
+     { '1997W011'                  . '1996-12-30 00:00' } . 
+     { '1997W01'                   . '1996-12-30 00:00' } . 
+     { '1997W01-2'                 . '1996-12-31 00:00' } . 
+     { '1997-W01-2'                . '1996-12-31 00:00' } . 
+     { '1997W012'                  . '1996-12-31 00:00' } . 
+     { '2014W40'                   . '2014-09-29 00:00' } . 
+     { '2014W44-4'                 . '2014-10-30 00:00' } . 
+     { '2014W01'                   . '2013-12-30 00:00' } .     
+     { '2014W01-1'                 . '2013-12-30 00:00' } . 
+     { '2014W01-2'                 . '2013-12-31 00:00' } . 
+     { '2014W01-3'                 . '2014-01-01 00:00' } . 
 
-     { '1995-02-20 13:11'          . '1995-02-20 13:11:00.000' } . 
-     { '1995-02-20 1311'           . '1995-02-20 13:11:00.000' } . 
-     { '1995-02-20 13'             . '1995-02-20 13:00:00.000' } . 
-     { '1995-02-20 235959'         . '1995-02-20 23:59:59.000' } . 
-     { '19950220 235959'           . '1995-02-20 23:59:59.000' } . 
+     { '1995-02-20 13:11'          . '1995-02-20 13:11' } . 
+     { '1995-02-20 1311'           . '1995-02-20 13:11' } . 
+     { '1995-02-20 13'             . '1995-02-20 13:00' } . 
+     { '1995-02-20 235959'         . '1995-02-20 23:59:59' } . 
+     { '19950220 235959'           . '1995-02-20 23:59:59' } . 
      { '19950220 23:59:59.9942'    . '1995-02-20 23:59:59.994' } . 
      { '19950220 235959.9942'      . '1995-02-20 23:59:59.994' } . 
 
      "/ local vs. UTC
-     { '1995-02-20 13:11:06'       . '1995-02-20 13:11:06.000' } . 
-     { '1995-02-20 13:11:06Z'      . '1995-02-20 13:11:06.000' } . 
-     { '1995-02-20 13:11:06+01'    . '1995-02-20 12:11:06.000' } . 
-     { '1995-02-20 13:11:06+01:00' . '1995-02-20 12:11:06.000' } . 
-     { '1995-02-20 13:11:06+01:30' . '1995-02-20 11:41:06.000' } . 
-     { '1995-02-20 13:11:06+0130'  . '1995-02-20 11:41:06.000' } . 
-     { '1995-02-20 13:11:06-01'    . '1995-02-20 14:11:06.000' } . 
-     { '1995-02-20 13:11:06-01:00' . '1995-02-20 14:11:06.000' } . 
-     { '1995-02-20 13:11:06-01:30' . '1995-02-20 14:41:06.000' } . 
-     { '1995-02-20 13:11:06-0130'  . '1995-02-20 14:41:06.000' } . 
+     { '1995-02-20 13:11:06'       . '1995-02-20 13:11:06' } . 
+     { '1995-02-20 13:11:06Z'      . '1995-02-20 13:11:06Z' } . 
+     { '1995-02-20 13:11:06+01'    . '1995-02-20 13:11:06+01' } . 
+     { '1995-02-20 13:11:06+01:00' . '1995-02-20 13:11:06+01' } . 
+     { '1995-02-20 13:11:06+01:30' . '1995-02-20 13:11:06+01:30' } . 
+     { '1995-02-20 13:11:06+0130'  . '1995-02-20 13:11:06+01:30' } . 
+     { '1995-02-20 13:11:06-01'    . '1995-02-20 13:11:06-01' } . 
+     { '1995-02-20 13:11:06-01:00' . '1995-02-20 13:11:06-01' } . 
+     { '1995-02-20 13:11:06-01:30' . '1995-02-20 13:11:06-01:30' } . 
+     { '1995-02-20 13:11:06-0130'  . '1995-02-20 13:11:06-01:30' } . 
 
      "/ 24 is allowed with ISO, and is 00:00 of the next day:
-     { '1995-02-20 24:00:00'       . '1995-02-21 00:00:00.000' } . 
+     { '1995-02-20 24:00:00'       . '1995-02-21 00:00' } . 
     } do:[:eachPair |
-        |s1 d s|
+        |s1 t expected got|
 
         s1 := eachPair first.
-        d := UtcTimestamp readIso8601FormatFrom:s1.
-        s := eachPair second.
-        self assert:(d asString = s) description:'expected: ',s,' got:',d printString.
+        t := Timestamp readIso8601FormatFrom:s1.
+        expected := eachPair second.
+        got := t asString.
+        self assert:(got = expected) description:'expected: ',expected,' got:',got.
+    ].
+
+    "
+     self new test_07_readingISO8601
+    "
+!
+
+test_07b_readingISO8601UTC
+    "tests reading into an utc timestamp"
+
+    {
+     { '1995-02-20T13:11:06.123'   . '1995-02-20 13:11:06.123Z' } . 
+     { '1995-02-20T13:11:06'       . '1995-02-20 13:11:06Z' } . 
+     { '1995-02T13:11:06'          . '1995-02-01 13:11:06Z' } . 
+     { '1995T13:11:06'             . '1995-01-01 13:11:06Z' } . 
+     { '1995T13:11'                . '1995-01-01 13:11Z' } . 
+     { '1995T13:11.5'              . '1995-01-01 13:11:30Z' } . 
+     { '1995T13:11,5'              . '1995-01-01 13:11:30Z' } . 
+     { '1995T13'                   . '1995-01-01 13:00Z' } . 
+     { '1995T13.25'                . '1995-01-01 13:15Z' } . 
+     { '1995T13.333333'            . '1995-01-01 13:19:59.999Z' } .   
+     { '1995'                      . '1995-01-01 00:00Z' } . 
+     { '1995-02'                   . '1995-02-01 00:00Z' } . 
+     { '19950204'                  . '1995-02-04 00:00Z' } . 
+
+     "/ day in year
+     { '1995-001'                  . '1995-01-01 00:00Z' } . 
+     { '1995-035'                  . '1995-02-04 00:00Z' } . 
+     { '1995035'                   . '1995-02-04 00:00Z' } . 
+
+     { '1997-01-01'                . '1997-01-01 00:00Z' } . 
+     "/ week and weekday
+     { '1997-W01'                  . '1996-12-30 00:00Z' } . 
+     { '1997W01'                   . '1996-12-30 00:00Z' } . 
+     { '1997W01-1'                 . '1996-12-30 00:00Z' } . 
+     { '1997W011'                  . '1996-12-30 00:00Z' } . 
+     { '1997W01'                   . '1996-12-30 00:00Z' } . 
+     { '1997W01-2'                 . '1996-12-31 00:00Z' } . 
+     { '1997-W01-2'                . '1996-12-31 00:00Z' } . 
+     { '1997W012'                  . '1996-12-31 00:00Z' } . 
+     { '2014W40'                   . '2014-09-29 00:00Z' } . 
+     { '2014W44-4'                 . '2014-10-30 00:00Z' } . 
+     { '2014W01'                   . '2013-12-30 00:00Z' } .     
+     { '2014W01-1'                 . '2013-12-30 00:00Z' } . 
+     { '2014W01-2'                 . '2013-12-31 00:00Z' } . 
+     { '2014W01-3'                 . '2014-01-01 00:00Z' } . 
+
+     { '1995-02-20 13:11'          . '1995-02-20 13:11Z' } . 
+     { '1995-02-20 1311'           . '1995-02-20 13:11Z' } . 
+     { '1995-02-20 13'             . '1995-02-20 13:00Z' } . 
+     { '1995-02-20 235959'         . '1995-02-20 23:59:59Z' } . 
+     { '19950220 235959'           . '1995-02-20 23:59:59Z' } . 
+     { '19950220 23:59:59.9942'    . '1995-02-20 23:59:59.994Z' } . 
+     { '19950220 235959.9942'      . '1995-02-20 23:59:59.994Z' } . 
+
+     "/ local vs. UTC
+     { '1995-02-20 13:11:06'       . '1995-02-20 13:11:06Z' } . 
+     { '1995-02-20 13:11:06Z'      . '1995-02-20 13:11:06Z' } . 
+     { '1995-02-20 13:11:06+01'    . '1995-02-20 12:11:06Z' } .      "/ notice the changed time here!!!!!!
+     { '1995-02-20 13:11:06+01:00' . '1995-02-20 12:11:06Z' } .      "/ notice the changed time here!!!!!! 
+     { '1995-02-20 13:11:06+01:30' . '1995-02-20 11:41:06Z' } .      "/ notice the changed time here!!!!!! 
+     { '1995-02-20 13:11:06+0130'  . '1995-02-20 11:41:06Z' } .      "/ notice the changed time here!!!!!! 
+     { '1995-02-20 13:11:06-01'    . '1995-02-20 14:11:06Z' } . 
+     { '1995-02-20 13:11:06-01:00' . '1995-02-20 14:11:06Z' } . 
+     { '1995-02-20 13:11:06-01:30' . '1995-02-20 14:41:06Z' } . 
+     { '1995-02-20 13:11:06-0130'  . '1995-02-20 14:41:06Z' } . 
+
+     "/ 24 is allowed with ISO, and is 00:00 of the next day:
+     { '1995-02-20 24:00:00'       . '1995-02-21 00:00Z' } . 
+    } do:[:eachPair |
+        |s1 t expected got|
+
+        s1 := eachPair first.
+        t := UtcTimestamp readIso8601FormatFrom:s1.
+        expected := eachPair second.
+        got := t asString.
+        self assert:(got = expected) description:'expected: ',expected,' got:',got.
     ].
 
     "