aboutsummaryrefslogtreecommitdiff
path: root/spec/test/Thermoprint/PrintoutSpec.hs
blob: b92d76a5dfba8fa567bcd07049465786a38b4a05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{-# LANGUAGE StandaloneDeriving #-}

module Thermoprint.PrintoutSpec (spec) where

import Test.Hspec
import Test.Hspec.QuickCheck (prop)
import Thermoprint.Printout

import Data.Aeson (fromJSON, ToJSON(..), Result(..))
import Data.Function (on)

import Control.DeepSeq (($!!), force)

-- Equality via cotext on Block
instance Eq Block where
  (==) = (==) `on` cotext
-- Structural equality for Chunk 
deriving instance Eq Chunk

spec :: Spec
spec = do
  prop "prop_text" prop_text
  prop "json" prop_json
  where
    prop_json :: Printout -> Bool
    prop_json p = force $ (== Success p) . fromJSON . toJSON $!! p