RUN: %cpp_compiler %S/FullCoverageSetTest.cpp -o %t-FullCoverageSetTest RUN: rm -rf %t/T1 %t/T2 RUN: mkdir -p %t/T1 %t/T2 RUN: echo F..... > %t/T1/1 RUN: echo .U.... > %t/T1/2 RUN: echo ..Z... > %t/T1/3 # T1 has 3 elements, T2 is empty. RUN: %run %t-FullCoverageSetTest -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK1 CHECK1: MERGE-OUTER: 3 files, 3 in the initial corpus CHECK1: MERGE-OUTER: 0 new files with 0 new features added RUN: echo ...Z.. > %t/T2/1 RUN: echo ....E. > %t/T2/2 RUN: echo .....R > %t/T2/3 RUN: echo F..... > %t/T2/a RUN: echo .U.... > %t/T2/b RUN: echo ..Z... > %t/T2/c # T1 has 3 elements, T2 has 6 elements, only 3 are new. RUN: %run %t-FullCoverageSetTest -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK2 CHECK2: MERGE-OUTER: 9 files, 3 in the initial corpus CHECK2: MERGE-OUTER: 3 new files with 3 new features added # Now, T1 has 6 units and T2 has no new interesting units. RUN: %run %t-FullCoverageSetTest -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK3 CHECK3: MERGE-OUTER: 12 files, 6 in the initial corpus CHECK3: MERGE-OUTER: 0 new files with 0 new features added RUN: rm -rf %t/T1/* %t/T2/* RUN: mkdir -p %t/T3 RUN: echo ...... > %t/T1/1 RUN: echo F..... > %t/T2/a RUN: echo .U.... > %t/T2/b RUN: echo ..Z... > %t/T2/c RUN: echo ...Z.. > %t/T3/1 RUN: echo ....E. > %t/T3/2 RUN: echo .....R > %t/T3/3 RUN: echo .UZZER. > %t/T3/a RUN: echo .UZZER.. > %t/T3/b RUN: echo ...... > %t/T3/c # T1 is empty, T2 and T3 have overlapping features. The optimal solution # consists of 2 files: T2/a, T3/a. These files cover 6 new features. # Although T3/a is larger in size (1 more byte) we prefer it because # it covers more features than any other file. RUN: %run %t-FullCoverageSetTest -set_cover_merge=1 %t/T1 %t/T2 %t/T3 2>&1 | FileCheck %s --check-prefix=CHECK_OVERLAP CHECK_OVERLAP: MERGE-OUTER: 10 files, 1 in the initial corpus CHECK_OVERLAP: MERGE-OUTER: 2 new files with 6 new features added # Make sure that we are prefering smaller files (T3/a over T3/b). RUN: diff %t/T1/1b2301992a0266982b135fee5164937d7f7abca3 %t/T3/a RUN: rm -rf %t/T1/* %t/T2/* %t/T3/* RUN: echo ...... > %t/T1/1 RUN: echo F..... > %t/T2/a RUN: echo .U.... > %t/T2/b RUN: echo ..Z... > %t/T2/c RUN: echo ...Z.. > %t/T3/1 RUN: echo ....E. > %t/T3/2 RUN: echo .....R > %t/T3/3 RUN: echo .UZZER. > %t/T3/a RUN: echo .UZZER.. > %t/T3/b RUN: echo ...... > %t/T3/c # Test the previous scenario with the '-merge=1' flag. # Expect more files to be added to the first corpus, since '-merge=1' # is going to prefer smaller files and ignore the fact that # T3/a covers almost all of the available features. RUN: %run %t-FullCoverageSetTest -merge=1 %t/T1 %t/T2 %t/T3 2>&1 | FileCheck %s --check-prefix=CHECK_OVERLAP2 CHECK_OVERLAP2: MERGE-OUTER: 10 files, 1 in the initial corpus CHECK_OVERLAP2: MERGE-OUTER: 6 new files with 6 new features added