diff --git a/AMDiS/test/CMakeLists.txt b/AMDiS/test/CMakeLists.txt index 5f6979a381e943f7c8cd74cfdd7328c364660037..8a78070a423b3a963c1494fa4fe089ff303d8e3d 100644 --- a/AMDiS/test/CMakeLists.txt +++ b/AMDiS/test/CMakeLists.txt @@ -1,3 +1,4 @@ project(tests) add_subdirectory(demoimpl) +add_subdirectory(demotest) add_subdirectory(datacreation EXCLUDE_FROM_ALL) diff --git a/AMDiS/test/datacreation/CMakeLists.txt b/AMDiS/test/datacreation/CMakeLists.txt index 7cd35571872d387505ba050523e8489d13b57619..fd31128d50debb9a2b39ac75df325055edad9a7c 100644 --- a/AMDiS/test/datacreation/CMakeLists.txt +++ b/AMDiS/test/datacreation/CMakeLists.txt @@ -1,17 +1,18 @@ project(testdatacreation) include_directories(${AMDiS_SOURCE_DIR}) - file(GLOB PROJECTFILES src/*Project.cpp) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src) + file(GLOB PROJECTFILES ${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src/*Project.cpp) set(CREATELINE "") foreach(projectfile ${PROJECTFILES}) #create creatorname get_filename_component(CppName ${projectfile} NAME_WE) string(REPLACE "Project" "" creatorsuffix ${CppName}) - set(PROJECTINCLUDE "${CppName}.h") + set(PROJECTINCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src/${CppName}.h") set(CURRENTPROJECTTYPE "${creatorsuffix}demo") string(TOLOWER "${creatorsuffix}" creatorsuffix_lower) set(BASENAME "${creatorsuffix_lower}") configure_file(src/creator_base.cpp src/creator${creatorsuffix}.cpp @ONLY) - add_executable(creator${creatorsuffix} src/creator${creatorsuffix}.cpp src/ProjectList.cpp ${projectfile}) + add_executable(creator${creatorsuffix} src/creator${creatorsuffix}.cpp src/ProjectList.cpp) target_link_libraries(creator${creatorsuffix} ${AMDiS_LIBS} demoimpl) file(GLOB initfiles RELATIVE ${CMAKE_CURRENT_BINARY_DIR} init/${creatorsuffix_lower}*.dat*) foreach(initfile ${initfiles}) diff --git a/AMDiS/test/demoimpl/src/ProjectList.cpp b/AMDiS/test/datacreation/src/ProjectList.cpp similarity index 63% rename from AMDiS/test/demoimpl/src/ProjectList.cpp rename to AMDiS/test/datacreation/src/ProjectList.cpp index 3f06026b8d695cfb20189f72cf1c02b08208134c..5471409254ca66dd293dfd85214cb278652980be 100644 --- a/AMDiS/test/demoimpl/src/ProjectList.cpp +++ b/AMDiS/test/datacreation/src/ProjectList.cpp @@ -20,16 +20,3 @@ void write(SolutionInformation& info, std::string filename) { assert(false); } -bool compare(SolutionInformation& info, std::string filename) { - if(info.sysVec != NULL) { - assert(false); - }else if(info.dofVec != NULL) { - DOFVector< double > fileVec(info.dofVec->getFeSpace(), "fileVec"); - Mesh fileMesh("",2); - fileMesh = *(info.dofVec->getFeSpace()->getMesh()); - ArhReader::read(filename, &fileMesh, &fileVec); - }else - assert(false); - return false; -} - diff --git a/AMDiS/test/demoimpl/src/creator_base.cpp b/AMDiS/test/datacreation/src/creator_base.cpp similarity index 91% rename from AMDiS/test/demoimpl/src/creator_base.cpp rename to AMDiS/test/datacreation/src/creator_base.cpp index 9b9ab64ad82682de10c3c82a129187146a2996a1..6a3809cc8639b03cac7e1bc17354965538b6d42e 100644 --- a/AMDiS/test/demoimpl/src/creator_base.cpp +++ b/AMDiS/test/datacreation/src/creator_base.cpp @@ -3,6 +3,7 @@ #include "@PROJECTINCLUDE@" typedef @CURRENTPROJECTTYPE@ ProjectType; std::string basename="@BASENAME@"; +void write(SolutionInformation& info, std::string filename); int main(int argc, char** argv) { if(argc < 2) { std::cout<<" need initfile "<<basename<<"*\n"; diff --git a/AMDiS/test/demoimpl/src/Project.h b/AMDiS/test/demoimpl/src/Project.h index c3a12d0e796d25cb9107566ab79a2a68799f2c38..fcfe61268d8506e56f67c035b2f41dd6c4afb62a 100644 --- a/AMDiS/test/demoimpl/src/Project.h +++ b/AMDiS/test/demoimpl/src/Project.h @@ -20,8 +20,6 @@ struct SolutionInformation { }; -void write(SolutionInformation&, std::string filename); -bool compare(SolutionInformation&, std::string filename); class Project { public: virtual void create(std::string& ) = 0; diff --git a/AMDiS/test/demotest/CMakeLists.txt b/AMDiS/test/demotest/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..7bc4fe650c4962f7af5da8da983a1872d13b11fb --- /dev/null +++ b/AMDiS/test/demotest/CMakeLists.txt @@ -0,0 +1,22 @@ +project(demotest) + include_directories(${AMDiS_SOURCE_DIR}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src) + file(GLOB PROJECTFILES ${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src/*Project.cpp) + foreach(projectfile ${PROJECTFILES}) + #create creatorname + get_filename_component(CppName ${projectfile} NAME_WE) + string(REPLACE "Project" "" creatorsuffix ${CppName}) + set(PROJECTINCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src/${CppName}.h") + set(CURRENTPROJECTTYPE "${creatorsuffix}demo") + string(TOLOWER "${creatorsuffix}" creatorsuffix_lower) + set(BASENAME "${creatorsuffix_lower}") + configure_file(src/tester_base.cpp src/tester${creatorsuffix}.cpp @ONLY) + add_executable(tester${creatorsuffix} src/tester${creatorsuffix}.cpp src/Comparer.cpp) + target_link_libraries(tester${creatorsuffix} ${AMDiS_LIBS} demoimpl) + file(GLOB initfiles RELATIVE ${CMAKE_CURRENT_BINARY_DIR} init/${creatorsuffix_lower}*.dat*) + foreach(initfile ${initfiles}) + get_filename_component(initfile_ext ${initfile} EXT) + string(REPLACE ".dat." "" initfile_ext "${initfile_ext}") + set(curoutputdatafile "../testdata/${creatorsuffix_lower}_${initfile_ext}.arh") + endforeach(initfile) + endforeach(projectfile) diff --git a/AMDiS/test/demotest/init b/AMDiS/test/demotest/init new file mode 120000 index 0000000000000000000000000000000000000000..13f09ccb11f6f41b2f0152754733ebb282bc77f4 --- /dev/null +++ b/AMDiS/test/demotest/init @@ -0,0 +1 @@ +../testdata/init \ No newline at end of file diff --git a/AMDiS/test/demotest/macro b/AMDiS/test/demotest/macro new file mode 120000 index 0000000000000000000000000000000000000000..3ee9fb64c3086802b27858bf7f598981f6e8e323 --- /dev/null +++ b/AMDiS/test/demotest/macro @@ -0,0 +1 @@ +../testdata/macro \ No newline at end of file diff --git a/AMDiS/test/demotest/src/Comparer.cpp b/AMDiS/test/demotest/src/Comparer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..84983f838fd89ac2a4a2a7bf18dbdfa02957fbcb --- /dev/null +++ b/AMDiS/test/demotest/src/Comparer.cpp @@ -0,0 +1,16 @@ +#include "Project.h" +#include "io/ArhReader.h" +bool compare(SolutionInformation& info, std::string filename) +{ + if(info.sysVec != NULL) { + assert(false); + }else if(info.dofVec != NULL) { + DOFVector< double > fileVec(info.dofVec->getFeSpace(), "fileVec"); + Mesh fileMesh("",2); + fileMesh = *(info.dofVec->getFeSpace()->getMesh()); + ArhReader::read(filename, &fileMesh, &fileVec); + DOFVector< double > nsolvec(*(info.dofVec)); + }else + assert(false); + return false; +} diff --git a/AMDiS/test/demotest/src/tester_base.cpp b/AMDiS/test/demotest/src/tester_base.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f436ba7dbfec2c51db7053f7c86c777129fea1d0 --- /dev/null +++ b/AMDiS/test/demotest/src/tester_base.cpp @@ -0,0 +1,27 @@ +#include "Parameters.h" +#include "Project.h" +#include "@PROJECTINCLUDE@" +bool compare(SolutionInformation& info, std::string filename); +typedef @CURRENTPROJECTTYPE@ ProjectType; +std::string basename="@BASENAME@"; +int main(int argc, char** argv) { + if(argc < 2) { + std::cout<<" need initfile "<<basename<<"*\n"; + return 1; + } + if(argc < 3) { + std::cout<<" also need a destination file "<<basename<<"*\n"; + return 2; + } + std::string initfile(argv[1]); + std::string destinationfile(argv[2]); + AMDiS::Parameters::init(false, initfile); + ProjectType project; + ProjectInfo info(&project, initfile, destinationfile); + info.create(); + SolutionInformation solinfo; + info.solve(solinfo); + if(compare(solinfo, info.getFilename())) + return 0; + return 1; +}