Fixed ArgumentListGrammar

release/4.3a0
dellaert 2014-12-01 10:38:24 +01:00
parent 0e5332ed3e
commit 7dbe9389cb
2 changed files with 18 additions and 1 deletions

View File

@ -173,7 +173,8 @@ struct ArgumentListGrammar: public classic::grammar<ArgumentListGrammar> {
wrap::ArgumentList& result_; ///< successful parse will be placed in here
Argument arg, arg0;
const Argument arg0; // used to reset arg
mutable Argument arg; // temporary argument for use during parsing
ArgumentGrammar argument_g;
/// Construct type grammar and specify where result is placed

View File

@ -95,16 +95,32 @@ TEST( ArgumentList, grammar ) {
actual.clear();
EXPECT(parse("(char a)", g, space_p).full);
EXPECT_LONGS_EQUAL(1, actual.size());
actual.clear();
EXPECT(parse("(unsigned char a)", g, space_p).full);
EXPECT_LONGS_EQUAL(1, actual.size());
actual.clear();
EXPECT(parse("(Vector v, Matrix m)", g, space_p).full);
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();
EXPECT(parse("(Point2 p)", g, space_p).full);
EXPECT_LONGS_EQUAL(1, actual.size());
actual.clear();
EXPECT(parse("(Point2 p1, Point3 p2)", g, space_p).full);
EXPECT_LONGS_EQUAL(2, actual.size());
EXPECT(actual[0]==Argument(Qualified("Point2"),"p1"));
EXPECT(actual[1]==Argument(Qualified("Point3"),"p2"));
actual.clear();
EXPECT(parse("(gtsam::Point2 p3)", g, space_p).full);
EXPECT_LONGS_EQUAL(1, actual.size());
actual.clear();
}
/* ************************************************************************* */