{-# LANGUAGE CPP #-}
#if defined(mingw32_HOST_OS)
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
# if __GLASGOW_HASKELL__ >= 702
{-# LANGUAGE DeriveGeneric #-}
# endif
{-# OPTIONS_GHC -fno-warn-orphans #-}
#endif
{-|
Module: Instances.System.Win32
Copyright: (C) 2014-2017 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Provisional
Portability: GHC
Provides 'Arbitrary' instances for data types in the @Win32@ library.
-}
module Instances.System.Win32 () where
#if defined(mingw32_HOST_OS)
# if __GLASGOW_HASKELL__ >= 704
import GHC.Generics (Generic)
# else
import qualified Generics.Deriving.TH as Generics (deriveAll0)
# endif
import Instances.Miscellaneous ()
import Instances.Utils.GenericArbitrary (genericArbitrary)
import System.Win32.DebugApi (DebugEventInfo(..), Exception(..))
import System.Win32.File (BY_HANDLE_FILE_INFORMATION(..), WIN32_FILE_ATTRIBUTE_DATA(..))
import System.Win32.Info (ProcessorArchitecture(..), SYSTEM_INFO(..))
import System.Win32.Time (FILETIME(..), SYSTEMTIME(..),
TIME_ZONE_INFORMATION(..), TimeZoneId(..))
import Test.QuickCheck (Arbitrary(..), arbitraryBoundedEnum)
instance Arbitrary DebugEventInfo where
arbitrary = genericArbitrary
instance Arbitrary Exception where
arbitrary = genericArbitrary
instance Arbitrary BY_HANDLE_FILE_INFORMATION where
arbitrary = genericArbitrary
instance Arbitrary WIN32_FILE_ATTRIBUTE_DATA where
arbitrary = genericArbitrary
instance Arbitrary ProcessorArchitecture where
arbitrary = genericArbitrary
instance Arbitrary SYSTEM_INFO where
arbitrary = genericArbitrary
deriving instance Arbitrary FILETIME
instance Arbitrary SYSTEMTIME where
arbitrary = genericArbitrary
instance Arbitrary TIME_ZONE_INFORMATION where
arbitrary = genericArbitrary
deriving instance Bounded TimeZoneId
deriving instance Enum TimeZoneId
instance Arbitrary TimeZoneId where
arbitrary = arbitraryBoundedEnum
# if __GLASGOW_HASKELL__ >= 704
deriving instance Generic DebugEventInfo
deriving instance Generic Exception
deriving instance Generic BY_HANDLE_FILE_INFORMATION
deriving instance Generic WIN32_FILE_ATTRIBUTE_DATA
deriving instance Generic ProcessorArchitecture
deriving instance Generic SYSTEM_INFO
deriving instance Generic SYSTEMTIME
deriving instance Generic TIME_ZONE_INFORMATION
# else
$(Generics.deriveAll0 ''DebugEventInfo)
$(Generics.deriveAll0 ''Exception)
$(Generics.deriveAll0 ''BY_HANDLE_FILE_INFORMATION)
$(Generics.deriveAll0 ''WIN32_FILE_ATTRIBUTE_DATA)
$(Generics.deriveAll0 ''ProcessorArchitecture)
$(Generics.deriveAll0 ''SYSTEM_INFO)
$(Generics.deriveAll0 ''SYSTEMTIME)
$(Generics.deriveAll0 ''TIME_ZONE_INFORMATION)
# endif
#endif