Пример #1
0
int FilterManagerTEST::T_applyFilterChain() {
    int fail = 0;
    logger->trace("==============================");

    logger->trace("Testing applyFilterChain():");
    logger->trace(" Creating FM under normal mode...");
    FilterManager* fm = new FilterManager("fm");
    logger->trace(" Using factory, making 4 random filters...");
    Filter* f1,*f2,*f3,*f4;
    f1 = FilterFactory::createFilter();
    f2 = FilterFactory::createNullImgFilter();
    f3 = FilterFactory::createNullFPGAFilter();
    f4 = 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(" Making img objs...");
    cv::Mat img = cv::Mat::zeros(2,2,CV_8UC1);
    ImgData* data = new ImgData("input",img);
    logger->trace(" Applying all filters...");
    int res = fm->applyFilterChain(data);
    logger->trace("  Checking data ID...");
    logger->trace("    "+data->getID());
    if (data->getID() == "fm")
        logger->trace("    ok");
    else {
        logger->warn("    NOT ok, ID not set!");
        fail++;
    }
    logger->trace("    "+data->getTrack()+"error code "+std::to_string(res));
    if (data->getTrack() == "task 1; task 2-1; task 3; task 4; ")
        if (res == 1)
            logger->trace("    ok");
        else {
            logger->warn("    NOT ok, error code incorrect");
        }
    else {
        logger->warn("    NOT ok, track record not expected");
    }
    img.release();
    delete data;
    delete fm;
    logger->trace("Testing complete.");

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