yx-0.0.1.0: test/Spec.hs
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Array.IArray as Array
import Data.Char (digitToInt)
import Data.Either (isLeft)
import Data.Geometry.YX (YX)
import qualified Data.Geometry.YX as YX
import Test.Hspec
import Test.Hspec.QuickCheck
main :: IO ()
main = hspec $ do
describe "bytestring conversions" $ do
it "should parse a simple square case" $ do
let
got = YX.byteStringToArray (Just . digitToInt) "12\n34\n"
want = Array.listArray (0, 1) [1..4] :: Array.Array YX Int
got `shouldBe` Right want
it "fails on uneven row" $ do
let got = YX.byteStringToArray Just "12\n3\n" :: Either String (Array.Array YX Char)
isLeft got `shouldBe` True
it "round trips" $ do
let
bs = "12\n34\n56"
Right arr = YX.byteStringToArray Just bs :: Either String (Array.Array YX Char)
bs' = YX.arrayToByteString id arr
bs' `shouldBe` bs