Add a unit tests file for SimplifyTypes.

The tests in there at the moment are pretty trivial, but I'm going to
want to add more stuff to SimplifyTypes later.
This commit is contained in:
Adam Sampson 2008-06-11 15:56:24 +00:00
parent 8545b08aee
commit 3eeda5d821
4 changed files with 71 additions and 1 deletions

View File

@ -182,6 +182,7 @@ tocktest_SOURCES += frontends/RainTypesTest.hs
tocktest_SOURCES += frontends/StructureOccamTest.hs
tocktest_SOURCES += transformations/PassTest.hs
tocktest_SOURCES += transformations/SimplifyAbbrevsTest.hs
tocktest_SOURCES += transformations/SimplifyTypesTest.hs
pregen_sources = data/AST.hs
pregen_sources += pregen/PregenUtils.hs

View File

@ -46,6 +46,8 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- * "SimplifyAbbrevsTest"
--
-- * "SimplifyTypesTest"
--
-- * "StructureOccamTest"
--
-- * "UsageCheckTest"
@ -73,6 +75,7 @@ import qualified PreprocessOccamTest (tests)
import qualified RainPassesTest (tests)
import qualified RainTypesTest (ioTests)
import qualified SimplifyAbbrevsTest (tests)
import qualified SimplifyTypesTest (tests)
import qualified StructureOccamTest (tests)
import qualified UsageCheckTest (tests)
import TestUtils
@ -191,6 +194,7 @@ main = do (opts, nonOpts, errs) <- getArgs >>* getOpt RequireOrder options
,noqc RainPassesTest.tests
,noqcButIO RainTypesTest.ioTests
,noqc SimplifyAbbrevsTest.tests
,noqc SimplifyTypesTest.tests
,noqc StructureOccamTest.tests
,noqc UsageCheckTest.tests
]

View File

@ -17,7 +17,10 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
-}
-- | Simplify types in the AST.
module SimplifyTypes (simplifyTypes) where
module SimplifyTypes (
simplifyTypes
, resolveNamedTypes
) where
import Control.Monad.State

View File

@ -0,0 +1,62 @@
{-
Tock: a compiler for parallel languages
Copyright (C) 2008 University of Kent
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
-}
-- | Tests for 'SimplifyTypes'.
module SimplifyTypesTest (tests) where
import Control.Monad.State
import Data.Generics
import Test.HUnit hiding (State)
import CompState
import qualified AST as A
import Metadata
import Pattern
import SimplifyTypes
import TagAST
import TestUtils
import TreeUtils
m :: Meta
m = emptyMeta
setupState :: State CompState ()
setupState
= do defineUserDataType "MYINT" A.Int
testResolveNamedTypes :: Test
testResolveNamedTypes = TestLabel "testResolveNamedTypes" $ TestList
[ ok 0 A.Int
A.Int
, ok 1 myint
A.Int
, ok 2 (array10 myint)
(array10 A.Int)
]
where
ok :: (Data a, Data b) => Int -> a -> b -> Test
ok n inp exp = TestCase $ testPass ("testResolveNamedTypes" ++ show n)
exp resolveNamedTypes inp setupState
myint = A.UserDataType (simpleName "MYINT")
array10 = A.Array [dimension 10]
tests :: Test
tests = TestLabel "SimplifyTypesTest" $ TestList
[ testResolveNamedTypes
]