packages feed

runtime-instances-1.0: test/HiddenInstanceTest.hs

{-# LANGUAGE OverloadedStrings #-}

module HiddenInstanceTest where

import Test.Tasty
import Test.Tasty.HUnit

import Control.Monad ( join )
import Data.Proxy
import Type.Reflection.Name

import Instance.Runtime
import Class
import Util

tests1 :: Instances Unqualified ReadShowEq -> TestTree
tests1 instances = testGroup "hidden1"
  [ testCase "read" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T" $ \ (_ :: Proxy t) ->
      read @t "MkT 1" @?= read "MkT  0x1"
  , testCase "show" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T" $ \ (_ :: Proxy t) ->
      show (read @t "  MkT  0002") @?= "MkT 2"
  , testCase "read T3" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T3" $ \ (_ :: Proxy t) ->
      read @t "MkT3 3.14" @?= read "MkT3   3.1400"
  ]

tests2 :: Instances Unqualified ReadShowEq2 -> TestTree
tests2 instances = testGroup "hidden2"
  [ testCase "read" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T" $ \ (_ :: Proxy t) ->
      read @t "MkT 1" @?= read "MkT  0x1"
  , testCase "show" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T" $ \ (_ :: Proxy t) ->
      show (read @t "  MkT  0002") @?= "MkT 2"
  , testCase "read T3" $
      join $
      assertJust "withInstance" $
      withInstanceProxy instances "T3" $ \ (_ :: Proxy t) ->
      read @t "MkT3 3.14" @?= read "MkT3   3.1400"
  ]