Skip to content
Snippets Groups Projects
Commit 4510c58d authored by Rajmund Hruška's avatar Rajmund Hruška Committed by Tomáš Pecka
Browse files

algo: covers: Add more extensive tests of approximate enhanced covers

parent 05e3b97c
No related branches found
No related tags found
1 merge request!148Bp hruskaraj rebase
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <stringology/cover/ApproximateEnhancedCoversComputation.h> #include <stringology/cover/ApproximateEnhancedCoversComputation.h>
   
TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) { TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) {
SECTION ( "Test 1" ) { SECTION ( "One simple enhanced cover" ) {
string::LinearString < char > pattern ( "abacaccababa" ); string::LinearString < char > pattern ( "abacaccababa" );
unsigned int k = 1; unsigned int k = 1;
   
...@@ -24,53 +24,83 @@ TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) { ...@@ -24,53 +24,83 @@ TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) {
CHECK ( result == refSet ); CHECK ( result == refSet );
} }
   
SECTION ( "Test 2" ) { SECTION ( "Multiple enhanced covers" ) {
string::LinearString < char > pattern ( "" ); string::LinearString < char > pattern ( "ababaccababa" );
unsigned int k = 1; unsigned int k = 2;
ext::set < string::LinearString < char > > refSet;
string::LinearString < char > a1 ( "aba" );
string::LinearString < char > a2 ( "ababa" );
refSet.insert ( a1 );
refSet.insert ( a2 );
   
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ); ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k );
   
CHECK ( result.empty ( ) ); CHECK ( result == refSet );
} }
   
SECTION ( "Test 3" ) { SECTION ( "Empty string" ) {
string::LinearString < char > pattern ( "abcd" ); string::LinearString < char > pattern ( "" );
unsigned int k = 1; unsigned int k = 0;
   
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ); CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ).empty ( ) );
   
CHECK ( result.empty ( ) ); k = 1;
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ).empty ( ) );
k = 15;
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ).empty ( ) );
k = -1;
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ).empty ( ) );
} }
   
SECTION ( "Test 4" ) { SECTION ( "k = 0 (enhanced covers)" ) {
string::LinearString < char > pattern ( "adesgvsade" ); unsigned int k = 0;
unsigned int k = 4;
   
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ); string::LinearString < char > pattern ( "x" );
   
CHECK ( result.empty ( ) ); CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ).empty ( ) );
}
   
SECTION ( "Test 5" ) { string::LinearString < char > pattern2 ( "ab" );
string::LinearString < char > pattern ( "abcdefghabcd" ); CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern2, k ).empty ( ) );
unsigned int k = 3;
   
string::LinearString < char > pattern3 ( "aa" );
string::LinearString < char > a1 ( "a" );
ext::set < string::LinearString < char > > refSet; ext::set < string::LinearString < char > > refSet;
string::LinearString < char > a1 ( "abcd" );
refSet.insert ( a1 ); refSet.insert ( a1 );
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern3, k ) == refSet );
   
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ); string::LinearString < char > pattern4 ( "aba" );
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern4, k ) == refSet );
   
CHECK ( result == refSet ); string::LinearString < char > pattern5 ( "aaa" );
string::LinearString < char > a2 ( "aa" );
refSet.insert ( a2 );
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern5, k ) == refSet );
} }
   
SECTION ( "Test 6" ) { SECTION ( "Different k" ) {
string::LinearString < char > pattern ( "a" ); string::LinearString < char > pattern ( "adesgvsade" );
unsigned int k = 0; unsigned int k = 3;
   
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k ); ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k );
   
CHECK ( result.empty ( ) ); CHECK ( result.empty ( ) );
k = 2;
ext::set < string::LinearString < char > > refSet;
string::LinearString < char > a1 ( "ade" );
refSet.insert ( a1 );
result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k );
CHECK ( result == refSet );
string::LinearString < char > pattern2 ( "abcd" );
k = 1;
result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern2, k );
CHECK ( result.empty ( ) );
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment