packages feed

liblawless-0.17.0: Tests/TestSepList.hs

{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module TestSepList (properties) where

import Lawless
import Arbitrary()
import Textual

import Test.Framework
import Test.Framework.TH
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.QuickCheck

import qualified Data.ByteString.Lazy as L

import Data.Binary

prop_Semigroup :: SepList Char -> SepList Char -> Property
prop_Semigroup (a :: SepList Char) (b :: SepList Char) =
  (a <> b) ^. slItems === (a ^. slItems) <> (b ^. slItems)

prop_Serialize :: SepList Char -> Property
prop_Serialize (a :: SepList Char) =
  let
    sz = L.toStrict $ encode a
    de = decode $ L.fromStrict sz
  in
    (de ^. slItems) === (a ^. slItems)

properties ∷ Test
properties = $(testGroupGenerator)