void test_incompatible_args()
{
    const char* a1[] = {"osm2pgsql", "-a", "-c", "--slim", "tests/liechtenstein-2013-08-03.osm.pbf"};
    parse_fail(len(a1), a1, "options can not be used at the same time");

    const char* a2[] = {"osm2pgsql", "--drop", "tests/liechtenstein-2013-08-03.osm.pbf"};
    parse_fail(len(a2), a2, "drop only makes sense with");

    const char* a3[] = {"osm2pgsql", "-j", "-k", "tests/liechtenstein-2013-08-03.osm.pbf"};
    parse_fail(len(a3), a3, "you can not specify both");
}
示例#2
0
文件: main.cpp 项目: fezhang/Dragon
int main(int argc, const char * argv[])
{
    Parser parser;
    parser.expr();
    
    if (parse_fail())
        std::cout<<" Parse Fail"<<std::endl;
    else
        std::cout<<" END"<<std::endl;
    
    return 0;
}
示例#3
0
文件: main.cpp 项目: fezhang/Dragon
 void expr()
 {
     term();
     while(true){
         if ( '+' == lookahead)
         {
             match('+');
             term();
             if (parse_fail())
                 break;
             else
                 std::cout<<'+';
         }else if('-' == lookahead){
             match('-');
             term();
             if (parse_fail())
                 break;
             else
                 std::cout<<'-';
         }
         else return;
     }
 }
int main(void)
{
  /* From the spec */
  parse_success("amqp://*****:*****@host:10000/vhost", "user", "pass",
                "host", 10000, "vhost");
  parse_success("amqps://*****:*****@host:10000/vhost", "user", "pass",
                "host", 10000, "vhost");

  parse_success("amqp://user%61:%61pass@ho%61st:10000/v%2fhost",
                "usera", "apass", "hoast", 10000, "v/host");
  parse_success("amqps://user%61:%61pass@ho%61st:10000/v%2fhost",
                "usera", "apass", "hoast", 10000, "v/host");

  parse_success("amqp://", "guest", "guest", "localhost", 5672, "/");
  parse_success("amqps://", "guest", "guest", "localhost", 5671, "/");

  parse_success("amqp://:@/", "", "", "localhost", 5672, "");
  parse_success("amqps://:@/", "", "", "localhost", 5671, "");

  parse_success("amqp://user@", "user", "guest", "localhost", 5672, "/");
  parse_success("amqps://user@", "user", "guest", "localhost", 5671, "/");

  parse_success("amqp://*****:*****@", "user", "pass",
                "localhost", 5672, "/");
  parse_success("amqps://*****:*****@", "user", "pass",
                "localhost", 5671, "/");

  parse_success("amqp://host", "guest", "guest", "host", 5672, "/");
  parse_success("amqps://host", "guest", "guest", "host", 5671, "/");

  parse_success("amqp://:10000", "guest", "guest", "localhost", 10000,
                "/");
  parse_success("amqps://:10000", "guest", "guest", "localhost", 10000,
                "/");

  parse_success("amqp:///vhost", "guest", "guest", "localhost", 5672,
                "vhost");
  parse_success("amqps:///vhost", "guest", "guest", "localhost", 5671,
                "vhost");

  parse_success("amqp://host/", "guest", "guest", "host", 5672, "");
  parse_success("amqps://host/", "guest", "guest", "host", 5671, "");

  parse_success("amqp://host/%2f", "guest", "guest", "host", 5672, "/");
  parse_success("amqps://host/%2f", "guest", "guest", "host", 5671, "/");

  parse_success("amqp://[::1]", "guest", "guest", "::1", 5672, "/");
  parse_success("amqps://[::1]", "guest", "guest", "::1", 5671, "/");

  /* Various other success cases */
  parse_success("amqp://*****:*****@host", "user", "pass",
                "host", 5672, "/");
  parse_success("amqps://*****:*****@host", "user", "pass",
                "host", 5671, "/");

  parse_success("amqp://*****:*****@host:100", "user", "pass",
                "host", 100, "/");
  parse_success("amqps://*****:*****@host:100", "user", "pass",
                "host", 100, "/");

  parse_success("amqp://*****:*****@:100", "user", "pass",
                "localhost", 100, "/");
  parse_success("amqps://*****:*****@:100", "user", "pass",
                "localhost", 100, "/");

  parse_success("amqp://*****:*****@[::1]", "user", "pass",
                "::1", 5672, "/");
  parse_success("amqps://*****:*****@[::1]", "user", "pass",
                "::1", 5671, "/");

  parse_success("amqp://*****:*****@[::1]:100", "user", "pass",
                "::1", 100, "/");
  parse_success("amqps://*****:*****@[::1]:100", "user", "pass",
                "::1", 100, "/");

  /* Various failure cases */
  parse_fail("http://www.rabbitmq.com");

  parse_fail("amqp://foo:bar:baz");
  parse_fail("amqps://foo:bar:baz");

  parse_fail("amqp://foo[::1]");
  parse_fail("amqps://foo[::1]");

  parse_fail("amqp://foo[::1]");
  parse_fail("amqps://foo[::1]");

  parse_fail("amqp://foo:[::1]");
  parse_fail("amqps://foo:[::1]");

  parse_fail("amqp://[::1]foo");
  parse_fail("amqps://[::1]foo");

  parse_fail("amqp://foo:1000xyz");
  parse_fail("amqps://foo:1000xyz");

  parse_fail("amqp://foo:1000000");
  parse_fail("amqps://foo:1000000");

  parse_fail("amqp://foo/bar/baz");
  parse_fail("amqps://foo/bar/baz");

  parse_fail("amqp://foo%1");
  parse_fail("amqps://foo%1");

  parse_fail("amqp://foo%1x");
  parse_fail("amqps://foo%1x");

  parse_fail("amqp://foo%xy");
  parse_fail("amqps://foo%xy");

  return 0;
}
void test_insufficient_args()
{
    const char* argv[] = {"osm2pgsql", "-a", "-c", "--slim"};
    parse_fail(len(argv), argv, "usage error");
}