From ff7943ee3abad16eac28eacb40fd0b12bfbcc5ca Mon Sep 17 00:00:00 2001
From: Andreas Naumann <andreas.naumann@tu-dresden.de>
Date: Wed, 1 Dec 2010 15:22:29 +0000
Subject: [PATCH] added tester, look for testing later

---
 AMDiS/test/CMakeLists.txt                     |  1 +
 AMDiS/test/datacreation/CMakeLists.txt        |  7 ++---
 .../src/ProjectList.cpp                       | 13 ---------
 .../src/creator_base.cpp                      |  1 +
 AMDiS/test/demoimpl/src/Project.h             |  2 --
 AMDiS/test/demotest/CMakeLists.txt            | 22 +++++++++++++++
 AMDiS/test/demotest/init                      |  1 +
 AMDiS/test/demotest/macro                     |  1 +
 AMDiS/test/demotest/src/Comparer.cpp          | 16 +++++++++++
 AMDiS/test/demotest/src/tester_base.cpp       | 27 +++++++++++++++++++
 10 files changed, 73 insertions(+), 18 deletions(-)
 rename AMDiS/test/{demoimpl => datacreation}/src/ProjectList.cpp (63%)
 rename AMDiS/test/{demoimpl => datacreation}/src/creator_base.cpp (91%)
 create mode 100644 AMDiS/test/demotest/CMakeLists.txt
 create mode 120000 AMDiS/test/demotest/init
 create mode 120000 AMDiS/test/demotest/macro
 create mode 100644 AMDiS/test/demotest/src/Comparer.cpp
 create mode 100644 AMDiS/test/demotest/src/tester_base.cpp

diff --git a/AMDiS/test/CMakeLists.txt b/AMDiS/test/CMakeLists.txt
index 5f6979a3..8a78070a 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 7cd35571..fd31128d 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 3f06026b..54714092 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 9b9ab64a..6a3809cc 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 c3a12d0e..fcfe6126 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 00000000..7bc4fe65
--- /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 00000000..13f09ccb
--- /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 00000000..3ee9fb64
--- /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 00000000..84983f83
--- /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 00000000..f436ba7d
--- /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;
+}
-- 
GitLab