packages feed

flight-kml-1.0.0: test-suite-parse/TestNewtypes.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# lANGUAGE PatternSynonyms #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module TestNewtypes where

-- NOTE: Avoid orphan instance warnings with these newtypes.

import Test.SmallCheck.Series as SC
import Test.Tasty.QuickCheck as QC

import Flight.Types
    ( Seconds(..)
    , Latitude(..)
    , Longitude(..)
    , Altitude(..)
    )

instance Monad m => SC.Serial m Seconds where
    series = cons1 Seconds

instance QC.Arbitrary Seconds where
    arbitrary = Seconds <$> arbitrary

instance Monad m => SC.Serial m Altitude where
    series = cons1 Altitude

instance QC.Arbitrary Altitude where
    arbitrary = Altitude <$> arbitrary

instance Monad m => SC.Serial m Latitude where
    series = cons1 Latitude

instance QC.Arbitrary Latitude where
    arbitrary = Latitude <$> arbitrary

instance Monad m => SC.Serial m Longitude where
    series = cons1 Longitude

instance QC.Arbitrary Longitude where
    arbitrary = Longitude <$> arbitrary