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 @@
#include <stringology/cover/ApproximateEnhancedCoversComputation.h>
 
TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) {
SECTION ( "Test 1" ) {
SECTION ( "One simple enhanced cover" ) {
string::LinearString < char > pattern ( "abacaccababa" );
unsigned int k = 1;
 
......@@ -24,53 +24,83 @@ TEST_CASE ( "Approximate Enhanced Covers", "[unit][stringology][cover]" ) {
CHECK ( result == refSet );
}
 
SECTION ( "Test 2" ) {
string::LinearString < char > pattern ( "" );
unsigned int k = 1;
SECTION ( "Multiple enhanced covers" ) {
string::LinearString < char > pattern ( "ababaccababa" );
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 );
 
CHECK ( result.empty ( ) );
CHECK ( result == refSet );
}
 
SECTION ( "Test 3" ) {
string::LinearString < char > pattern ( "abcd" );
unsigned int k = 1;
SECTION ( "Empty string" ) {
string::LinearString < char > pattern ( "" );
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" ) {
string::LinearString < char > pattern ( "adesgvsade" );
unsigned int k = 4;
SECTION ( "k = 0 (enhanced covers)" ) {
unsigned int k = 0;
 
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 > pattern ( "abcdefghabcd" );
unsigned int k = 3;
string::LinearString < char > pattern2 ( "ab" );
CHECK ( stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern2, k ).empty ( ) );
 
string::LinearString < char > pattern3 ( "aa" );
string::LinearString < char > a1 ( "a" );
ext::set < string::LinearString < char > > refSet;
string::LinearString < char > a1 ( "abcd" );
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" ) {
string::LinearString < char > pattern ( "a" );
unsigned int k = 0;
SECTION ( "Different k" ) {
string::LinearString < char > pattern ( "adesgvsade" );
unsigned int k = 3;
 
ext::set < string::LinearString < char > > result = stringology::cover::ApproximateEnhancedCoversComputation::compute ( pattern, k );
 
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