packages feed

exon-0.5.0.0: test/Exon/Test/ShowsPrecTest.hs

module Exon.Test.ShowsPrecTest where

import Hedgehog (TestT, (===))
import Text.Show (showParen, showsPrec)

import Exon.Quote (exon)

data Value =
  Value {
    x :: Int,
    y :: Int
  }
  deriving stock (Eq, Show)

data Record =
  Record {
    number :: Int,
    maybeNumber :: Maybe Int,
    value :: Value
  }
  deriving stock (Eq)

data Wrap =
  Wrap Int Record
  deriving stock (Eq, Show)

instance Show Record where
  showsPrec d Record {..} =
    showParen (d > 10) $
      [exon|Record #{showsPrec 11 number} #{showsPrec 11 maybeNumber} #{showsPrec 11 value}|]

test_showsPrec :: TestT IO ()
test_showsPrec =
  "Wrap 1 (Record 5 (Just 10) (Value {x = 3, y = 4}))" === show @Text (Wrap 1 (Record 5 (Just 10) (Value 3 4)))