2024-09-29 19:26:40 +02:00
|
|
|
|
|
|
|
|
-- | Generate test cases for Nim
|
|
|
|
|
|
|
|
|
|
module TestGen.TestPermutation where
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
import Data.Array
|
|
|
|
|
import Data.List
|
|
|
|
|
|
|
|
|
|
import System.IO
|
|
|
|
|
|
|
|
|
|
import Poseidon2
|
2024-10-01 16:00:27 +02:00
|
|
|
import Goldilocks
|
|
|
|
|
import Common
|
2024-09-29 19:26:40 +02:00
|
|
|
|
2024-10-01 16:00:27 +02:00
|
|
|
import TestGen.Shared
|
2024-09-29 19:26:40 +02:00
|
|
|
|
2024-10-01 16:00:27 +02:00
|
|
|
--------------------------------------------------------------------------------
|
2024-09-29 19:26:40 +02:00
|
|
|
|
|
|
|
|
perms :: String -> (State -> State) -> [State] -> String
|
|
|
|
|
perms varname f xs = unlines (header : stuff ++ footer) where
|
|
|
|
|
header = "const " ++ varname ++ "* : array[" ++ show (length xs) ++ ", tuple[xs:F12, ys:F12]] = "
|
|
|
|
|
footer = [" ]",""]
|
|
|
|
|
stuff = showListWith nimShowStatePair [ (x, f x) | x<-xs ]
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
testStates :: [State]
|
|
|
|
|
testStates =
|
|
|
|
|
[ listToState [ fromInteger (a + b*i) | i<-[0..11] ]
|
|
|
|
|
| a <- [0,10,200,3000]
|
|
|
|
|
, b <- [1, 7, 23, 666]
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
printTests :: IO ()
|
|
|
|
|
printTests = hPrintTests stdout
|
|
|
|
|
|
|
|
|
|
hPrintTests :: Handle -> IO ()
|
|
|
|
|
hPrintTests h = hPutStrLn h $ unlines
|
|
|
|
|
[ perms "testcases_perm" permutation testStates
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
writeTests :: IO ()
|
|
|
|
|
writeTests = withFile "permTestCases.nim" WriteMode $ \h -> do
|
|
|
|
|
hPutStrLn h "# generated by TestGen/TestPermutation.hs\n"
|
2024-10-01 21:00:27 +02:00
|
|
|
hPutStrLn h "import goldilocks_hash/types\n"
|
2024-09-29 19:26:40 +02:00
|
|
|
hPrintTests h
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|