packages feed

aeson-modern-tojson-0.2.0.0: test/Data/Aeson/ToJSON/DerivingSpec.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -dsuppress-idinfo -dsuppress-coercions -dsuppress-type-applications
-dsuppress-module-prefixes -dsuppress-type-signatures -dsuppress-uniques -O #-}

module Data.Aeson.ToJSON.DerivingSpec (main) where

import Data.Aeson
import Data.Aeson.ToJSON.Deriving
import GHC.Generics
import Test.Inspection (inspect, (==-))

data W = W Int Int
  deriving stock (Generic)
  deriving (ToJSON) via (GenericallyToJSONToEncoding W)

data X = X Int Int
  deriving stock (Generic)
  deriving (ToJSON) via (GenericallyToEncoding X)

toEncodingDerivedBoth :: W -> Encoding
toEncodingDerivedBoth = toEncoding

toEncodingTargetBoth :: W -> Encoding
toEncodingTargetBoth = genericToEncoding defaultOptions

toEncodingDerivedOnly :: X -> Encoding
toEncodingDerivedOnly = toEncoding

toEncodingTargetOnly :: X -> Encoding
toEncodingTargetOnly = genericToEncoding defaultOptions

main :: IO ()
main = pure ()

inspect $ 'toEncodingDerivedBoth ==- 'toEncodingTargetBoth
inspect $ 'toEncodingDerivedOnly ==- 'toEncodingTargetOnly