happstack-contrib-0.2.1: tests/Happstack/Contrib/Tests/HList001.hs
{-# LANGUAGE TemplateHaskell, DeriveDataTypeable,
FlexibleInstances, MultiParamTypeClasses,
OverlappingInstances, UndecidableInstances #-}
module Happstack.Contrib.Tests.HList001 (hlist001, t10, t10_2, t11) where
import Language.Haskell.TH
import Happstack.Data
import Happstack.Contrib.HList
import Test.HUnit
$( deriveAll [''Show,''Eq, ''Default]
[d|
data UserInfo = UserInfo User Pass
newtype User = User String
newtype Pass = Pass String
newtype Age = Age Int
|]
)
t10, t10_2, t11 :: Test
t10 = "t10" ~: hlextract (User "alex" .&. "abc") @?= "abc"
t10_2 = "t10_2" ~: hlextract (User "alex" .&. Pass "pass" .&. "abc") @?= "abc"
t11 = "t11" ~:
let hl = User "alex" .&. Pass "pass"
in Pass "pass2" @?= (hlextract $ hlupdate hl (Pass "pass2"))
hlist001 :: Test
hlist001 = "hlextract" ~: [t10, t10_2, t11]