#include #include "match.h" using namespace ::boost::unit_test; namespace match_test { using indexlib::Match; void cleanup() { } void simple() { cleanup(); Match m( "pat" ); BOOST_CHECK_EQUAL( m.process( "not here" ), false ); BOOST_CHECK_EQUAL( m.process( "p a t" ), false ); BOOST_CHECK_EQUAL( m.process( "pa t" ), false ); BOOST_CHECK_EQUAL( m.process( "pat" ), true ); BOOST_CHECK_EQUAL( m.process( "pattern" ), true ); BOOST_CHECK_EQUAL( m.process( " pat " ), true ); BOOST_CHECK_EQUAL( m.process( "zpat patx ipato " ), true ); } void empty() { cleanup(); { Match m( "pat" ); BOOST_CHECK( !m.process( "" ) ); } { Match m( "" ); BOOST_CHECK( m.process( "" ) ); BOOST_CHECK( m.process( "string" ) ); } } void string() { cleanup(); Match m( std::string( "pat" ) ); BOOST_CHECK_EQUAL( m.process( std::string( "not here" ) ), false ); BOOST_CHECK_EQUAL( m.process( std::string( "here pattern" ) ), true ); } void casesensitive() { cleanup(); Match m( std::string( "pat" ), ~Match::caseinsensitive ); BOOST_CHECK_EQUAL( m.process( std::string( "PAT" ) ), false ); BOOST_CHECK_EQUAL( m.process( std::string( "aPATa" ) ), false ); BOOST_CHECK_EQUAL( m.process( std::string( "pAt" ) ), false ); BOOST_CHECK_EQUAL( m.process( std::string( "pattern" ) ), true ); } void caseinsensitive() { cleanup(); Match m( std::string( "pat" ), Match::caseinsensitive ); BOOST_CHECK_EQUAL( m.process( std::string( "PAT" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "aPATa" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "pAt" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "pattern" ) ), true ); } void verylarge() { cleanup(); Match m( std::string( "pat0123456789012345678901234567890" ) ); BOOST_CHECK_EQUAL( m.process( std::string( "pat0123456789012345678901234567890" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat0123456789012345678901234567890" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat0123456789012345678901234567890xxxxxxxx" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat01234x6789012345678901234567890xxxxxxxx" ) ), false ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat01234x678901234567890123456789xxxxxxxxx" ) ), false ); m = Match( std::string( "12345678901234567890123456789012" ) ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat012345678901234567890123456789012xxxxxxxxx" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat012345678901234567890123456789012" ) ), true ); BOOST_CHECK_EQUAL( m.process( std::string( "xxxxxxpat01234x678901234567890123456789xxxxxxxxx" ) ), false ); } test_suite* get_suite() { test_suite* test = BOOST_TEST_SUITE( "Match tests" ); test->add( BOOST_TEST_CASE( &simple ) ); test->add( BOOST_TEST_CASE( &empty ) ); test->add( BOOST_TEST_CASE( &string ) ); test->add( BOOST_TEST_CASE( &casesensitive ) ); test->add( BOOST_TEST_CASE( &caseinsensitive ) ); test->add( BOOST_TEST_CASE( &verylarge ) ); return test; } } // namespace