计算机代写 {-# OPTIONS_GHC -F -pgmF htfpp #-}

{-# OPTIONS_GHC -F -pgmF htfpp #-}

module SynthesizerTests (
htf_thisModulesTests

Copyright By PowCoder代写 加微信 powcoder

import Test.Framework
import Data.List
import Language
import Synthesizer

test_numberSplit = do
assertEqual [] (numberSplit 0)
assertEqual [] (numberSplit 1)
assertEqual [(1,1)] (numberSplit 2)
assertEqual [(1,2),(2,1)] (numberSplit 3)
assertEqual [(1,3),(2,2),(3,1)] (numberSplit 4)

test_baseExpressionsAtSize = do
assertEqual [] (baseExpressionsAtSize 0)
assertEqual [EBase False,EBase True] (sort (baseExpressionsAtSize 1))
assertEqual [] (baseExpressionsAtSize 2)

test_varExpressionsAtSize = do
assertEqual [] (varExpressionsAtSize (Context [“a”,”b”]) 0)
assertEqual [EVariable “a”,EVariable “b”] (sort (varExpressionsAtSize (Context [“a”,”b”]) 1))
assertEqual [EVariable “a1”,EVariable “a2”,EVariable “a3”] (sort (varExpressionsAtSize (Context [“a1″,”a2″,”a3”]) 1))
assertEqual [] (sort (varExpressionsAtSize (Context [“a1″,”a2″,”a3”]) 2))

test_notExpressionsAtSize = do
assertEqual [] (notExpressionsAtSize (\ _ -> [EBase True]) 0)
assertEqual
[ENot (EBase False), ENot (EBase True)]
(notExpressionsAtSize
(\ i -> if i == 1 then [EBase True,EBase False] else [])
assertEqual
(notExpressionsAtSize
(\ i -> if i == 1 then [EBase True,EBase False] else [])

test_andExpressionsAtSize = do
assertEqual [] (andExpressionsAtSize (\ _ -> [EBase True]) 0)
assertEqual
[EAnd (EBase False,EBase False)
,EAnd (EBase False,EBase True)
,EAnd (EBase True,EBase False)
,EAnd (EBase True, EBase True)]
(andExpressionsAtSize
(\ i -> if i == 1 then
[EBase True,EBase False]
else if i == 2 then
[ENot (EBase True),ENot (EBase False)]
assertEqual
[EAnd (ENot (EBase False),EBase False)
,EAnd (ENot (EBase False),EBase True)
,EAnd (ENot (EBase True),EBase False)
,EAnd (ENot (EBase True), EBase True)
,EAnd (EBase False,ENot (EBase False))
,EAnd (EBase False,ENot (EBase True))
,EAnd (EBase True,ENot (EBase False))
,EAnd (EBase True, ENot (EBase True))]
(andExpressionsAtSize
(\ i -> if i == 1 then
[EBase True,EBase False]
else if i == 2 then
[ENot (EBase True),ENot (EBase False)]

test_orExpressionsAtSize = do
assertEqual [] (orExpressionsAtSize (\ _ -> [EBase True]) 0)
assertEqual
[EOr (EBase False,EBase False)
,EOr (EBase False,EBase True)
,EOr (EBase True,EBase False)
,EOr (EBase True, EBase True)]
(orExpressionsAtSize
(\ i -> if i == 1 then
[EBase True,EBase False]
else if i == 2 then
[ENot (EBase True),ENot (EBase False)]
assertEqual
[EOr (ENot (EBase False),EBase False)
,EOr (ENot (EBase False),EBase True)
,EOr (ENot (EBase True),EBase False)
,EOr (ENot (EBase True), EBase True)
,EOr (EBase False,ENot (EBase False))
,EOr (EBase False,ENot (EBase True))
,EOr (EBase True,ENot (EBase False))
,EOr (EBase True, ENot (EBase True))]
(orExpressionsAtSize
(\ i -> if i == 1 then
[EBase True,EBase False]
else if i == 2 then
[ENot (EBase True),ENot (EBase False)]

test_expressionsAtSize :: IO ()
test_expressionsAtSize = do
assertEqual [] (expressionsAtSize (Context []) 0)
assertEqual
[EBase False,EBase True]
(sort (expressionsAtSize (Context []) 1))
assertEqual
[EVariable “a”, EVariable “b”, EBase False,EBase True]
(sort (expressionsAtSize (Context [“a”,”b”]) 1))
assertEqual
[ENot (EVariable “a”), ENot (EVariable “b”), ENot (EBase False),ENot (EBase True)]
(sort (expressionsAtSize (Context [“a”,”b”]) 2))
assertEqual
[EAnd (EBase False,EBase False), EAnd (EBase False,EBase True), EAnd (EBase True,EBase False),EAnd (EBase True,EBase True)
,EOr (EBase False,EBase False), EOr (EBase False,EBase True), EOr (EBase True,EBase False),EOr (EBase True,EBase True)
,ENot (ENot (EBase False)),ENot (ENot (EBase True))]
(sort (expressionsAtSize (Context []) 3))

test_expressionSatisfiesExamples :: IO ()
test_expressionSatisfiesExamples = do
assertEqual True (expressionSatisfiesExamples (Examples [(Assignment [],True)]) (EBase True))
assertEqual False (expressionSatisfiesExamples (Examples [(Assignment [],True)]) (EBase False))
assertEqual False (expressionSatisfiesExamples (Examples [(Assignment [],False)]) (EBase True))
assertEqual True (expressionSatisfiesExamples (Examples [(Assignment [],False)]) (EBase False))
assertEqual True (expressionSatisfiesExamples (Examples []) (EBase False))
assertEqual True (expressionSatisfiesExamples (Examples []) (EBase True))
assertEqual True (expressionSatisfiesExamples (Examples [(Assignment [(“a”,True)],True),(Assignment [(“a”,False)],False)]) (EVariable “a”))

test_generator :: IO ()
test_generator = do
assertEqual (Just (EBase True)) (generator (Context []) (Examples [(Assignment [],True)]) 1)
assertEqual (Just (EBase False)) (generator (Context []) (Examples [(Assignment [],False)]) 1)
assertEqual Nothing (generator (Context []) (Examples [(Assignment [(“a”,True)],False),(Assignment [(“a”,False)],True)]) 1)
assertEqual (Just (ENot (EVariable “a”))) (generator (Context [“a”]) (Examples [(Assignment [(“a”,True)],False),(Assignment [(“a”,False)],True)]) 3)
assertEqual
(Just (EAnd ((EVariable “a”),(EVariable “b”))))
(generator
(Context [“a”,”b”])
[(Assignment [(“a”,True),(“b”,True)],True)
,(Assignment [(“a”,True),(“b”,False)],False)
,(Assignment [(“a”,False),(“b”,True)],False)
,(Assignment [(“a”,False),(“b”,False)],False)
assertEqual
(generator
(Context [“a”,”b”])
[(Assignment [(“a”,True),(“b”,True)],True)
,(Assignment [(“a”,True),(“b”,False)],False)
,(Assignment [(“a”,False),(“b”,True)],False)
,(Assignment [(“a”,False),(“b”,False)],False)

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com