TuttleOFX  1
negativeSequence.cpp
Go to the documentation of this file.
00001 #include <detector.hpp>
00002 
00003 #include <boost/assign/std/vector.hpp>
00004 
00005 #include <boost/test/unit_test.hpp>
00006 using namespace boost::unit_test;
00007 
00008 BOOST_AUTO_TEST_SUITE( NegativeSequenceDetection )
00009 
00010 
00011 bool compareSequencesByNbFiles( const sequenceParser::Sequence& a, const sequenceParser::Sequence& b ) { return a.getNbFiles() < b.getNbFiles(); }
00012 
00013 BOOST_AUTO_TEST_CASE( NoNegativeValues )
00014 {
00015         boost::ptr_vector<sequenceParser::Sequence> listSequence;
00016 
00017         std::vector<boost::filesystem::path> paths;
00018 
00019         boost::assign::push_back( paths )
00020                 ( "aaa/bbb/a1b-2c1.j2c" )
00021                 ( "aaa/bbb/a1b-2c2.j2c" )
00022                 ( "aaa/bbb/a1b-2c3.j2c" )
00023 
00024                 ( "aaa/bbb/a1b+3c6.j2c" )
00025                 ( "aaa/bbb/a1b+3c2.j2c" )
00026                 ( "aaa/bbb/a1b+3c0.j2c" )
00027                 ( "aaa/bbb/a1b+3c3.j2c" )
00028                 ( "aaa/bbb/a1b+3c9.j2c" )
00029 
00030                 ( "aaa/bbb/a1b9c6.j2c" )
00031                 ( "aaa/bbb/a1b9c2.j2c" )
00032                 ;
00033 
00034         listSequence = sequenceParser::sequenceFromFilenameList( paths );
00035 
00036         BOOST_CHECK( listSequence.size() == 3 );
00037         
00038         std::sort( listSequence.begin(), listSequence.end(), compareSequencesByNbFiles );
00039 
00040         BOOST_CHECK( listSequence[0].getNbFiles() == 2 );
00041         BOOST_CHECK( listSequence[0].getFirstTime() == 2 );
00042         BOOST_CHECK( listSequence[0].getLastTime() == 6 );
00043         
00044         BOOST_CHECK( listSequence[1].getNbFiles() == 3 );
00045         BOOST_CHECK( listSequence[1].getFirstTime() == 1 );
00046         BOOST_CHECK( listSequence[1].getLastTime() == 3 );
00047         
00048         BOOST_CHECK( listSequence[2].getNbFiles() == 5 );
00049         BOOST_CHECK( listSequence[2].getFirstTime() == 0 );
00050         BOOST_CHECK( listSequence[2].getLastTime() == 9 );
00051 }
00052 
00053 BOOST_AUTO_TEST_CASE( NegativeSequence )
00054 {
00055         boost::ptr_vector<sequenceParser::Sequence> listSequence;
00056  
00057         std::vector<boost::filesystem::path> paths;
00058 
00059         boost::assign::push_back( paths )
00060                 ( "aaa/bbb/a1b2c-3.j2c" )
00061                 ( "aaa/bbb/a1b2c-2.j2c" )
00062                 ( "aaa/bbb/a1b2c-1.j2c" )
00063                 ( "aaa/bbb/a1b2c0.j2c" )
00064                 ( "aaa/bbb/a1b2c1.j2c" )
00065                 ( "aaa/bbb/a1b2c2.j2c" )
00066                 ( "aaa/bbb/a1b2c3.j2c" )
00067                 ;
00068 
00069         listSequence = sequenceParser::sequenceFromFilenameList( paths, sequenceParser::eMaskOptionsNegativeIndexes );
00070 
00071         //std::cout << "listSequence.size(): " << listSequence.size() << std::endl;
00072         BOOST_CHECK( listSequence.size() == 1 );
00073 
00074         const sequenceParser::Sequence& seq = listSequence.front();
00075         BOOST_CHECK( seq.getFirstTime() == -3 );
00076         BOOST_CHECK( seq.getLastTime() == 3 );
00077         BOOST_CHECK( seq.getNbFiles() == 7 );
00078         BOOST_CHECK( seq.hasMissingFile() == false );
00079         BOOST_CHECK( seq.getStep() == 1 );
00080 }
00081 
00082 
00083 BOOST_AUTO_TEST_SUITE_END()