{-# LANGUAGE TemplateHaskell #-}
{-|
Module: GH6Spec
Copyright: (C) 2015-2017 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Portability: Template Haskell
A regression test for
https://github.com/haskell-compat/deriving-compat/issues/6.
-}
module GH6Spec (main, spec) where
import Data.Deriving (deriveEq1, deriveOrd1)
import Data.Proxy (Proxy(..))
import OrdSpec (ordSpec)
import Test.Hspec (Spec, describe, hspec, parallel)
import Test.QuickCheck (Arbitrary(..), oneof)
data Foo a
= Foo1 a
| Foo2 a
| Foo3 a
| Foo4 a
| Foo5 a
deriving (Eq, Ord, Show)
deriveEq1 ''Foo
deriveOrd1 ''Foo
instance Arbitrary a => Arbitrary (Foo a) where
arbitrary = oneof $ map (<$> arbitrary) [Foo1, Foo2, Foo3, Foo4, Foo5]
main :: IO ()
main = hspec spec
spec :: Spec
spec = parallel $ describe "GH6" $ ordSpec (Proxy :: Proxy (Foo Int))