Index: src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp
===================================================================
--- src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision d468b5b482a483d2acfa64791dce6e4790547819)
+++ src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision e2d0986cdfaebfc9b9055a8aed765c8d5f3e8907)
@@ -48,4 +48,5 @@
 
 #include "CodePatterns/Assert.hpp"
+#include "CodePatterns/Log.hpp"
 
 #include "Fragmentation/Exporters/SphericalPointDistribution.hpp"
@@ -67,4 +68,6 @@
   // failing asserts should be thrown
   ASSERT_DO(Assert::Throw);
+
+  setVerbosity(5);
 }
 
@@ -101,5 +104,20 @@
         SPD.get<2>();
     SphericalPointDistribution::Polygon_t expected;
-    expected += Vector(-1.,0.,0.);
+    expected += Vector(0.,-1.,0.);
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip to another axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,0.,-1.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<2>();
+    SphericalPointDistribution::Polygon_t expected;
+    expected += Vector(0.,0.,1.);
     SphericalPointDistribution::Polygon_t remaining =
         SphericalPointDistribution::matchSphericalPointDistributions(
@@ -130,3 +148,203 @@
     CPPUNIT_ASSERT_EQUAL( expected, remaining );
   }
-}
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<3>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
+
+/** UnitTest for matchSphericalPointDistributions() with four points
+ */
+void SphericalPointDistributionTest::matchSphericalPointDistributionsTest_4()
+{
+  SphericalPointDistribution SPD(1.);
+
+  // test with one point, matching trivially
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(1.,0.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<4>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<4>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
+
+/** UnitTest for matchSphericalPointDistributions() with five points
+ */
+void SphericalPointDistributionTest::matchSphericalPointDistributionsTest_5()
+{
+  SphericalPointDistribution SPD(1.);
+
+  // test with one point, matching trivially
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(1.,0.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<5>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<5>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
+
+/** UnitTest for matchSphericalPointDistributions() with six points
+ */
+void SphericalPointDistributionTest::matchSphericalPointDistributionsTest_6()
+{
+  SphericalPointDistribution SPD(1.);
+
+  // test with one point, matching trivially
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(1.,0.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<6>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<6>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
+
+/** UnitTest for matchSphericalPointDistributions() with seven points
+ */
+void SphericalPointDistributionTest::matchSphericalPointDistributionsTest_7()
+{
+  SphericalPointDistribution SPD(1.);
+
+  // test with one point, matching trivially
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(1.,0.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<7>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<7>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
+
+/** UnitTest for matchSphericalPointDistributions() with eight points
+ */
+void SphericalPointDistributionTest::matchSphericalPointDistributionsTest_8()
+{
+  SphericalPointDistribution SPD(1.);
+
+  // test with one point, matching trivially
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(1.,0.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<8>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+
+  // test with one point, just a flip of axis
+  {
+    SphericalPointDistribution::Polygon_t polygon;
+    polygon += Vector(0.,1.,0.);
+    SphericalPointDistribution::Polygon_t newpolygon =
+        SPD.get<8>();
+    SphericalPointDistribution::Polygon_t expected = newpolygon;
+    expected.pop_front(); // remove first point
+    SphericalPointDistribution::Polygon_t remaining =
+        SphericalPointDistribution::matchSphericalPointDistributions(
+            polygon,
+            newpolygon);
+    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+  }
+}
