// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** \file
- \brief Parse.test unit tests */
+ \brief Parse unit tests */
//#include "Parse.test.hh"
//#include "Parse.test.ih"
std::ostream & os_;
- void pushDirectory(std::vector<senf::console::Token> const & path)
- { os_ << "pushDirectory( " << senf::stringJoin(path, "/") << " )\n"; }
+ void pushDirectory()
+ { os_ << "pushDirectory()\n"; }
void popDirectory()
{ os_ << "popDirectory()\n"; }
"foo/bar/ {",
grammar.use_parser<Grammar::CommandParser>(),
grammar.use_parser<Grammar::SkipParser>() ) . full );
- BOOST_CHECK_EQUAL( ss.str(), "pushDirectory( Word('foo')/Word('bar')/None('') )\n" );
+ BOOST_CHECK_EQUAL( ss.str(),
+ "beginCommand( Word('foo')/Word('bar')/None('') )\n"
+ "pushDirectory()\n"
+ "endCommand()\n" );
}
{
" 0304\";"
"ls /foo/bar; ";
- BOOST_CHECK_NO_THROW( parser.parse(text, &setInfo) );
+ SENF_CHECK_NO_THROW( parser.parse(text, &setInfo) );
BOOST_CHECK_EQUAL( commands.size(), 2u );
{
BOOST_CHECK_EQUAL_COLLECTIONS( info.commandPath().begin(), info.commandPath().end(),
path, path + sizeof(path)/sizeof(path[0]) );
+ BOOST_CHECK_EQUAL( boost::next(info.commandPath().begin())->index(), 16u );
BOOST_CHECK_EQUAL( unsigned(info.tokens().size()), 15u );
char const * tokens[] = { "arg",
++ args;
BOOST_REQUIRE( args != info.arguments().end() );
- BOOST_REQUIRE_EQUAL( args->size(), 1 );
+ BOOST_REQUIRE_EQUAL( args->size(), 1u );
BOOST_CHECK_EQUAL( args->begin()->value(), tokens[1] );
++ args;
BOOST_REQUIRE( args != info.arguments().end() );
- BOOST_REQUIRE_EQUAL( args->size(), 1 );
+ BOOST_REQUIRE_EQUAL( args->size(), 1u );
BOOST_CHECK_EQUAL( args->begin()->value(), tokens[2] );
++ args;
BOOST_REQUIRE( args != info.arguments().end() );
- BOOST_REQUIRE_EQUAL( args->size(), 8 );
+ BOOST_REQUIRE_EQUAL( args->size(), 8u );
for (unsigned i (0); i<8; ++i)
BOOST_CHECK_EQUAL( args->begin()[i].value(), tokens[4+i] );
+ BOOST_CHECK_EQUAL( info.tokens().begin()[3].index(), 96u );
+ BOOST_CHECK_EQUAL( info.tokens().begin()[5].index(), 98u );
+ BOOST_CHECK_EQUAL( info.tokens().begin()[12].index(), 109u );
++ args;
BOOST_REQUIRE( args != info.arguments().end() );
- BOOST_REQUIRE_EQUAL( args->size(), 1 );
+ BOOST_REQUIRE_EQUAL( args->size(), 1u );
BOOST_CHECK_EQUAL( args->begin()->value(), tokens[13] );
+ BOOST_CHECK_EQUAL( args->begin()->index(), 126u );
++ args;
BOOST_REQUIRE( args != info.arguments().end() );
- BOOST_REQUIRE_EQUAL( args->size(), 1 );
+ BOOST_REQUIRE_EQUAL( args->size(), 1u );
BOOST_CHECK_EQUAL( args->begin()->value(), tokens[14] );
++ args;
{
senf::console::CommandParser parser;
- BOOST_CHECK_NO_THROW( parser.parse("foo a", &setInfo) );
+ SENF_CHECK_NO_THROW( parser.parse("foo a", &setInfo) );
BOOST_CHECK_THROW( parseArgs(commands.back().arguments()),
senf::console::SyntaxErrorException );
- BOOST_CHECK_NO_THROW( parser.parse("foo a b", &setInfo) );
- BOOST_CHECK_NO_THROW( parseArgs(commands.back().arguments()) );
+ SENF_CHECK_NO_THROW( parser.parse("foo a b", &setInfo) );
+ SENF_CHECK_NO_THROW( parseArgs(commands.back().arguments()) );
- BOOST_CHECK_NO_THROW( parser.parse("foo a b c", &setInfo) );
+ SENF_CHECK_NO_THROW( parser.parse("foo a b c", &setInfo) );
BOOST_CHECK_THROW( parseArgs(commands.back().arguments()),
senf::console::SyntaxErrorException );
try { parser.parse(c, &setInfo); } \
catch (std::exception & ex) { msg = parseErrorMessage(ex.what()); } \
BOOST_CHECK_EQUAL( msg, e )
-
+
CheckParseEx( "/foo/bar;\n ()", "path expected\nat <unknown>:2:3" );
CheckParseEx( "cd /foo/bar foo/bar", "end of statement expected\nat <unknown>:1:13" );
CheckParseEx( "/foo/bar foo /", "end of statement expected\nat <unknown>:1:14" );