{-# language TypeApplications #-}

module Test.LeanCheck.Instances.Enum () where

import Data.Enum.Types
import Test.LeanCheck (Listable(tiers),(\/),cons0)

instance Listable A where
  tiers = cons0 A0

instance Listable B where
  tiers = cons0 B0 \/ cons0 B1

instance Listable C where
  tiers = cons0 C0 \/ cons0 C1 \/ cons0 C2

instance Listable D where
  tiers = cons0 D0 \/ cons0 D1 \/ cons0 D2 \/ cons0 D3

instance Listable E where
  tiers = cons0 E0 \/ cons0 E1 \/ cons0 E2 \/ cons0 E3 \/ cons0 E4

instance Listable F where
  tiers = cons0 F0 \/ cons0 F1 \/ cons0 F2 \/ cons0 F3 \/ cons0 F4 \/ cons0 F5

instance Listable G where
  tiers = cons0 G0 \/ cons0 G1 \/ cons0 G2 \/ cons0 G3 \/ cons0 G4 \/ cons0 G5 \/ cons0 G6

instance Listable H where
  tiers = cons0 H0 \/ cons0 H1 \/ cons0 H2 \/ cons0 H3 \/ cons0 H4 \/ cons0 H5 \/ cons0 H6 \/ cons0 H7

instance Listable I where
  tiers = cons0 I0 \/ cons0 I1 \/ cons0 I2 \/ cons0 I3 \/ cons0 I4 \/ cons0 I5 \/ cons0 I6 \/ cons0 I7 \/ cons0 I8

instance Listable J where
  tiers = cons0 J0 \/ cons0 J1 \/ cons0 J2 \/ cons0 J3 \/ cons0 J4 \/ cons0 J5 \/ cons0 J6 \/ cons0 J7 \/ cons0 J8 \/ cons0 J9

instance Listable K where
  tiers = cons0 K0 \/ cons0 K1 \/ cons0 K2 \/ cons0 K3 \/ cons0 K4 \/ cons0 K5 \/ cons0 K6 \/ cons0 K7 \/ cons0 K8 \/ cons0 K9 \/ cons0 K10