diff --git a/.cproject b/.cproject
index 700b82ce6..97cdc3bcb 100644
--- a/.cproject
+++ b/.cproject
@@ -2553,6 +2553,14 @@
true
true
+
+ make
+ -j5
+ testManifold.run
+ true
+ true
+ true
+
make
-j5
diff --git a/tests/testManifold.cpp b/tests/testManifold.cpp
index e43cde102..2c3b20434 100644
--- a/tests/testManifold.cpp
+++ b/tests/testManifold.cpp
@@ -69,29 +69,42 @@ TEST(Manifold, DefaultChart) {
EXPECT(chart1.apply(Point2(1,0))==Vector2(1,0));
EXPECT(chart1.retract(Vector2(1,0))==Point2(1,0));
+ Vector v2(2);
+ v2 << 1, 0;
DefaultChart chart2(Vector2(0, 0));
- EXPECT(chart2.apply(Vector2(1,0))==Vector2(1,0));
- EXPECT(chart2.retract(Vector2(1,0))==Vector2(1,0));
+ EXPECT(assert_equal(v2,chart2.apply(Vector2(1,0))));
+ EXPECT(chart2.retract(v2)==Vector2(1,0));
DefaultChart chart3(0);
- Eigen::Matrix v1;
+ Vector v1(1);
v1 << 1;
- EXPECT(chart3.apply(1)==v1);
- EXPECT(chart3.retract(v1)==1);
+ EXPECT(assert_equal(v1,chart3.apply(1)));
+ EXPECT_DOUBLES_EQUAL(chart3.retract(v1), 1, 1e-9);
// Dynamic does not work yet !
-// Vector z = zero(2), v(2);
-// v << 1, 0;
-// DefaultChart chart4(z);
-// EXPECT(chart4.apply(v)==v);
-// EXPECT(chart4.retract(v)==v);
+ Vector z = zero(2), v(2);
+ v << 1, 0;
+ DefaultChart chart4(z);
+ EXPECT(assert_equal(chart4.apply(v),v));
+ EXPECT(assert_equal(chart4.retract(v),v));
+
+ Vector v3(3);
+ v3 << 1, 1, 1;
+ Rot3 I = Rot3::identity();
+ Rot3 R = I.retractCayley(v3);
+ DefaultChart chart5(I);
+ EXPECT(assert_equal(v3,chart5.apply(R)));
+ EXPECT(assert_equal(chart5.retract(v3),R));
+ // Check zero vector
+ DefaultChart chart6(R);
+ EXPECT(assert_equal(zero(3),chart6.apply(R)));
}
/* ************************************************************************* */
// zero
TEST(Manifold, _zero) {
EXPECT(assert_equal(Pose3(),traits::zero::value()));
- Cal3Bundler cal(0,0,0);
+ Cal3Bundler cal(0, 0, 0);
EXPECT(assert_equal(cal,traits::zero::value()));
EXPECT(assert_equal(Camera(Pose3(),cal),traits::zero::value()));
}
@@ -104,39 +117,44 @@ TEST(Manifold, Canonical) {
EXPECT(chart1.apply(Point2(1,0))==Vector2(1,0));
EXPECT(chart1.retract(Vector2(1,0))==Point2(1,0));
+ Vector v2(2);
+ v2 << 1, 0;
Canonical chart2;
- EXPECT(assert_equal((Vector)chart2.apply(Vector2(1,0)),Vector2(1,0)));
- EXPECT(chart2.retract(Vector2(1,0))==Vector2(1,0));
+ EXPECT(assert_equal(v2,chart2.apply(Vector2(1,0))));
+ EXPECT(chart2.retract(v2)==Vector2(1,0));
Canonical chart3;
Eigen::Matrix v1;
v1 << 1;
EXPECT(chart3.apply(1)==v1);
- EXPECT(chart3.retract(v1)==1);
+ EXPECT_DOUBLES_EQUAL(chart3.retract(v1), 1, 1e-9);
Canonical chart4;
- Point3 point(1,2,3);
- Vector3 v3(1,2,3);
- EXPECT(assert_equal((Vector)chart4.apply(point),v3));
+ Point3 point(1, 2, 3);
+ Vector v3(3);
+ v3 << 1, 2, 3;
+ EXPECT(assert_equal(v3,chart4.apply(point)));
EXPECT(assert_equal(chart4.retract(v3),point));
Canonical chart5;
- Pose3 pose(Rot3::identity(),point);
- Vector6 v6; v6 << 0,0,0,1,2,3;
- EXPECT(assert_equal((Vector)chart5.apply(pose),v6));
+ Pose3 pose(Rot3::identity(), point);
+ Vector v6(6);
+ v6 << 0, 0, 0, 1, 2, 3;
+ EXPECT(assert_equal(v6,chart5.apply(pose)));
EXPECT(assert_equal(chart5.retract(v6),pose));
Canonical chart6;
- Cal3Bundler cal0(0,0,0);
- Camera camera(Pose3(),cal0);
- Vector9 z9 = Vector9::Zero();
- EXPECT(assert_equal((Vector)chart6.apply(camera),z9));
+ Cal3Bundler cal0(0, 0, 0);
+ Camera camera(Pose3(), cal0);
+ Vector z9 = Vector9::Zero();
+ EXPECT(assert_equal(z9,chart6.apply(camera)));
EXPECT(assert_equal(chart6.retract(z9),camera));
Cal3Bundler cal; // Note !! Cal3Bundler() != zero::value()
- Camera camera2(pose,cal);
- Vector9 v9; v9 << 0,0,0,1,2,3,1,0,0;
- EXPECT(assert_equal((Vector)chart6.apply(camera2),v9));
+ Camera camera2(pose, cal);
+ Vector v9(9);
+ v9 << 0, 0, 0, 1, 2, 3, 1, 0, 0;
+ EXPECT(assert_equal(v9,chart6.apply(camera2)));
EXPECT(assert_equal(chart6.retract(v9),camera2));
}