示例#1
0
MergeJoinRelation *
MergeJoinRelation::makeMergeJoinRelation(  
    RelationPtr left, RelationPtr right, const char *name,
    ExpressionPtr leftexp, ExpressionPtr rightexp,
    bool str
){
    RelationMetaPtr rmp( new RelationMeta());
    rmp->setRelationName( name );
    unsigned i;
    for( i=0; i< left->getNumColumns(); ++i )
    {
        rmp->addColumn( left->getColumnName( i ));
    }
    for( i=0; i< right->getNumColumns(); ++i )
    {
        //fprintf(stderr, 
        //    "MergeJoinRelation::make...(): name %s\n", 
        //    right->getRelationName()
        //);
        string s;
        try{
            rmp->addColumn( right->getColumnName( i ));
        }catch( BaseException &be )
        {
            s += right->getRelationName();
            s += "_" ;
            s += right->getColumnName( i );
        }
        if( ! s.empty())
        {
            rmp->addColumn( s.c_str());
        }
    }
    return new MergeJoinRelation( left, right, rmp, leftexp, rightexp, str);
}
int run_segway(segwayrmp::InterfaceType interface_type, std::string configuration, int config_type = 0) {
    std::cout << "!!!!!!!!!!!!WARNING!!!!!!!!!!!!" << std::endl;
    std::cout << "This example moves the segway!!" << std::endl;
    std::cout << "(If you continue, ctrl-c quits)" << std::endl;
    std::cout << "Do you want to continue? [No/yes]  ";
    std::string response;
    std::getline(std::cin, response);
    std::transform(response.begin(), response.end(),
    response.begin(), ::tolower);
    if (response != std::string("yes") and response != std::string("y")) {
        std::cout << "Aborting." << std::endl;
        return 1;
    }
    try {
        // segwayrmp::SegwayRMP rmp(interface_type, segwayrmp::rmp100);
        segwayrmp::SegwayRMP rmp(interface_type);
        if (interface_type == segwayrmp::serial) {
            rmp.configureSerial(configuration);
        } else if (interface_type == segwayrmp::usb) {
            switch (config_type) {
                case 1:
                    rmp.configureUSBBySerial(configuration);
                    break;
                case 2:
                    rmp.configureUSBByDescription(configuration);
                    break;
                case 3:
                    rmp.configureUSBByIndex(atoi(configuration.c_str()));
                    break;
                case 0:
                default:
                    std::cout << "Invalid interface type provided." << std::endl;
                    return 0;
            }
        }
        rmp.setStatusCallback(handleSegwayStatus);
        rmp.connect();
        while(true) {
            rmp.move(0.1, 0);
            usleep(100000);
        }
    } catch (std::exception &e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }
}
示例#3
0
int main()
{
    //Check the normal path fragment matching used for the C++ layer
    assert_int_eq(1<<0, prm("/",          ""),
            "Check Simple Empty Path",           __LINE__);
    assert_int_eq(1<<1, prm("19",         ""),
            "Check Basic Enum Matching",         __LINE__);
    assert_int_eq(1<<2, prm("19",         "ff", 1.0, 2.0),
            "Check Enum+Args Matching",          __LINE__);
    assert_int_eq(0<<3, prm("pat",        ""),
            "Check Partial Path Failure",        __LINE__);
    assert_int_eq(1<<3, prm("path",       ""),
            "Check Full Path Match",             __LINE__);
    assert_int_eq(0<<3, prm("paths",      ""),
            "Check Overfull Path Failure",       __LINE__);
    assert_int_eq(1<<4, prm("path123/",   "ff", 1.0, 2.0),
            "Check Composite Path",              __LINE__);
    assert_int_eq(1<<5, prm("path0asdf",  ""),
            "Check Embedded Enum",               __LINE__);
    assert_int_eq(1<<6, prm("foobar23/",  ""),
            "Check Another Enum",                __LINE__);
    assert_int_eq(0<<6, prm("foobar123/", ""),
            "Check Enum Too Large Failure",      __LINE__);
    assert_int_eq(1<<6, prm("foobar122/", ""),
            "Check Enum Edge Case",              __LINE__);
    assert_int_eq(1<<7, prm("blam/",      ""),
            "Check Subpath Match",               __LINE__);
    assert_int_eq(1<<7, prm("blam/blam",  ""),
            "Check Partial Match Of Full Path",  __LINE__);
    assert_int_eq(0<<7, prm("blam",       ""),
            "Check Subpath Missing '/' Failure", __LINE__);
    assert_int_eq(1<<9, prm("bfnpar1",    "c"),
            "Check Optional Arg Case 1",         __LINE__);
    assert_int_eq(1<<9, prm("bfnpar1",    ""),
            "Check Optional Arg Case 2",         __LINE__);
    assert_int_eq(1<<10,prm("zoo",        ""),
            "Check PseudoWild Case 1",           __LINE__);
    assert_int_eq(1<<10,prm("zam",        ""),
            "Check PseudoWild Case 2",           __LINE__);
    assert_int_eq(1<<10,prm("zit",        ""),
            "Check PseudoWild Case 3",           __LINE__);
    assert_int_eq(0<<10,prm("zap",        ""),
            "Check PseudoWild Case 4",           __LINE__);
    assert_int_eq(1<<11,prm("flam/args",  ""),
            "MultiPath Case 1",                  __LINE__);
    assert_int_eq(1<<11,prm("flam/bugs",  ""),
            "MultiPath Case 2",                  __LINE__);
    assert_int_eq(0<<11,prm("flam/error",  ""),
            "MultiPath Case 3",                  __LINE__);


    printf("\n# Suite 2 On Standard Based Matching Alg.\n");
    //Check the standard path matching algorithm
    assert_true(rmp("foobar", "foobar"),  "Check Literal Equality",   __LINE__);
    assert_false(rmp("foocar", "foobar"), "Check Literal Inequality", __LINE__);

    assert_true(rmp("foobar",  "?[A-z]?bar"), "Check Char Pattern Equality", __LINE__);
    assert_false(rmp("foobar",  "?[!A-z]?bar"), "Check Char Pattern Inequality", __LINE__);

    assert_true(rmp("baz", "*"), "Check Trivial Wildcard", __LINE__);
    assert_true(rmp("baz", "ba*"), "Check Wildcard Partial Equality", __LINE__);
    assert_false(rmp("baz", "bb*"), "Check Wildcard Partial Inequality", __LINE__);
    assert_false(rmp("baz", "ba*z"), "Check Invalid Wildcard Partial Inequality", __LINE__);

    assert_true(rmp("lizard52", "lizard#53"), "Check Enum Equality", __LINE__);
    assert_false(rmp("lizard99", "lizard#53"), "Check Enum Inequality", __LINE__);
    assert_false(rmp("lizard", "lizard#53"), "Check Enum Inequality", __LINE__);


    const char *rtosc_match_options(const char *pattern, const char **msg);
    //Check additional extension
    const char *ex_msgA = "A";
    const char *ex_msgB = "B";
    const char *ex_msgF = "F";
    assert_true(rtosc_match_options("{A,B,C,D,E}",  &ex_msgA) != NULL,
            "Verify rtosc_match_options (A)", __LINE__);
    assert_true(rtosc_match_options("{A,B,C,D,E}",  &ex_msgB) != NULL,
            "Verify rtosc_match_options (B)", __LINE__);
    assert_false(rtosc_match_options("{A,B,C,D,E}", &ex_msgF) != NULL,
            "Verify rtosc_match_options (F)", __LINE__);

    return test_summary();
}