2026-02-10 13:18:59 +00:00
|
|
|
{-# LANGUAGE BlockArguments #-}
|
|
|
|
|
{-# LANGUAGE DuplicateRecordFields #-}
|
|
|
|
|
{-# LANGUAGE ImportQualifiedPost #-}
|
|
|
|
|
{-# LANGUAGE OverloadedRecordDot #-}
|
|
|
|
|
{-# HLINT ignore "Use const" #-}
|
|
|
|
|
{-# HLINT ignore "Unused LANGUAGE pragma" #-}
|
|
|
|
|
{-# HLINT ignore "Avoid lambda" #-}
|
|
|
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
|
|
|
{-# LANGUAGE TypeApplications #-}
|
|
|
|
|
{-# LANGUAGE NoFieldSelectors #-}
|
|
|
|
|
{-# LANGUAGE NoMonomorphismRestriction #-}
|
|
|
|
|
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
|
|
|
|
|
|
|
|
|
module Test.Utility.UtilitySpec where
|
|
|
|
|
|
|
|
|
|
import Test.Hspec
|
|
|
|
|
import Utility.Utility
|
|
|
|
|
import qualified Data.Map as Map
|
|
|
|
|
import Data.Map
|
|
|
|
|
|
|
|
|
|
spec :: Spec
|
|
|
|
|
spec = do
|
|
|
|
|
describe "UtilitySpec" do
|
|
|
|
|
it "..." $ do
|
2026-02-10 14:50:04 +00:00
|
|
|
allMaps @Int @Int [] [] `shouldBe` [Map.empty]
|
|
|
|
|
allMaps @Int @Int [] [1] `shouldBe` [Map.empty]
|
|
|
|
|
allMaps @Int @Int [1] [] `shouldBe` []
|
|
|
|
|
allMaps [1] [True] `shouldBe` [Map.singleton 1 True]
|
2026-02-11 18:02:15 +00:00
|
|
|
uncharacteristic <$> allMaps [1, 2, 3] [True, False] `shouldMatchList` [
|
2026-02-10 13:18:59 +00:00
|
|
|
[1,2,3], [1,2], [1,3], [1], [2, 3], [2], [3], []
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
uncharacteristic :: forall a . Map a Bool -> [a]
|
|
|
|
|
uncharacteristic intmap = [ x | (x, v) <- toList intmap, v ]
|
|
|
|
|
|