summaryrefslogtreecommitdiff
path: root/tests/Data/ByteString/Base32/HexSpec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Data/ByteString/Base32/HexSpec.hs')
-rw-r--r--tests/Data/ByteString/Base32/HexSpec.hs41
1 files changed, 21 insertions, 20 deletions
diff --git a/tests/Data/ByteString/Base32/HexSpec.hs b/tests/Data/ByteString/Base32/HexSpec.hs
index 2cdadef..7cddb69 100644
--- a/tests/Data/ByteString/Base32/HexSpec.hs
+++ b/tests/Data/ByteString/Base32/HexSpec.hs
@@ -1,3 +1,4 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# OPTIONS -fno-warn-orphans #-} 2{-# OPTIONS -fno-warn-orphans #-}
2module Data.ByteString.Base32.HexSpec ( spec ) where 3module Data.ByteString.Base32.HexSpec ( spec ) where
3 4
@@ -28,19 +29,19 @@ spec = do
28 29
29 describe "decode" $ do 30 describe "decode" $ do
30 it "conform rfc examples" $ do 31 it "conform rfc examples" $ do
31 decode "" `shouldBe` "" 32 decode "" `shouldBe` Right ""
32 decode "CO======" `shouldBe` "f" 33 decode "CO======" `shouldBe` Right "f"
33 decode "CPNG====" `shouldBe` "fo" 34 decode "CPNG====" `shouldBe` Right "fo"
34 decode "CPNMU===" `shouldBe` "foo" 35 decode "CPNMU===" `shouldBe` Right "foo"
35 decode "CPNMUOG=" `shouldBe` "foob" 36 decode "CPNMUOG=" `shouldBe` Right "foob"
36 decode "CPNMUOJ1" `shouldBe` "fooba" 37 decode "CPNMUOJ1" `shouldBe` Right "fooba"
37 decode "CPNMUOJ1E8======" `shouldBe` "foobar" 38 decode "CPNMUOJ1E8======" `shouldBe` Right "foobar"
38 39
39 it "inverse for encode" $ property $ \bs -> 40 it "inverse for encode" $ property $ \bs ->
40 decode (encode bs) == bs 41 decode (encode bs) == Right bs
41 42
42 it "case insensitive" $ property $ \bs -> 43 it "case insensitive" $ property $ \bs ->
43 decode (BC.map toLower (encode bs)) == bs 44 decode (BC.map toLower (encode bs)) == Right bs
44 45
45 it "fail gracefully if encoded data contains non alphabet chars" $ do 46 it "fail gracefully if encoded data contains non alphabet chars" $ do
46 evaluate (decode "#=======") `shouldThrow` anyErrorCall 47 evaluate (decode "#=======") `shouldThrow` anyErrorCall
@@ -48,20 +49,20 @@ spec = do
48 49
49 describe "decodeLenient" $ do 50 describe "decodeLenient" $ do
50 it "conform RFC examples" $ do 51 it "conform RFC examples" $ do
51 decode "" `shouldBe` "" 52 decode "" `shouldBe` Right ""
52 decode "CO======" `shouldBe` "f" 53 decode "CO======" `shouldBe` Right "f"
53 decode "CPNG====" `shouldBe` "fo" 54 decode "CPNG====" `shouldBe` Right "fo"
54 decode "CPNMU===" `shouldBe` "foo" 55 decode "CPNMU===" `shouldBe` Right "foo"
55 decode "CPNMUOG=" `shouldBe` "foob" 56 decode "CPNMUOG=" `shouldBe` Right "foob"
56 decode "CPNMUOJ1" `shouldBe` "fooba" 57 decode "CPNMUOJ1" `shouldBe` Right "fooba"
57 decode "CPNMUOJ1E8======" `shouldBe` "foobar" 58 decode "CPNMUOJ1E8======" `shouldBe` Right "foobar"
58 59
59 it "inverse for encode" $ property $ \bs -> 60 it "inverse for encode" $ property $ \bs ->
60 decodeLenient (encode bs) == bs 61 decodeLenient (encode bs) == Right bs
61 62
62 it "case insensitive" $ property $ \bs -> 63 it "case insensitive" $ property $ \bs ->
63 decodeLenient (BC.map toLower (encode bs)) == bs 64 decodeLenient (BC.map toLower (encode bs)) == Right bs
64 65
65 it "skip non alphabet chars" $ do 66 it "skip non alphabet chars" $ do
66 decodeLenient "|" `shouldBe` "" 67 decodeLenient "|" `shouldBe` Right ""
67 decodeLenient "C|O" `shouldBe` "f" 68 decodeLenient "C|O" `shouldBe` Right "f"