From 5e247bf07d47675c61b60d5c5b42f871170a653a Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Mon, 22 Oct 2018 22:52:29 -0400
Subject: [PATCH] added integrate tests

---
 src/amdis/gridfunctions/Integrate.hpp |  2 +-
 test/CMakeLists.txt                   |  4 +++
 test/IntegrateTest.cpp                | 48 +++++++++++++++++++++++++++
 3 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100644 test/IntegrateTest.cpp

diff --git a/src/amdis/gridfunctions/Integrate.hpp b/src/amdis/gridfunctions/Integrate.hpp
index c84833e2..a433f4c3 100644
--- a/src/amdis/gridfunctions/Integrate.hpp
+++ b/src/amdis/gridfunctions/Integrate.hpp
@@ -61,7 +61,7 @@ namespace AMDiS
       return 0.0;
 #else
     return Dune::Hybrid::ifElse(bool_<expr_has_order>,
-      [&](auto) { return Impl::integrateImpl(std::forward<decltype(gridFct)>(gridFct), gridView, makeQuad); },
+      [&](auto) { return Impl::integrateImpl(gridFct, gridView, makeQuad); },
       [ ](auto) { return 0.0; });
 #endif
   }
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a18847f2..35cf6057 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -24,6 +24,10 @@ dune_add_test(SOURCES FiniteElementTypeTest.cpp
 dune_add_test(SOURCES FilesystemTest.cpp
   LINK_LIBRARIES amdis)
 
+dune_add_test(SOURCES IntegrateTest.cpp
+  LINK_LIBRARIES amdis
+  CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/ellipt.dat.2d")
+
 dune_add_test(SOURCES MarkerTest.cpp
   LINK_LIBRARIES amdis
   CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/marker.dat.2d")
diff --git a/test/IntegrateTest.cpp b/test/IntegrateTest.cpp
new file mode 100644
index 00000000..a94c26f5
--- /dev/null
+++ b/test/IntegrateTest.cpp
@@ -0,0 +1,48 @@
+// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+// vi: set et ts=4 sw=2 sts=2:
+
+#include <iostream>
+
+#include <dune/geometry/type.hh>
+
+#include <amdis/AMDiS.hpp>
+#include <amdis/ProblemStat.hpp>
+#include <amdis/Operators.hpp>
+#include <amdis/common/Literals.hpp>
+#include <amdis/common/FieldMatVec.hpp>
+#include <amdis/gridfunctions/Integrate.hpp>
+
+#include "Tests.hpp"
+
+using namespace AMDiS;
+
+using ElliptParam   = YaspGridBasis<2, 2>;
+using ElliptProblem = ProblemStat<ElliptParam>;
+
+int main(int argc, char** argv)
+{
+  AMDiS::init(argc, argv);
+
+  ElliptProblem prob("ellipt");
+  prob.initialize(INIT_ALL);
+
+  auto u = prob.getSolution(0);
+  auto gv = u.basis().gridView();
+
+  u << 1.0;
+  auto i1 = integrate(1.0, gv);
+  auto i2 = integrate(u, gv);
+  auto i3 = integrate([](auto const& x) { return 1.0; }, gv, 0);
+
+  AMDIS_TEST(i1 == 1.0);
+  AMDIS_TEST(i2 == 1.0);
+  AMDIS_TEST(i3 == 1.0);
+
+  auto quad = Dune::QuadratureRules<double,2>::rule(Dune::GeometryTypes::quadrilateral, 0);
+  auto i4 = integrate([](auto const& x) { return 1.0; }, gv, quad);
+
+  AMDIS_TEST(i4 == 1.0);
+
+  AMDiS::finalize();
+  return 0;
+}
-- 
GitLab