| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | /* ----------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * GTSAM Copyright 2010, Georgia Tech Research Corporation,  | 
					
						
							|  |  |  |  * Atlanta, Georgia 30332-0415 | 
					
						
							|  |  |  |  * All Rights Reserved | 
					
						
							|  |  |  |  * Authors: Frank Dellaert, et al. (see THANKS for the full author list) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * See LICENSE for the license information | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * -------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @file testArgument.cpp | 
					
						
							|  |  |  |  * @brief Unit test for Argument class | 
					
						
							|  |  |  |  * @author Frank Dellaert | 
					
						
							|  |  |  |  * @date Nov 12, 2014 | 
					
						
							|  |  |  |  **/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <wrap/Argument.h>
 | 
					
						
							|  |  |  | #include <CppUnitLite/TestHarness.h>
 | 
					
						
							|  |  |  | #include <iostream>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using namespace std; | 
					
						
							|  |  |  | using namespace wrap; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //******************************************************************************
 | 
					
						
							|  |  |  | TEST( Argument, grammar ) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   using classic::space_p; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Create type grammar that will place result in actual
 | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   Argument actual, arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  |   ArgumentGrammar g(actual); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("const gtsam::Point2& p4", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 03:12:03 +08:00
										 |  |  |   EXPECT(actual.type==Qualified("gtsam","Point2",Qualified::CLASS)); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   EXPECT(actual.name=="p4"); | 
					
						
							|  |  |  |   EXPECT(actual.is_const); | 
					
						
							|  |  |  |   EXPECT(actual.is_ref); | 
					
						
							|  |  |  |   EXPECT(!actual.is_ptr); | 
					
						
							|  |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-30 22:51:14 +08:00
										 |  |  |   EXPECT(parse("Point2& p", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 03:12:03 +08:00
										 |  |  |   EXPECT(actual.type==Qualified("Point2",Qualified::CLASS)); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   EXPECT(actual.name=="p"); | 
					
						
							|  |  |  |   EXPECT(!actual.is_const); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:51:14 +08:00
										 |  |  |   EXPECT(actual.is_ref); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   EXPECT(!actual.is_ptr); | 
					
						
							|  |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-30 22:51:14 +08:00
										 |  |  |   EXPECT(parse("gtsam::Point2* p3", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 03:12:03 +08:00
										 |  |  |   EXPECT(actual.type==Qualified("gtsam","Point2",Qualified::CLASS)); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   EXPECT(actual.name=="p3"); | 
					
						
							|  |  |  |   EXPECT(!actual.is_const); | 
					
						
							|  |  |  |   EXPECT(!actual.is_ref); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:51:14 +08:00
										 |  |  |   EXPECT(actual.is_ptr); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("char a", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-11-30 23:08:42 +08:00
										 |  |  |   EXPECT(actual==Argument(Qualified("char",Qualified::BASIS),"a")); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("unsigned char a", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-11-30 23:08:42 +08:00
										 |  |  |   EXPECT(actual==Argument(Qualified("unsigned char",Qualified::BASIS),"a")); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("Vector v", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-11-30 23:08:42 +08:00
										 |  |  |   EXPECT(actual==Argument(Qualified("Vector",Qualified::EIGEN),"v")); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   actual = arg0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("const Matrix& m", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 03:12:03 +08:00
										 |  |  |   EXPECT(actual.type==Qualified("Matrix",Qualified::EIGEN)); | 
					
						
							| 
									
										
										
										
											2014-11-30 22:46:41 +08:00
										 |  |  |   EXPECT(actual.name=="m"); | 
					
						
							|  |  |  |   EXPECT(actual.is_const); | 
					
						
							|  |  |  |   EXPECT(actual.is_ref); | 
					
						
							|  |  |  |   EXPECT(!actual.is_ptr); | 
					
						
							|  |  |  |   actual = arg0; | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //******************************************************************************
 | 
					
						
							|  |  |  | TEST( ArgumentList, grammar ) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   using classic::space_p; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Create type grammar that will place result in actual
 | 
					
						
							|  |  |  |   ArgumentList actual; | 
					
						
							|  |  |  |   ArgumentListGrammar g(actual); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-30 23:08:42 +08:00
										 |  |  |   EXPECT(parse("(const gtsam::Point2& p4)", g, space_p).full); | 
					
						
							|  |  |  |   EXPECT_LONGS_EQUAL(1, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  |   EXPECT(parse("()", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-11-30 23:08:42 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(0, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(char a)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(1, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(unsigned char a)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(1, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(Vector v, Matrix m)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(2, actual.size()); | 
					
						
							|  |  |  |   EXPECT(actual[0]==Argument(Qualified("Vector",Qualified::EIGEN),"v")); | 
					
						
							|  |  |  |   EXPECT(actual[1]==Argument(Qualified("Matrix",Qualified::EIGEN),"m")); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(Point2 p)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(1, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(Point2 p1, Point3 p2)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(2, actual.size()); | 
					
						
							|  |  |  |   EXPECT(actual[0]==Argument(Qualified("Point2"),"p1")); | 
					
						
							|  |  |  |   EXPECT(actual[1]==Argument(Qualified("Point3"),"p2")); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   EXPECT(parse("(gtsam::Point2 p3)", g, space_p).full); | 
					
						
							| 
									
										
										
										
											2014-12-01 17:38:24 +08:00
										 |  |  |   EXPECT_LONGS_EQUAL(1, actual.size()); | 
					
						
							|  |  |  |   actual.clear(); | 
					
						
							| 
									
										
										
										
											2014-11-30 21:58:45 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* ************************************************************************* */ | 
					
						
							|  |  |  | int main() { | 
					
						
							|  |  |  |   TestResult tr; | 
					
						
							|  |  |  |   return TestRegistry::runAllTests(tr); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | /* ************************************************************************* */ |