Index: src/Fragmentation/Exporters/unittests/Makefile.am
===================================================================
--- src/Fragmentation/Exporters/unittests/Makefile.am	(revision 946948095381375c00dab3c30c47866ce46ccbd8)
+++ src/Fragmentation/Exporters/unittests/Makefile.am	(revision 8d38e631f707887332ddaf1eeae9971c822e4b38)
@@ -21,4 +21,5 @@
 
 TESTS += $(FRAGMENTATIONEXPORTERSTESTS)
+XFAIL_TESTS += SphericalPointDistributionUnitTest
 check_PROGRAMS += $(FRAGMENTATIONEXPORTERSTESTS) 
 noinst_PROGRAMS += $(FRAGMENTATIONEXPORTERSTESTS)
Index: src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp
===================================================================
--- src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision 946948095381375c00dab3c30c47866ce46ccbd8)
+++ src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision 8d38e631f707887332ddaf1eeae9971c822e4b38)
@@ -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 );
+  }
+}
Index: src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.hpp
===================================================================
--- src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.hpp	(revision 946948095381375c00dab3c30c47866ce46ccbd8)
+++ src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.hpp	(revision 8d38e631f707887332ddaf1eeae9971c822e4b38)
@@ -24,4 +24,9 @@
     CPPUNIT_TEST ( matchSphericalPointDistributionsTest_2 );
     CPPUNIT_TEST ( matchSphericalPointDistributionsTest_3 );
+    CPPUNIT_TEST ( matchSphericalPointDistributionsTest_4 );
+    CPPUNIT_TEST ( matchSphericalPointDistributionsTest_5 );
+    CPPUNIT_TEST ( matchSphericalPointDistributionsTest_6 );
+    CPPUNIT_TEST ( matchSphericalPointDistributionsTest_7 );
+    CPPUNIT_TEST ( matchSphericalPointDistributionsTest_8 );
     CPPUNIT_TEST_SUITE_END();
 
@@ -31,4 +36,9 @@
       void matchSphericalPointDistributionsTest_2();
       void matchSphericalPointDistributionsTest_3();
+      void matchSphericalPointDistributionsTest_4();
+      void matchSphericalPointDistributionsTest_5();
+      void matchSphericalPointDistributionsTest_6();
+      void matchSphericalPointDistributionsTest_7();
+      void matchSphericalPointDistributionsTest_8();
 
 private:
