Beispiel #1
0
int FilterManagerTEST::T_replaceFilter() {
    int fail = 0;
    logger->trace("==============================");

    logger->trace("Testing replaceFilter():");
    logger->trace(" Test under custom ID mode...");
    FilterManager* fm = new FilterManager("fm");
    logger->trace("  Using factory, making 4 general filters...");
    Filter* f1,*f2,*f3,*f4,*f5,*f6,*f7,*f8;
    f1 = FilterFactory::createFilter();
    f2 = FilterFactory::createFilter();
    f3 = FilterFactory::createFilter();
    f4 = FilterFactory::createFilter();
    f5 = FilterFactory::createNullImgFilter();
    f6 = FilterFactory::createNullFPGAFilter();
    f7 = FilterFactory::createFilter();
    f8 = FilterFactory::createFilter();
    logger->trace("  Inserting f1 as \"task 3\" to FRONT...");
    fm->insertFilter("task 3",f1,"FRONT");
    logger->trace("  Inserting f2 as \"task 1\"...");
    fm->insertFilter("task 1",f2,"task 3");
    logger->trace("  Inserting f3 as \"task 2\" between f1,f2...");
    fm->insertFilter("task 2",f3,"task 3");
    logger->trace("  Inserting f4 as \"task 4\" to REAR...");
    fm->insertFilter("task 4",f4);
    logger->trace("  Replacing \"task 3\" with f5 under key \"task 5\"...");
    fm->replaceFilter("task 5",f5,"task 3");
    logger->trace("  Replacing \"FRONT\" with f2 under key \"task 6\"...");
    fm->replaceFilter("task 6",f6,"FRONT");
    logger->trace("  Using getFilterChainIDs()...");
    std::vector<std::string> list = fm->getFilterChainIDs();
    std::string res;
    for (std::vector<std::string>::iterator it = list.begin(); it != list.end(); it++)
        res += " "+*it;
    logger->trace("   "+res);
    if (res == " task 6 task 2 task 5 task 4")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, list unexpected");
        fail += 1;
    }
    logger->trace("  Try replacing w/ non unique ID...");
    res = std::to_string(fm->replaceFilter("task 5",f7,"task 5"));
    logger->trace("    error code: "+res);
    if (res == "2")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, incorrect error");
        fail += 1;
    }
    logger->trace("  Try replacing out of range...");
    res = std::to_string(fm->replaceFilter("task 8",f8,"what task?"));
    logger->trace("    error code: "+res);
    if (res == "1")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, incorrect error");
        fail += 1;
    }
    logger->trace("  Try replacing using auto ID mode...");
    res = std::to_string(fm->replaceFilter(f8,"task 2"));
    logger->trace("    error code: "+res);
    if (res == "4")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, incorrect error");
        fail += 1;
    }
    delete fm;
    delete f7;
    delete f8;

    logger->trace(" Test under auto ID mode...");
    fm = new FilterManager("fm",1);
    logger->trace("  Using factory...");
//	Filter* f1,*f2,*f3,*f4,*f5,*f6,*f7,*f8;
    f1 = FilterFactory::createFilter();
    f2 = FilterFactory::createFilter();
    f3 = FilterFactory::createFilter();
    f4 = FilterFactory::createFilter();
    f5 = FilterFactory::createNullImgFilter();
    f6 = FilterFactory::createNullFPGAFilter();
    f7 = FilterFactory::createFilter();
    f8 = FilterFactory::createFilter();
    logger->trace("  Inserting f1 to FRONT...");
    fm->insertFilter(f1,"FRONT");
    logger->trace("  Inserting f2...");
    fm->insertFilter(f2);
    logger->trace("  Inserting f3 between f1,f2...");
    fm->insertFilter(f3,"2 GenericFilter");
    logger->trace("  Inserting f4 to REAR...");
    fm->insertFilter(f4,"REAR");
    logger->trace("  Replacing \"2 GenericFilter\" with f5...");
    fm->replaceFilter(f5,"2 GenericFilter");
    logger->trace("  Replacing \"FRONT\" with f6...");
    fm->replaceFilter(f6,"FRONT");
    logger->trace("  Using getFilterChainIDs()...");
    list = fm->getFilterChainIDs();
    res = "";
    for (std::vector<std::string>::iterator it = list.begin(); it != list.end(); it++)
        res += " "+*it;
    logger->trace("   "+res);
    if (res == " 6 NullFPGAFilter 3 GenericFilter 5 NullImgFilter 4 GenericFilter")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, list unexpected");
        fail += 1;
    }
    logger->trace("  Try replacing out of range...");
    res = std::to_string(fm->insertFilter(f7,"what task?"));
    logger->trace("    error code: "+res);
    if (res == "1")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, incorrect error");
        fail += 1;
    }
    delete fm;
    delete f7;
    delete f8;
    logger->trace("Testing complete.");

    if (fail > 0)
        logger->warn("  TEST FAILED: replaceFilter()");
    logger->trace("==============================");
    return fail;
}