From a42d68ad4386a7a797eaaa35bdf501c0344f60e9 Mon Sep 17 00:00:00 2001 From: Brad Richardson Date: Tue, 20 Oct 2020 14:56:00 -0500 Subject: Add tests for submodule's compile time info --- bootstrap/unit_test/SubmoduleToCompileInfoTest.hs | 74 +++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 bootstrap/unit_test/SubmoduleToCompileInfoTest.hs (limited to 'bootstrap/unit_test/SubmoduleToCompileInfoTest.hs') diff --git a/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs b/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs new file mode 100644 index 0000000..4b3f474 --- /dev/null +++ b/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs @@ -0,0 +1,74 @@ +module SubmoduleToCompileInfoTest + ( test + ) +where + +import BuildModel ( CompileTimeInfo(..) + , Source(..) + , constructCompileTimeInfo + ) +import Hedge ( Result + , Test + , assertEquals + , givenInput + , then' + , whenTransformed + ) +import System.FilePath ( () ) + +test :: IO (Test ()) +test = return $ givenInput + "a submodule and available modules" + (exampleSubmodule, availableModules) + [ whenTransformed + "its compileTimeInfo is determined" + doCompileTimeTransformation + [ then' "it still knows the original source file" checkSourceFileName + , then' "it knows what object file will be produced" checkObjectFileName + , then' "the smod file is also produced" checkOtherFilesProduced + , then' + "the direct dependencies are the parent smod and the available modules used" + checkDirectDependencies + ] + ] + +exampleSubmodule :: Source +exampleSubmodule = Submodule + { submoduleSourceFileName = submoduleSourceFileName' + , submoduleObjectFileName = \bd -> bd "some_file_somewhere.f90.o" + , submoduleModulesUsed = ["module1", "module2", "module3"] + , submoduleParentName = "base_module@parent" + , submoduleName = "some_submodule" + } + +submoduleSourceFileName' :: FilePath +submoduleSourceFileName' = "some" "file" "somewhere.f90" + +availableModules :: [String] +availableModules = ["module1", "module3"] + +doCompileTimeTransformation :: (Source, [String]) -> CompileTimeInfo +doCompileTimeTransformation (programSource, otherSources) = + constructCompileTimeInfo programSource otherSources "build_dir" + +checkSourceFileName :: CompileTimeInfo -> Result +checkSourceFileName cti = + assertEquals submoduleSourceFileName' (compileTimeInfoSourceFileName cti) + +checkObjectFileName :: CompileTimeInfo -> Result +checkObjectFileName cti = assertEquals + ("build_dir" "some_file_somewhere.f90.o") + (compileTimeInfoObjectFileProduced cti) + +checkOtherFilesProduced :: CompileTimeInfo -> Result +checkOtherFilesProduced cti = assertEquals + ["build_dir" "base_module@parent@some_submodule.smod"] + (compileTimeInfoOtherFilesProduced cti) + +checkDirectDependencies :: CompileTimeInfo -> Result +checkDirectDependencies cti = assertEquals + [ "build_dir" "base_module@parent.smod" + , "build_dir" "module1.mod" + , "build_dir" "module3.mod" + ] + (compileTimeInfoDirectDependencies cti) -- cgit v1.2.3 From 03c9efc756568ce9c74fdb9dc9df216975e5cd69 Mon Sep 17 00:00:00 2001 From: Brad Richardson Date: Thu, 22 Oct 2020 16:43:58 -0500 Subject: Add test with submodule example project and fix .smod naming convention --- bootstrap/unit_test/SubmoduleToCompileInfoTest.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'bootstrap/unit_test/SubmoduleToCompileInfoTest.hs') diff --git a/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs b/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs index 4b3f474..d5d3ad8 100644 --- a/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs +++ b/bootstrap/unit_test/SubmoduleToCompileInfoTest.hs @@ -37,6 +37,7 @@ exampleSubmodule = Submodule { submoduleSourceFileName = submoduleSourceFileName' , submoduleObjectFileName = \bd -> bd "some_file_somewhere.f90.o" , submoduleModulesUsed = ["module1", "module2", "module3"] + , submoduleBaseModuleName = "base_module" , submoduleParentName = "base_module@parent" , submoduleName = "some_submodule" } @@ -62,7 +63,7 @@ checkObjectFileName cti = assertEquals checkOtherFilesProduced :: CompileTimeInfo -> Result checkOtherFilesProduced cti = assertEquals - ["build_dir" "base_module@parent@some_submodule.smod"] + ["build_dir" "base_module@some_submodule.smod"] (compileTimeInfoOtherFilesProduced cti) checkDirectDependencies :: CompileTimeInfo -> Result -- cgit v1.2.3