use multi-value-bind instead of two calls to the get the same data
[clsql.git] / tests / test-time.lisp
index d631340a36b15f816c62c547af2931ef52f1637c..a06f1547fe14f2dacecbb633e23947860b3a1448 100644 (file)
@@ -37,7 +37,7 @@
 
 (def-dataset *cross-platform-datetest*
   (:setup (lambda () (create-table [datetest]
-                                  '(([testtime] wall-time)))))
+                                  '(([testtime] "timestamp")))))
   (:cleanup (lambda ()
              (drop-table [datetest]))))
 
 (deftest :time/iso-parse/8
     (let* ((time1 (parse-timestring "2010-01-23T14:56:32-05:30")))
       (decode-time time1))
-  0 32 26 20 23 1 2010 6 t)
+ 0 32 26 20 23 1 2010 6 t)
+
+(deftest :time/utc-round-trip/1
+    (let* ((time1 (parse-timestring "2010-01-23T14:56:32")))
+      (decode-time (time-to-localtime (time-to-utc time1))))
+ 0 32 56 14 23 1 2010 6 nil)
+
+(deftest :time/utc-round-trip/2
+    (let* ((time1 (parse-timestring "2010-01-23T14:56:32Z")))
+      (decode-time (time-to-utc (time-to-localtime time1))))
+  0 32 56 14 23 1 2010 6 t)
 
 (deftest :time/print-parse/1
     ;;make sure when we print and parse we get the same time.
         )))
   #.(format-time nil (parse-timestring "1800-09-09T14:37:29") :format :iso))
 
+
+
+(deftest :time/to-utc/0
+ (let* ((clsql-sys::*default-timezone* 5)
+        (clsql-sys::*default-timezone-is-dst?* nil)
+        (ts (parse-timestring "2018-02-08T15:43:29-05"))
+        (utc-ts (time-to-utc ts))
+        (lt-ts (time-to-localtime utc-ts))
+        (lt-again (time-to-localtime (time-to-utc lt-ts))))
+   (values
+    (format-time nil utc-ts :format :iso)
+    (format-time nil lt-ts :format :iso)
+    (format-time nil lt-again :format :iso)))
+ #.(format-time nil (parse-timestring "2018-02-08T20:43:29Z") :format :iso)
+ #.(format-time nil (parse-timestring "2018-02-08T15:43:29") :format :iso)
+ #.(format-time nil (parse-timestring "2018-02-08T15:43:29") :format :iso)
+
+ )
+
+(deftest :time/to-utc/1
+ (let* ((clsql-sys::*default-timezone* 5)
+        (clsql-sys::*default-timezone-is-dst?* t)
+        (ts (parse-timestring "2018-08-08T16:43:29-04"))
+        (utc-ts (time-to-utc ts))
+        (lt-ts (time-to-localtime utc-ts))
+        (lt-again (time-to-localtime (time-to-utc lt-ts))))
+   (values
+    (format-time nil utc-ts :format :iso)
+    (format-time nil lt-ts :format :iso)
+    (format-time nil lt-again :format :iso)))
+ #.(format-time nil (parse-timestring "2018-08-08T20:43:29Z") :format :iso)
+ #.(format-time nil (parse-timestring "2018-08-08T16:43:29") :format :iso)
+ #.(format-time nil (parse-timestring "2018-08-08T16:43:29") :format :iso)
+
+ )
+
+(deftest :time/to-utc/2
+ (let* ((clsql-sys::*default-timezone* -1)
+        (clsql-sys::*default-timezone-is-dst?* nil)
+        (ts (parse-timestring "2018-02-08T16:43:29+01"))
+        (utc-ts (time-to-utc ts))
+        (lt-ts (time-to-localtime utc-ts))
+        (lt-again (time-to-localtime (time-to-utc lt-ts))))
+   (values
+    (format-time nil utc-ts :format :iso)
+    (format-time nil lt-ts :format :iso)
+    (format-time nil lt-again :format :iso)))
+ #.(format-time nil (parse-timestring "2018-02-08T15:43:29Z") :format :iso)
+ #.(format-time nil (parse-timestring "2018-02-08T16:43:29") :format :iso)
+ #.(format-time nil (parse-timestring "2018-02-08T16:43:29") :format :iso)
+
+ )
 ))
 
 
 
 
 
+