J'ai rencontré un comportement bizarre HUnit
. Il ne permet pas de compiler les cas de test si la condition Nothing == Nothing
est présente dans le test. Voici mon code qui reproduit ce comportement:HUnit ne permet pas de compiler des cas de test si la condition `Nothing == Nothing` est présente dans le test
module TestTest where
import Control.Exception
import Control.Monad
import Test.HUnit
import Test.AssertError
testTests = test [
"test A01" ~: "x == x" ~: True ~=? Nothing == Nothing,
"test _" ~: "empty test" ~: True ~=? True
]
runTests :: IO Counts
runTests = do
runTestTT testTests
tente de charger le fichier avec ce contenu en ghci
suivant renvoie l'erreur:
[2 of 2] Compiling TestTest (Test/TestTest.hs, interpreted)
Test/TestTest.hs:9:49:
No instance for (Eq a0) arising from a use of ‘==’
The type variable ‘a0’ is ambiguous
Note: there are several potential instances:
instance Eq Counts -- Defined in ‘Test.HUnit.Base’
instance Eq Node -- Defined in ‘Test.HUnit.Base’
instance Eq State -- Defined in ‘Test.HUnit.Base’
...plus 53 others
In the second argument of ‘(~=?)’, namely ‘Nothing == Nothing’
In the second argument of ‘(~:)’, namely
‘True ~=? Nothing == Nothing’
In the second argument of ‘(~:)’, namely
‘"x == x" ~: True ~=? Nothing == Nothing’
Failed, modules loaded: Test.AssertError.
Notez que la condition Just 2 == Just 2
dans le même cas de test fonctionne très bien. Si je tape Nothing == Nothing
dans ghci
, il renvoie True
comme prévu.
Des idées pour lesquelles HUnit
pourrait se comporter de cette façon? Est-ce un bug ou un comportement attendu?
Vous devez spécifier le type de 'Maybe a'. –