void TestWildcardMatcher::verifyMatchResult(QString pattern, bool expected)
{
    if (expected) {
        verifyMatch(pattern);
    } else {
        verifyNoMatch(pattern);
    }
}
int
main( int argc, char **argv )
{
   std::string T = "everything is awesome, everything is cool when";
   std::string P = "verything";


   const auto m = P.length();
   const auto n = T.length();

   int64_t h( 1 );
   int64_t p( 0 );
   int64_t t( 0 );

   for( size_t i( 0 ); i < m; i++ )
   {
      p = ( ( p * d ) + P[ i ] ) % prime ;
      t = ( ( t * d ) + T[ i ] ) % prime ;
      if( i < ( m - 1 ) )
      {
         h = (h * d ) % prime;
      }
   }
   
   
   size_t s( 0 );
   do
   {
      if ( p == t && verifyMatch( T, s, s+m, P ) )
      {
         std::cerr << "Match @ ( " << s << "," << 
            (s + m) << " ): " << T.substr( s, m ) << "\n";
      }
      const auto remove_val( ( T[ s ] * h ) % prime );
      t = ( t + (d * prime) - remove_val ) % prime;
      t = (d * t ) % prime;
      t = ( t + T[ s + m ]) % prime;
      s++;
   }while( s <= ( n - m ) );
}