@@ -1,32 +1,55 @@
11module Test.Main where
22
33import Prelude
4−import Control.Monad.Eff (Eff)
5−import Control.Monad.Eff.Class (liftEff)
6−import Control.Monad.Eff.Console (CONSOLE)
74import Data.Maybe (Maybe(..), fromJust)
85import Data.String (length)
9−import Data.UUID (parseUUID, genUUID, GENUUID)
10−import Node.Process (PROCESS)
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)
1111import Partial.Unsafe (unsafePartial)
1212import Test.Spec (it, describe)
1313import Test.Spec.Assertions (shouldEqual)
1414import Test.Spec.Reporter.Console (consoleReporter)
15−import Test.Spec.Runner (run)
15+import Test.Spec.Runner (runSpec)
1616
17−main :: forall e. Eff (uuid :: GENUUID, console :: CONSOLE, process :: PROCESS | e) Unit
18−main = unsafePartial $ run [consoleReporter] do
19− describe "Data.UUID" do
20− it "`genUUID` returns a uuid" do
21− uuid <- liftEff genUUID
22− (length <<< show) uuid `shouldEqual` 36
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"
2339
24− it "`parseUUID` parses a valid uuid as Just UUID" do
25− let uuidStr = "d0778cf2-3a4c-42ef-acbd-1269b6bec204"
26− uuid = parseUUID uuidStr
27− uuidStr `shouldEqual` (show $ fromJust 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"
2845
29− it "`parseUUID` parses an invalid uuid as Nothing" do
30− let uuidStr = "foo"
31− uuid = parseUUID uuidStr
32− Nothing `shouldEqual` uuid
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"
51+
52+ showUUID = "(UUID d0778cf2-3a4c-42ef-acbd-1269b6bec204)"
53+
54+ uuid = parseUUID uuidStr
55+ showUUID `shouldEqual` (show $ unsafePartial $ fromJust uuid)