packages feed

hex-text-0.1.0.4: test/test.hs

import Data.Foldable
import Data.Semigroup
import Data.String
import Numeric.Natural
import System.Exit
import Text.Hex

import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Lazy as LazyByteString
import qualified Data.Text as Text
import qualified Data.Text.Lazy as LazyText

main = run tests

tests = encodeHexTests <> decodeHexTests <> lazilyEncodeHexTests

run [] = putStrLn "Okay"
run xs = die $ "Test failures: " <> show (xs :: [Natural])

infix 0 #
x # True = []
x # False = [x]

encodeHexTests = fold
  [ 1 # (encodeHex . ByteString.singleton) 192
      == fromString "c0"
  , 2 # (encodeHex . ByteString.singleton) 168
      == fromString "a8"
  , 3 # (encodeHex . ByteString.pack) [192, 168, 1, 2]
      == fromString "c0a80102"
  ]

decodeHexTests = fold
  [ 4 # (fmap ByteString.unpack . decodeHex . Text.pack) "c0a80102"
      == Just [192,168,1,2]
  , 5 # (fmap ByteString.unpack . decodeHex . Text.pack) "c0a8010"
      == Nothing
  , 6 # (fmap ByteString.unpack . decodeHex . Text.pack) "x0a80102"
      == Nothing
  , 7 # (fmap ByteString.unpack . decodeHex . Text.pack) "C0A80102"
      == Just [192,168,1,2]
  ]

lazilyEncodeHexTests = fold
  [ 8 # (LazyText.take 8 . lazilyEncodeHex . LazyByteString.pack . cycle) [1, 2, 3]
      == fromString "01020301"
  ]