add some float tests
This commit is contained in:
parent
a0ed966a4a
commit
9c018ae96e
16
test/Main.hs
16
test/Main.hs
@ -3,12 +3,20 @@ import Push
|
|||||||
import State
|
import State
|
||||||
import Instructions.IntInstructions
|
import Instructions.IntInstructions
|
||||||
import Instructions.ExecInstructions
|
import Instructions.ExecInstructions
|
||||||
|
import Instructions.FloatInstructions
|
||||||
|
|
||||||
|
-- @TODO: Finish int and float tests
|
||||||
|
|
||||||
intTestFunc :: String -> [Int] -> [Gene] -> State -> IO ()
|
intTestFunc :: String -> [Int] -> [Gene] -> State -> IO ()
|
||||||
intTestFunc name goal genome startState =
|
intTestFunc name goal genome startState =
|
||||||
let state = loadProgram genome startState
|
let state = loadProgram genome startState
|
||||||
in assert (goal == int (interpretExec state)) putStrLn (name ++ " passed test.")
|
in assert (goal == int (interpretExec state)) putStrLn (name ++ " passed test.")
|
||||||
|
|
||||||
|
floatTestFunc :: String -> [Float] -> [Gene] -> State -> IO ()
|
||||||
|
floatTestFunc name goal genome startState =
|
||||||
|
let state = loadProgram genome startState
|
||||||
|
in assert (goal == float (interpretExec state)) putStrLn (name ++ " passed test.")
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
intTestFunc "instructionIntAdd" [8] [GeneInt 6, GeneInt 2, StateFunc instructionIntAdd] emptyState
|
intTestFunc "instructionIntAdd" [8] [GeneInt 6, GeneInt 2, StateFunc instructionIntAdd] emptyState
|
||||||
@ -16,6 +24,8 @@ main = do
|
|||||||
intTestFunc "instructionIntMul" [12] [GeneInt 6, GeneInt 2, StateFunc instructionIntMul] emptyState
|
intTestFunc "instructionIntMul" [12] [GeneInt 6, GeneInt 2, StateFunc instructionIntMul] emptyState
|
||||||
intTestFunc "instructionIntDiv" [3] [GeneInt 6, GeneInt 2, StateFunc instructionIntDiv] emptyState
|
intTestFunc "instructionIntDiv" [3] [GeneInt 6, GeneInt 2, StateFunc instructionIntDiv] emptyState
|
||||||
intTestFunc "instructionIntDiv0" [0, 2] [GeneInt 2, GeneInt 0, StateFunc instructionIntDiv] emptyState
|
intTestFunc "instructionIntDiv0" [0, 2] [GeneInt 2, GeneInt 0, StateFunc instructionIntDiv] emptyState
|
||||||
|
intTestFunc "instructionIntMod" [3] [GeneInt 13, GeneInt 5, StateFunc instructionIntMod] emptyState
|
||||||
|
|
||||||
intTestFunc "instructionExecIf" [6, 5] [GeneBool True, StateFunc instructionExecIf, Block [GeneInt 5, GeneInt 6], Block [GeneInt 7, GeneInt 8]] emptyState
|
intTestFunc "instructionExecIf" [6, 5] [GeneBool True, StateFunc instructionExecIf, Block [GeneInt 5, GeneInt 6], Block [GeneInt 7, GeneInt 8]] emptyState
|
||||||
intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, GeneInt 4, StateFunc instructionIntAdd] emptyState
|
intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, GeneInt 4, StateFunc instructionIntAdd] emptyState
|
||||||
intTestFunc "instructionExecDoRange" [12] [GeneInt 2, Block [GeneInt 4, GeneInt 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState
|
intTestFunc "instructionExecDoRange" [12] [GeneInt 2, Block [GeneInt 4, GeneInt 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState
|
||||||
@ -27,3 +37,9 @@ main = do
|
|||||||
|
|
||||||
let loadedState = loadProgram [GeneBool False, StateFunc instructionExecWhen, GeneInt 71] emptyState
|
let loadedState = loadProgram [GeneBool False, StateFunc instructionExecWhen, GeneInt 71] emptyState
|
||||||
assert (emptyState == interpretExec loadedState) putStrLn "instructionExecWhenFalse passed test."
|
assert (emptyState == interpretExec loadedState) putStrLn "instructionExecWhenFalse passed test."
|
||||||
|
|
||||||
|
floatTestFunc "instructionFloatAdd" [4.32] [GeneFloat 4.01, GeneFloat 0.31, StateFunc instructionFloatAdd] emptyState
|
||||||
|
floatTestFunc "instructionFloatSub" [3.6900003] [GeneFloat 4.01, GeneFloat 0.32, StateFunc instructionFloatSub] emptyState
|
||||||
|
floatTestFunc "instructionFloatMul" [1.38] [GeneFloat 0.12, GeneFloat 11.5, StateFunc instructionFloatMul] emptyState
|
||||||
|
floatTestFunc "instructionFloatDiv" [57.5] [GeneFloat 11.5, GeneFloat 0.2, StateFunc instructionFloatDiv] emptyState
|
||||||
|
floatTestFunc "instructionFloatDiv0" [0, 69.69] [GeneFloat 69.69, GeneFloat 0.0, StateFunc instructionFloatDiv] emptyState
|
||||||
|
Loading…
x
Reference in New Issue
Block a user