From 25f4176b8f943fa255943368744833d671e242d6 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Sat, 10 Sep 2011 13:36:44 +0200
Subject: [PATCH] Clean up testing code

---
 src/bisection-example-new.cc | 41 +++++++++++++++---------------------
 1 file changed, 17 insertions(+), 24 deletions(-)

diff --git a/src/bisection-example-new.cc b/src/bisection-example-new.cc
index c44375fe..f4820def 100644
--- a/src/bisection-example-new.cc
+++ b/src/bisection-example-new.cc
@@ -152,6 +152,20 @@ class SampleFunctional {
   }
 };
 
+template <int dim, class Function>
+void functionTester(
+    SampleFunctional<dim, Function> J,
+    typename SampleFunctional<dim, Function>::SmallVector &start, size_t runs) {
+  typename SampleFunctional<dim, Function>::SmallVector correction;
+  for (size_t i = 1; i <= runs; ++i) {
+    correction = J.minimise(start);
+    start += correction;
+    if (i != runs)
+      std::cout << "New value: J(...) = " << J(start) << std::endl;
+  }
+  std::cout << "Arrived at J(...) = " << J(start) << std::endl;
+}
+
 void testSampleFunction() {
   int const dim = 2;
   typedef SampleFunctional<dim, SampleFunction> SampleFunctional;
@@ -167,21 +181,10 @@ void testSampleFunction() {
 
   SampleFunctional J(A, b);
 
-  SampleFunctional::SmallVector c = b;
-  c /= c.two_norm();
-
-  // assert(J.directionalDerivative(b,c) == 2*sqrt(5) + 2);
-
   SampleFunctional::SmallVector start = b;
   start *= 17;
-  SampleFunctional::SmallVector correction;
 
-  for (int i = 1; i <= 6; ++i) {
-    correction = J.minimise(start);
-    start += correction;
-    std::cout << "New value: J(...) = " << J(start) << std::endl;
-  }
-  std::cout << "Arrived at J(...) = " << J(start) << std::endl;
+  functionTester(J, start, 6);
 }
 
 void testTrivialFunction() {
@@ -199,26 +202,16 @@ void testTrivialFunction() {
 
   SampleFunctional J(A, b);
 
-  SampleFunctional::SmallVector c = b;
-  c /= c.two_norm();
-
-  // assert(J.directionalDerivative(b,c) == 2*sqrt(5));
-
   SampleFunctional::SmallVector start = b;
   start *= 17;
-  SampleFunctional::SmallVector correction;
 
-  for (int i = 1; i <= 5; ++i) {
-    correction = J.minimise(start);
-    start += correction;
-    std::cout << "New value: J(...) = " << J(start) << std::endl;
-  }
-  std::cout << "Arrived at J(...) = " << J(start) << std::endl;
+  functionTester(J, start, 5);
 }
 
 int main() {
   try {
     testSampleFunction();
+    std::cout << std::endl;
     testTrivialFunction();
     return 0;
   }
-- 
GitLab