From 4510c58d485b497978dbce4bbd4d310318e35190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rajmund=20Hru=C5=A1ka?= <rajmund.hruska@gmail.com> Date: Mon, 4 May 2020 15:59:06 +0200 Subject: [PATCH] algo: covers: Add more extensive tests of approximate enhanced covers --- ...proximateEnhancedCoversComputationTest.cpp | 82 +++++++++++++------ 1 file changed, 56 insertions(+), 26 deletions(-) diff --git a/alib2algo/test-src/stringology/cover/ApproximateEnhancedCoversComputationTest.cpp b/alib2algo/test-src/stringology/cover/ApproximateEnhancedCoversComputationTest.cpp index 23deeccda4..f1d2dafce7 100644 --- a/alib2algo/test-src/stringology/cover/ApproximateEnhancedCoversComputationTest.cpp +++ b/alib2algo/test-src/stringology/cover/ApproximateEnhancedCoversComputationTest.cpp @@ -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 ( ) ); } } -- GitLab