diff options
| author | Paul Buetow <git@mx.buetow.org> | 2020-11-12 09:36:45 +0000 |
|---|---|---|
| committer | Paul Buetow <git@mx.buetow.org> | 2020-11-12 09:36:45 +0000 |
| commit | e912e477538658b535a4ab0adfa7f86b6a33a290 (patch) | |
| tree | 7802f8df06673ebe8c5f379d4c33befb21461201 | |
| parent | b5085c9f864b4403a24006cd8ade8bcdef8dc69a (diff) | |
more unit tests
| -rw-r--r-- | set/set_test.go | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/set/set_test.go b/set/set_test.go index dac258a..9c5f102 100644 --- a/set/set_test.go +++ b/set/set_test.go @@ -5,11 +5,12 @@ import ( "testing" "github.com/snonux/algorithms/ds" + "github.com/snonux/algorithms/sort" ) const factor int = 10 const minLength int = 1 -const maxLength int = 10000 +const maxLength int = 10 // Store results here to avoid compiler optimizations var benchResult int @@ -22,29 +23,45 @@ func TestElementary(t *testing.T) { } func TestBST(t *testing.T) { - s := NewBST() for i := minLength; i <= maxLength; i *= factor { - test(s, i, t) + test(NewBST(), i, t) + } +} + +func TestBalancedBST(t *testing.T) { + for i := minLength; i <= maxLength; i *= factor { + test(NewBalancedBST(), i, t) } } func test(s Set, l int, t *testing.T) { cb := func(t *testing.T) { - list := ds.NewRandomArrayList(l, -1) - for i, a := range list { - t.Log("Inserting", a, i, s) - s.Set(a, i) + vals := ds.NewRandomArrayList(l, -1) + keys := ds.NewRandomArrayList(l, -1) + mapping := make(map[int]int, l) + + for i, key := range keys { + val := vals[i] + mapping[key] = val + + t.Log("Inserting", key, val) + s.Set(key, val) } - for i, a := range list { - val, err := s.Get(a) + + for _, key := range sort.Shuffle(keys) { + val, err := s.Get(key) if err != nil { - t.Errorf("Element %v: %v", val, err) + t.Errorf("Element %v->%v: %v\n", key, val, err) } - if val != i { - t.Errorf("Element is %v but expected %v", val, i) + + val2 := mapping[key] + if val2 != val { + t.Errorf("Element is %v->%v but expected %v\n", key, val, val2) } + t.Log("Got", key, val, s) } } + t.Run(fmt.Sprintf("%d", l), cb) } @@ -62,6 +79,13 @@ func BenchmarkBST(t *testing.B) { } } +func BenchmarkBalancedBST(t *testing.B) { + s := NewBalancedBST() + for i := minLength; i <= maxLength; i *= factor { + benchmark(s, i, t) + } +} + func benchmark(s Set, l int, b *testing.B) { list := ds.NewRandomArrayList(l, -1) |
