@@ -1,34 +1,55 @@
11module Test.Main where
22
33import Prelude
4−import Control.Monad.Eff
5−import Control.Monad.Eff.Console
4+import Data.Maybe (Maybe(..), fromJust)
5+import Data.String (length)
6+import Data.UUID (genUUID, genv3UUID, genv5UUID, parseUUID, toString)
7+import Effect (Effect)
8+import Effect.Aff (launchAff_)
9+import Effect.Class (liftEffect)
10+import Effect.Unsafe (unsafePerformEffect)
11+import Partial.Unsafe (unsafePartial)
12+import Test.Spec (it, describe)
13+import Test.Spec.Assertions (shouldEqual)
14+import Test.Spec.Reporter.Console (consoleReporter)
15+import Test.Spec.Runner (runSpec)
616
7−import Control.Monad.Aff
17+main :: Effect Unit
18+main =
19+ launchAff_ do
20+ runSpec [ consoleReporter ] do
21+ describe "UUID" do
22+ it "`genUUID` returns a uuid" do
23+ let
24+ uuid = unsafePerformEffect genUUID
25+ (length <<< toString) uuid `shouldEqual` 36
26+ it "`genv3UUID` returns a uuid" do
27+ namespace <- liftEffect genUUID
28+ let
29+ uuid = genv3UUID "foo" namespace
30+ (length <<< toString) uuid `shouldEqual` 36
31+ it "`genv5UUID` returns a uuid" do
32+ namespace <- liftEffect genUUID
33+ let
34+ uuid = genv5UUID "foo" namespace
35+ (length <<< toString) uuid `shouldEqual` 36
36+ it "`parseUUID` parses a valid uuid as Just UUID" do
37+ let
38+ uuidStr = "d0778cf2-3a4c-42ef-acbd-1269b6bec204"
839
9−import Data.Maybe
10−import Data.Maybe.Unsafe
11−import Data.String
12−import Data.UUID
40+ uuid = parseUUID uuidStr
41+ uuidStr `shouldEqual` (toString $ unsafePartial $ fromJust uuid)
42+ it "`parseUUID` parses an invalid uuid as Nothing" do
43+ let
44+ uuidStr = "foo"
1345
14−import Test.Spec
15−import Test.Spec.Assertions
16−import Test.Spec.Runner
17−import Test.Spec.Reporter.Console
46+ uuid = parseUUID uuidStr
47+ Nothing `shouldEqual` uuid
48+ it "`show` returns a console-friendly representation of the UUID type" do
49+ let
50+ uuidStr = "d0778cf2-3a4c-42ef-acbd-1269b6bec204"
1851
19−main :: forall e. Eff (uuid :: GENUUID, console :: CONSOLE, process :: Process | e) Unit
20−main = run [consoleReporter] do
21− describe "Data.UUID" do
22− it "`genUUID` returns a uuid" do
23− uuid <- liftEff' genUUID
24− (length <<< show) uuid `shouldEqual` 44
52+ showUUID = "(UUID d0778cf2-3a4c-42ef-acbd-1269b6bec204)"
2553
26− it "`parseUUID` parses a valid uuid as Just UUID" do
27− let uuidStr = "d0778cf2-3a4c-42ef-acbd-1269b6bec204"
28− uuid = parseUUID uuidStr
29− uuidStr `shouldEqual` (show $ fromJust uuid)
30−
31− it "`parseUUID` parses an invalid uuid as Nothing" do
32− let uuidStr = "foo"
33− uuid = parseUUID uuidStr
34− Nothing `shouldEqual` uuid
54+ uuid = parseUUID uuidStr
55+ showUUID `shouldEqual` (show $ unsafePartial $ fromJust uuid)