about summary refs log tree commit diff
path: root/website/sandbox/shift-time/Spec.hs
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-08-13T21·05+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-08-20T10·26+0100
commit3fdfa14355088af602877153b49a85a5941fe879 (patch)
tree3ea0c6abe846a687b268f42931ce6f478302e571 /website/sandbox/shift-time/Spec.hs
parent5fd79ce0ffd27f860d754edf398895c1f84a8e0b (diff)
Support parsing and shifting time
TL;DR:
- Adds string-conversions library
- Adds tests for remaining units and repeating requests
- Adds a REPL in main
Diffstat (limited to 'website/sandbox/shift-time/Spec.hs')
-rw-r--r--website/sandbox/shift-time/Spec.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/website/sandbox/shift-time/Spec.hs b/website/sandbox/shift-time/Spec.hs
index dcb28248b380..ba3f71d7c754 100644
--- a/website/sandbox/shift-time/Spec.hs
+++ b/website/sandbox/shift-time/Spec.hs
@@ -15,3 +15,40 @@ main = hspec $ do
     it "handles seconds" $ do
       property $ \x -> parseTime (Text.concat [x & show & Text.pack, "s"]) ==
         (Just defaultShiftTimeRequest { shiftSeconds = x })
+
+    it "handles minutes" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "m"]) ==
+        (Just defaultShiftTimeRequest { shiftMinutes = x })
+
+    it "handles hours" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "h"]) ==
+        (Just defaultShiftTimeRequest { shiftHours = x })
+
+    it "handles days" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "d"]) ==
+        (Just defaultShiftTimeRequest { shiftDays = x })
+
+    it "handles weeks" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "w"]) ==
+        (Just defaultShiftTimeRequest { shiftWeeks = x })
+
+    it "handles months" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "M"]) ==
+        (Just defaultShiftTimeRequest { shiftMonths = x })
+
+    it "handles quarters" $ do
+      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "q"]) ==
+        (Just defaultShiftTimeRequest { shiftQuarters = x })
+
+    it "handles multiple shifts" $ do
+      parseTime "1s-20m5h0d-4w100M-3y2q" ==
+        (Just $ ShiftTimeRequest
+          { shiftSeconds = 1
+          , shiftMinutes = -20
+          , shiftHours = 5
+          , shiftDays = 0
+          , shiftWeeks = -4
+          , shiftMonths = 100
+          , shiftQuarters = 2
+          , shiftYears = -3
+          })