aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/unit_test/SourceConstructionTest.hs
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/unit_test/SourceConstructionTest.hs')
-rw-r--r--bootstrap/unit_test/SourceConstructionTest.hs27
1 files changed, 20 insertions, 7 deletions
diff --git a/bootstrap/unit_test/SourceConstructionTest.hs b/bootstrap/unit_test/SourceConstructionTest.hs
index 9429975..18a66de 100644
--- a/bootstrap/unit_test/SourceConstructionTest.hs
+++ b/bootstrap/unit_test/SourceConstructionTest.hs
@@ -9,7 +9,9 @@ import BuildModel ( RawSource(..)
)
import Hedge ( Result
, Test
+ , assertEquals
, assertThat
+ , fail'
, givenInput
, then'
, whenTransformed
@@ -19,22 +21,33 @@ test :: IO (Test ())
test = return $ givenInput
"a program"
exampleProgram
- [ whenTransformed "processed to a source"
- processRawSource
- [then' "it is a Program" checkIsProgram]
+ [ whenTransformed
+ "processed to a source"
+ processRawSource
+ [ then' "it is a Program" checkIsProgram
+ , then' "its source file name is the same as the original"
+ checkProgramSourceFileName
+ ]
]
exampleProgram :: RawSource
-exampleProgram = RawSource
- "some/file/somewhere.f90"
- $ unlines
+exampleProgram = RawSource programSourceFileName' $ unlines
[ "program some_program"
, " implicit none"
, " print *, \"Hello, World!\""
, "end program"
]
+programSourceFileName' :: String
+programSourceFileName' = "some/file/somewhere.f90"
+
checkIsProgram :: Source -> Result
checkIsProgram s = assertThat $ case s of
- Program -> True
+ Program{} -> True
_ -> False
+
+checkProgramSourceFileName :: Source -> Result
+checkProgramSourceFileName s = case s of
+ p@(Program{}) ->
+ assertEquals programSourceFileName' $ programSourceFileName p
+ _ -> fail' "wasn't a Program"