aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bootstrap/src/BuildModel.hs11
-rw-r--r--bootstrap/unit_test/SourceConstructionTest.hs35
2 files changed, 43 insertions, 3 deletions
diff --git a/bootstrap/src/BuildModel.hs b/bootstrap/src/BuildModel.hs
new file mode 100644
index 0000000..87c45c7
--- /dev/null
+++ b/bootstrap/src/BuildModel.hs
@@ -0,0 +1,11 @@
+module BuildModel where
+
+data RawSource = RawSource {
+ rawSourceFilename :: FilePath
+ , rawSourceContents :: String
+}
+
+data Source = Program
+
+processRawSource :: RawSource -> Source
+processRawSource _ = Program
diff --git a/bootstrap/unit_test/SourceConstructionTest.hs b/bootstrap/unit_test/SourceConstructionTest.hs
index a3fdf68..9429975 100644
--- a/bootstrap/unit_test/SourceConstructionTest.hs
+++ b/bootstrap/unit_test/SourceConstructionTest.hs
@@ -3,9 +3,38 @@ module SourceConstructionTest
)
where
-import Hedge ( Test
- , describe
+import BuildModel ( RawSource(..)
+ , Source(..)
+ , processRawSource
+ )
+import Hedge ( Result
+ , Test
+ , assertThat
+ , givenInput
+ , then'
+ , whenTransformed
)
test :: IO (Test ())
-test = return $ describe "something" []
+test = return $ givenInput
+ "a program"
+ exampleProgram
+ [ whenTransformed "processed to a source"
+ processRawSource
+ [then' "it is a Program" checkIsProgram]
+ ]
+
+exampleProgram :: RawSource
+exampleProgram = RawSource
+ "some/file/somewhere.f90"
+ $ unlines
+ [ "program some_program"
+ , " implicit none"
+ , " print *, \"Hello, World!\""
+ , "end program"
+ ]
+
+checkIsProgram :: Source -> Result
+checkIsProgram s = assertThat $ case s of
+ Program -> True
+ _ -> False