{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} module HUnit.Credential where import qualified Control.Monad.Trans.State.Strict as S import qualified System.Random as Random import Protocol.Arithmetic import Protocol.Credential import HUnit.Utils hunit :: TestTree hunit = testGroup "Credential" [ testGroup "randomCredential" [ testCase "WeakParams" $ S.evalState randomCredential (Random.mkStdGen 0) @?= Credential @WeakParams "RDfIgdmiCkU46pD" , testCase "BeleniosParams" $ S.evalState randomCredential (Random.mkStdGen 0) @?= Credential @BeleniosParams "RDfIgdmiCkU46pD" ] , testGroup "readCredential" [ testGroup "WeakParams" $ let (==>) inp (exp::Either CredentialError (Credential WeakParams)) = testCase (show inp) $ readCredential inp @?= exp in [ "" ==> Left CredentialError_Length , "RDfIgdmiCkU46_K" ==> Left (CredentialError_BadChar '_') , "RDfIgdmiCkU46f" ==> Left CredentialError_Length , "RDfIgdmiCkU46pK7" ==> Left CredentialError_Length , "RDfIgdmiCkU46pE" ==> Left CredentialError_Checksum , "RDfIgdmiCkU46pD" ==> Right (Credential "RDfIgdmiCkU46pD") ] , testGroup "BeleniosParams" $ let (==>) inp (exp::Either CredentialError (Credential BeleniosParams)) = testCase (show inp) $ readCredential inp @?= exp in [ "RDfIgdmiCkU46f" ==> Left CredentialError_Length , "RDfIgdmiCkU46pK7" ==> Left CredentialError_Length , "RDfIgdmiCkU46pE" ==> Left CredentialError_Checksum , "RDfIgdmiCkU46pD" ==> Right (Credential "RDfIgdmiCkU46pD") ] ] ]