packages feed

exon-1.0.0.0: test/Exon/Test/BuildTest.hs

module Exon.Test.BuildTest where

import Hedgehog (TestT, (===))

import Exon.Class.Exon (SkipWs (SkipWs), exonProcess, exonProcessWith, skipWs)
import Exon.Class.ToSegment (toSegment)
import Exon.Data.Segment (Segment (Expression, Whitespace))

newtype Str =
  Str String
  deriving stock (Eq, Show)
  deriving newtype (IsString, Semigroup, Monoid)

segments ::
  IsString a =>
  NonEmpty (Segment a)
segments =
  [
    Whitespace " ",
    "pre",
    Whitespace " ",
    Expression (toSegment "exp"),
    Whitespace "  ",
    "post",
    Whitespace " "
  ]

test_build :: TestT IO ()
test_build = do
  " pre exp  post " === exonProcess @Text segments
  "preexppost" === exonProcessWith @(SkipWs Text) SkipWs skipWs segments
  " pre exp  post " === exonProcess @Str segments
  "preexppost" === exonProcessWith @(SkipWs Str) SkipWs skipWs segments