Use scomplex throughout rather than simplcompltype
[libstick.git] / tests / persistence.h
index 186039c53e2aef8e0ee21c087837bc959175dbf3..aac47234bb7bd07f18b3042b7007319fcfb2dc22 100644 (file)
@@ -13,7 +13,7 @@ class persistence_TestSuite: public Test::Suite {
 
     private:
         typedef simplicial_function<3, uint32_t, uint32_t> sfunction;
-        typedef sfunction::simplcompltype scomplex;
+        typedef sfunction::scomplex scomplex;
         typedef persistence<3, uint32_t> pers;
         typedef pers::boundary_matrix bm;
         typedef pers::lowestones_matrix lom;
@@ -34,6 +34,7 @@ class persistence_TestSuite: public Test::Suite {
             TEST_ADD(persistence_TestSuite::test_betti_numbers);
             TEST_ADD(persistence_TestSuite::test_lowestones);
             TEST_ADD(persistence_TestSuite::test_diagram);
+            TEST_ADD(persistence_TestSuite::test_diagrampoint_value);
         }
 
     protected:
@@ -221,6 +222,28 @@ class persistence_TestSuite: public Test::Suite {
 #endif
         }
 
+        void test_diagrampoint_value() {
+            pers torusp(otorus);
+            torusp.compute_diagrams();
+
+            // We make a simplicial function that assigns to each simplex twice
+            // the index as value.
+            sfunction ftorus(torus);
+            ftorus.make_complete();
+            for (unsigned i=1; i < torus.size(); ++i)
+                ftorus.set_value(i, 2*i);
+
+            for (unsigned d=0; d <= 3; ++d) {
+                const pers::diagram &dia = torusp.get_persistence_diagram(d);
+                for (unsigned i=0; i < dia.births.size(); ++i) {
+                    TEST_ASSERT(2 * dia.births[i].birth == dia.births[i].get_birth_value(otorus, ftorus));
+                    TEST_ASSERT(2 * dia.births[i].death == dia.births[i].get_death_value(otorus, ftorus));
+                    TEST_ASSERT(2 * (dia.births[i].death - dia.births[i].birth) ==
+                            dia.births[i].get_persistence(otorus, ftorus));
+                }
+            }
+        }
+
         void test_betti_numbers() {
             pers ringp(oring);
             ringp.compute_diagrams();