diff options
Diffstat (limited to 'test/Unit.hs')
-rw-r--r-- | test/Unit.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/Unit.hs b/test/Unit.hs new file mode 100644 index 0000000..13b9027 --- /dev/null +++ b/test/Unit.hs @@ -0,0 +1,42 @@ +module Unit (unitTests) where + +import Control.Lens +import qualified Data.Graph.Inductive as G +import Data.Text (Text) +import qualified Data.Text as T +import Test.Tasty +import Test.Tasty.HUnit +import Test.VeriFuzz + +unitTests = testGroup "Unit tests" + [ testCase "Transformation of AST" $ + assertEqual "Successful transformation" transformExpectedResult + (transformOf traverseExpr trans transformTestData) + ] + +transformTestData :: Expr +transformTestData = BinOp (BinOp (BinOp (Id "id1") BinAnd (Id "id2")) BinAnd + (BinOp (Id "id1") BinAnd (Id "id2"))) BinAnd + (BinOp (BinOp (BinOp (Id "id1") BinAnd (Id "id2")) BinAnd + (BinOp (Id "id1") BinAnd (BinOp (BinOp (Id "id1") BinAnd (Id "id2")) BinAnd + (BinOp (Id "id1") BinAnd (Id "id2"))))) BinOr + (Concat [Concat [ Concat [Id "id1", Id "id2", Id "id2"], Id "id2", Id "id2" + , Concat [Id "id2", Id "id2", Concat [Id "id1", Id "id2"]] + , Id "id2"], Id "id1", Id "id2"])) + +transformExpectedResult :: Expr +transformExpectedResult = BinOp (BinOp (BinOp (Id "id1") BinAnd (Id "Replaced")) BinAnd + (BinOp (Id "id1") BinAnd (Id "Replaced"))) BinAnd + (BinOp (BinOp (BinOp (Id "id1") BinAnd (Id "Replaced")) BinAnd + (BinOp (Id "id1") BinAnd (BinOp (BinOp (Id "id1") BinAnd (Id "Replaced")) BinAnd + (BinOp (Id "id1") BinAnd (Id "Replaced"))))) BinOr + (Concat [Concat [ Concat [Id "id1", Id "Replaced", Id "Replaced"], Id "Replaced", Id "Replaced" + , Concat [Id "Replaced", Id "Replaced", Concat [Id "id1", Id "Replaced"]] + , Id "Replaced"], Id "id1", Id "Replaced"])) + +trans e = + case e of + Id id -> if id == Identifier "id2" then + Id $ Identifier "Replaced" + else Id id + _ -> e |