@@ -0,0 +1,30 @@
1+module VerifyAttributes where
2+
3+import Verify
4+
5+import Data.Semigroup((<>))
6+
7+import Graphics.Vty.Attributes(MaybeDefault(Default, KeepCurrent, SetTo))
8+
9+instance Arbitrary a => Arbitrary (MaybeDefault a) where
10+ arbitrary = oneof [pure Default, pure KeepCurrent, SetTo <$> arbitrary]
11+
12+oldSem :: MaybeDefault a -> MaybeDefault a -> MaybeDefault a
13+oldSem Default Default = Default
14+oldSem Default KeepCurrent = Default
15+oldSem Default (SetTo v) = SetTo v
16+oldSem KeepCurrent Default = Default
17+oldSem KeepCurrent KeepCurrent = KeepCurrent
18+oldSem KeepCurrent (SetTo v) = SetTo v
19+oldSem (SetTo _v) Default = Default
20+oldSem (SetTo v) KeepCurrent = SetTo v
21+oldSem (SetTo _) (SetTo v) = SetTo v
22+
23+sameSemigroupValue :: MaybeDefault Int -> MaybeDefault Int -> Bool
24+sameSemigroupValue xa xb = xa <> xb == oldSem xa xb
25+
26+tests :: IO [Test]
27+tests = return
28+ [ verify "check that the new Semigroup of MaybeDefault is equivalent to the old one" sameSemigroupValue
29+ ]
30+