Switch to a more dynamic, time-based test generation scheme.

This commit is contained in:
2020-03-01 16:56:17 -08:00
parent 71451617f9
commit 9c76d7e0b4
12 changed files with 212 additions and 374 deletions

View File

@@ -16,16 +16,13 @@ import Language.Rust.Syntax
import RustModule
import System.Random(RandomGen)
numTestCases :: Int
numTestCases = 3000
binaryOps :: RustModule
binaryOps = RustModule {
predicate = \ _ _ -> True,
outputName = "binary",
isUnsigned = True,
generator = declareBinaryOperators,
testCase = Just generateTests
testCase = Just generateTest
}
declareBinaryOperators :: Word -> [Word] -> SourceFile Span
@@ -240,16 +237,13 @@ generateAllTheVariants traitname func sname oper entries = [
[expr| $$(right).value[$$(i)] |]
mempty) mempty
generateTests :: RandomGen g => Word -> g -> [Map String String]
generateTests size g = go g numTestCases
generateTest :: RandomGen g => Word -> g -> (Map String String, g)
generateTest size g0 = (tcase, g2)
where
go _ 0 = []
go g0 i =
let (x, g1) = generateNum g0 size
(y, g2) = generateNum g1 size
tcase = Map.fromList [("x", showX x), ("y", showX y),
("a", showX (x .&. y)),
("o", showX (x .|. y)),
("e", showX (x `xor` y)),
("n", showX ( ((2 ^ size) - 1) `xor` x ))]
in tcase : go g2 (i - 1)
(x, g1) = generateNum g0 size
(y, g2) = generateNum g1 size
tcase = Map.fromList [("x", showX x), ("y", showX y),
("a", showX (x .&. y)),
("o", showX (x .|. y)),
("e", showX (x `xor` y)),
("n", showX ( ((2 ^ size) - 1) `xor` x ))]