module Main where import Prelude hiding (Bool, Fractional (..), Num (..), drop, length, replicate, take, (==)) import System.Random (RandomGen, initStdGen) import Test.Hspec (Spec, hspec) import Tests.Algebra.EllipticCurve (specEllipticCurve) import Tests.Algebra.Field (specField) import Tests.Algebra.GroebnerBasis (specGroebner) import Tests.Algebra.Group (specAdditiveGroup) import Tests.Algebra.Pairing (specPairing) import Tests.Algebra.Permutations (specPermutations) import Tests.Algebra.ReedSolomon (specReedSolomon) import Tests.Algebra.Univariate (specUnivariate) import Tests.Data.Binary (specBinary) import Tests.Protocol.IVC (specIVC) import Tests.Protocol.NonInteractiveProof (specNonInteractiveProof) import Tests.Protocol.Plonkup (specPlonkup) import Tests.Symbolic.Algorithm.Blake2b (specBlake2b) import Tests.Symbolic.Algorithm.JWT (specJWT) import Tests.Symbolic.Algorithm.RSA (specRSA) import Tests.Symbolic.Algorithm.SHA2 (specSHA2, specSHA2Natural) import Tests.Symbolic.ArithmeticCircuit (specArithmeticCircuit) import Tests.Symbolic.Compiler (specCompiler) import Tests.Symbolic.Data.ByteString (specByteString) import Tests.Symbolic.Data.FFA (specFFA) import Tests.Symbolic.Data.Hash (specHash) import Tests.Symbolic.Data.Int (specInt) import Tests.Symbolic.Data.List (specList) import Tests.Symbolic.Data.UInt (specUInt) spec :: RandomGen g => g -> Spec spec gen = do -- Base.Algebra specField specAdditiveGroup specEllipticCurve specPairing specPermutations specUnivariate specReedSolomon specGroebner -- Base.Data specBinary -- Base.Protocol specPlonkup specNonInteractiveProof specIVC -- Compiler spec specArithmeticCircuit specCompiler -- Symbolic types and operations specHash specList specUInt specInt specFFA specByteString -- Symbolic cryptography specBlake2b specJWT specRSA gen specSHA2Natural specSHA2 main :: IO () main = hspec . spec =<< initStdGen