diff c/test_graph.cpp @ 201:f7ddfc4aeb1e

added tests for graphs
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 05 Mar 2012 01:52:56 -0500
parents 0a27fa343257
children f0f800b95765 bc4ea09b1743
line wrap: on
line diff
--- a/c/test_graph.cpp	Fri Mar 02 19:32:54 2012 -0500
+++ b/c/test_graph.cpp	Mon Mar 05 01:52:56 2012 -0500
@@ -6,15 +6,18 @@
 #include <boost/test/unit_test.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 
+#include <iostream>
+
 using namespace std;
 using namespace cv;
 
 BOOST_AUTO_TEST_SUITE(test_graph)
 
-BOOST_AUTO_TEST_CASE(graph_add_delete) {
-  FeatureGraph featureGraph(5, 1, 5 /* min time interval */, 1.);
-  FeatureTrajectoryPtr ft1 = createFeatureTrajectory(10, 20, Point2f(1,1), Point2f(0.5, 0.));
-  FeatureTrajectoryPtr ft2 = createFeatureTrajectory(10, 20, Point2f(1.1,1), Point2f(0.5, 0.));
+BOOST_AUTO_TEST_CASE(graph_add_connected_components) {
+  FeatureGraph featureGraph(5, 1, 5 , 1.); // (float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime, float _minNFeaturesPerGroup)
+  unsigned int lastInstant = 20;
+  FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, 10, lastInstant, Point2f(1,1), Point2f(0.5, 0.));
+  FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, 10, lastInstant, Point2f(1.1,1), Point2f(0.5, 0.));
 
   featureGraph.addFeature(ft1);
   BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 1);
@@ -24,7 +27,37 @@
   BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 2);
   BOOST_CHECK_EQUAL(featureGraph.getNEdges(), 1);
 
-  
+  featureGraph.connectedComponents(lastInstant);
+  vector<vector<unsigned int> > components = featureGraph.getFeatureGroups();
+  BOOST_CHECK_EQUAL(components.size(), 0);
+  BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 2);
+  BOOST_CHECK_EQUAL(featureGraph.getNEdges(), 1);
+
+  featureGraph.connectedComponents(lastInstant+1);
+  components = featureGraph.getFeatureGroups();
+  BOOST_CHECK_EQUAL(components.size(), 1);
+  BOOST_CHECK_EQUAL(components[0].size(), 2);
+  BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 0);
+  BOOST_CHECK_EQUAL(featureGraph.getNEdges(), 0);
+
+  // test connection distance
+  featureGraph.addFeature(ft1);
+  featureGraph.addFeature(ft2);
+  FeatureTrajectoryPtr ft3 = createFeatureTrajectory(3, 10, lastInstant, Point2f(6.05,1), Point2f(0.5, 0.)); // connected to ft2 only
+  featureGraph.addFeature(ft3);
+  FeatureTrajectoryPtr ft4 = createFeatureTrajectory(4, 10, lastInstant, Point2f(11.1,1), Point2f(0.5, 0.)); // not connected
+  featureGraph.addFeature(ft4);
+
+  BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 4);
+  BOOST_CHECK_EQUAL(featureGraph.getNEdges(), 2);
+
+  featureGraph.connectedComponents(lastInstant+1);
+  components = featureGraph.getFeatureGroups();
+  BOOST_CHECK_EQUAL(components.size(), 2);
+  BOOST_CHECK_EQUAL(components[0].size(), 3);
+  BOOST_CHECK_EQUAL(components[1].size(), 1);
+  BOOST_CHECK_EQUAL(featureGraph.getNVertices(), 0);
+  BOOST_CHECK_EQUAL(featureGraph.getNEdges(), 0);
 }
 
 BOOST_AUTO_TEST_SUITE_END()