45 lines
1.3 KiB
Haskell

-- | Generate test cases for Nim
module TestGen.TestSponge where
--------------------------------------------------------------------------------
import Data.Array
import Data.List
import Data.Word
import System.IO
import Sponge
import Goldilocks
import Common
import TestGen.Shared
--------------------------------------------------------------------------------
feltDigest :: Rate -> Integer -> Digest
feltDigest rate max = hashFieldElems' rate $ (map fromInteger [1..max] :: [F])
byteDigest :: Rate -> Integer -> Digest
byteDigest rate max = hashBytes' rate $ (map fromInteger [1..max] :: [Word8])
--------------------------------------------------------------------------------
printTests :: IO ()
printTests = hPrintTests stdout
hPrintTests :: Handle -> IO ()
hPrintTests h = hPutStrLn h $ unlines $
[ digests ("testcases_field_rate" ++ show r) (feltDigest (Rate r)) [0..80] | r<-[1..8] ] ++
[ digests ("testcases_bytes_rate" ++ show r) (byteDigest (Rate r)) [0..80] | r<-[4,8] ]
writeTests :: IO ()
writeTests = withFile "spongeTestCases.nim" WriteMode $ \h -> do
hPutStrLn h "# generated by TestGen/TestSponge.hs\n"
hPutStrLn h "import poseidon2/types\n"
hPrintTests h
--------------------------------------------------------------------------------