aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/corpus/corpus_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/corpus/corpus_test.go')
-rw-r--r--pkg/corpus/corpus_test.go29
1 files changed, 28 insertions, 1 deletions
diff --git a/pkg/corpus/corpus_test.go b/pkg/corpus/corpus_test.go
index cce537087..04768838a 100644
--- a/pkg/corpus/corpus_test.go
+++ b/pkg/corpus/corpus_test.go
@@ -48,11 +48,38 @@ func TestCorpusOperation(t *testing.T) {
}
// Verify the total signal.
- assert.Len(t, corpus.Signal(), 5)
+ stat := corpus.Stat()
+ assert.Equal(t, Stat{
+ Signal: 5,
+ Cover: 0,
+ Progs: 2,
+ }, stat)
corpus.Minimize(true)
}
+func TestCorpusCoverage(t *testing.T) {
+ target := getTarget(t, targets.TestOS, targets.TestArch64)
+ ch := make(chan NewItemEvent)
+ corpus := NewMonitoredCorpus(context.Background(), ch)
+ rs := rand.NewSource(0)
+
+ inp := generateInput(target, rs, 5, 5)
+ inp.Cover = []uint32{10, 11}
+ go corpus.Save(inp)
+ event := <-ch
+ assert.Equal(t, []uint32{10, 11}, event.NewCover)
+
+ inp.Call = 1
+ inp.Cover = []uint32{11, 12}
+ go corpus.Save(inp)
+ event = <-ch
+ assert.Equal(t, []uint32{12}, event.NewCover)
+
+ // Check the total corpus size.
+ assert.Equal(t, corpus.Stat().Cover, 3)
+}
+
func TestCorpusSaveConcurrency(t *testing.T) {
target := getTarget(t, targets.TestOS, targets.TestArch64)
corpus := NewCorpus(context.Background())