From 9bdbf42e97644bc78a2528a5a5a6a6da3f69b7e5 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Mon, 23 May 2011 14:48:26 +0000
Subject: [PATCH] A factory that produces sets of test values for various
 target spaces

[[Imported from SVN: r7306]]
---
 test/valuefactory.hh | 80 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 test/valuefactory.hh

diff --git a/test/valuefactory.hh b/test/valuefactory.hh
new file mode 100644
index 00000000..cc867867
--- /dev/null
+++ b/test/valuefactory.hh
@@ -0,0 +1,80 @@
+#ifndef VALUE_FACTORY_HH
+#define VALUE_FACTORY_HH
+
+#include <vector>
+
+#include <dune/gfe/unitvector.hh>
+
+/** \brief A class that creates sets of values of various types, to be used in unit tests
+ * 
+ * This is the generic dummy.  The actual work is done in specializations.
+ */
+template <class T>
+class ValueFactory
+{
+public:
+    static void get(std::vector<T>& values);
+    
+};
+
+
+/** \brief A class that creates sets of values of various types, to be used in unit tests
+ * 
+ * This is the specialization for UnitVector<2>
+ */
+template <>
+class ValueFactory<UnitVector<2> >
+{
+public:
+    static void get(std::vector<UnitVector<2> >& values) {
+     
+        int nTestPoints = 10;
+        double testPoints[10][2] = {{1,0}, {0.5,0.5}, {0,1}, {-0.5,0.5}, {-1,0}, {-0.5,-0.5}, {0,-1}, {0.5,-0.5}, {0.1,1}, {1,.1}};
+    
+        values.resize(nTestPoints);
+        
+        // Set up elements of S^1
+        for (int i=0; i<nTestPoints; i++) {
+        
+            Dune::array<double,2> w = {{testPoints[i][0], testPoints[i][1]}};
+            values[i] = UnitVector<2>(w);
+
+        }
+        
+    }
+    
+};
+
+
+/** \brief A class that creates sets of values of various types, to be used in unit tests
+ * 
+ * This is the specialization for UnitVector<3>
+ */
+template <>
+class ValueFactory<UnitVector<3> >
+{
+public:
+    static void get(std::vector<UnitVector<3> >& values) {
+     
+        int nTestPoints = 10;
+        double testPoints[10][3] = {{1,0,0}, {0,1,0}, {-0.838114,0.356751,-0.412667},
+                                    {-0.490946,-0.306456,0.81551},{-0.944506,0.123687,-0.304319},
+                                    {-0.6,0.1,-0.2},{0.45,0.12,0.517},
+                                    {-0.1,0.3,-0.1},{-0.444506,0.123687,0.104319},{-0.7,-0.123687,-0.304319}};
+
+        values.resize(nTestPoints);
+        
+        // Set up elements of S^1
+        for (int i=0; i<nTestPoints; i++) {
+        
+            Dune::array<double,3> w = {{testPoints[i][0], testPoints[i][1], testPoints[i][2]}};
+            values[i] = UnitVector<3>(w);
+
+        }
+        
+    }
+    
+};
+
+
+#endif
\ No newline at end of file
-- 
GitLab