Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package memory | |
| 6 | |
| 7 import ( | |
| 8 "testing" | |
| 9 | |
| 10 . "github.com/smartystreets/goconvey/convey" | |
| 11 ) | |
| 12 | |
| 13 // key, old, new | |
|
M-A Ruel
2015/05/31 23:03:16
Then use these names. The goal is not to make the
iannucci
2015/05/31 23:31:33
Done.
| |
| 14 type kon struct{ k, o, n []byte } | |
| 15 | |
| 16 var testCollisionCases = []struct { | |
| 17 name string | |
| 18 left, right []kv // inserts into left and right collections | |
| 19 expect []kon | |
| 20 }{ | |
| 21 { | |
| 22 name: "nil", | |
| 23 }, | |
| 24 { | |
| 25 name: "empty", | |
| 26 left: []kv{}, | |
| 27 right: []kv{}, | |
| 28 }, | |
| 29 { | |
| 30 name: "all old", | |
| 31 left: []kv{ | |
| 32 {cat(1), cat()}, | |
| 33 {cat(0), cat()}, | |
| 34 }, | |
| 35 expect: []kon{ | |
| 36 {cat(0), cat(), nil}, | |
| 37 {cat(1), cat(), nil}, | |
| 38 }, | |
| 39 }, | |
| 40 { | |
| 41 name: "all new", | |
| 42 right: []kv{ | |
| 43 {cat(1), cat()}, | |
| 44 {cat(0), cat()}, | |
| 45 }, | |
| 46 expect: []kon{ | |
| 47 {cat(0), nil, cat()}, | |
| 48 {cat(1), nil, cat()}, | |
| 49 }, | |
| 50 }, | |
| 51 { | |
| 52 name: "new vals", | |
| 53 left: []kv{ | |
| 54 {cat(1), cat("hi")}, | |
| 55 {cat(0), cat("newb")}, | |
| 56 }, | |
| 57 right: []kv{ | |
| 58 {cat(0), cat(2.5)}, | |
| 59 {cat(1), cat(58)}, | |
| 60 }, | |
| 61 expect: []kon{ | |
| 62 {cat(0), cat("newb"), cat(2.5)}, | |
| 63 {cat(1), cat("hi"), cat(58)}, | |
| 64 }, | |
| 65 }, | |
| 66 { | |
| 67 name: "mixed", | |
| 68 left: []kv{ | |
| 69 {cat(1), cat("one")}, | |
| 70 {cat(0), cat("hi")}, | |
| 71 {cat(6), cat()}, | |
| 72 {cat(3), cat(1.3)}, | |
| 73 {cat(2), []byte("zoop")}, | |
| 74 {cat(-1), cat("bob")}, | |
| 75 }, | |
| 76 right: []kv{ | |
| 77 {cat(3), cat(1)}, | |
| 78 {cat(1), cat(58)}, | |
| 79 {cat(0), cat(2.5)}, | |
| 80 {cat(4), cat(1337)}, | |
| 81 {cat(2), cat("ski", 7)}, | |
| 82 {cat(20), cat("nerd")}, | |
| 83 }, | |
| 84 expect: []kon{ | |
| 85 {cat(-1), cat("bob"), nil}, | |
| 86 {cat(0), cat("hi"), cat(2.5)}, | |
| 87 {cat(1), cat("one"), cat(58)}, | |
| 88 {cat(2), []byte("zoop"), cat("ski", 7)}, | |
| 89 {cat(3), cat(1.3), cat(1)}, | |
| 90 {cat(4), nil, cat(1337)}, | |
| 91 {cat(6), cat(), nil}, | |
| 92 {cat(20), nil, cat("nerd")}, | |
| 93 }, | |
| 94 }, | |
| 95 } | |
| 96 | |
| 97 func getFilledColl(s *memStore, fill []kv) *memCollection { | |
| 98 if fill == nil { | |
| 99 return nil | |
| 100 } | |
| 101 ret := s.MakePrivateCollection(nil) | |
| 102 for _, i := range fill { | |
| 103 ret.Set(i.k, i.v) | |
| 104 } | |
| 105 return ret | |
| 106 } | |
| 107 | |
| 108 func TestCollision(t *testing.T) { | |
| 109 t.Parallel() | |
| 110 | |
| 111 Convey("Test gkvCollide", t, func() { | |
| 112 s := newMemStore() | |
| 113 for _, tc := range testCollisionCases { | |
| 114 Convey(tc.name, func() { | |
| 115 left := getFilledColl(s, tc.left) | |
| 116 right := getFilledColl(s, tc.right) | |
| 117 i := 0 | |
| 118 gkvCollide(left, right, func(k, o, n []byte) { | |
| 119 e := tc.expect[i] | |
| 120 So(k, ShouldResemble, e.k) | |
| 121 So(o, ShouldResemble, e.o) | |
| 122 So(n, ShouldResemble, e.n) | |
| 123 i++ | |
| 124 }) | |
| 125 So(i, ShouldEqual, len(tc.expect)) | |
| 126 }) | |
| 127 } | |
| 128 }) | |
| 129 } | |
| OLD | NEW |