53 lines
1.4 KiB
Haskell
Raw Normal View History

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
import Goldilocks
import Common
2024-09-29 19:26:40 +02:00
import TestGen.Shared
2024-09-29 19:26:40 +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"
hPutStrLn h "import goldilocks_hash/types\n"
2024-09-29 19:26:40 +02:00
hPrintTests h
--------------------------------------------------------------------------------