github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/shed/field_uint64_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:44</date> 10 //</624450117847486464> 11 12 13 package shed 14 15 import ( 16 "testing" 17 18 "github.com/syndtr/goleveldb/leveldb" 19 ) 20 21 //testuint64字段验证Put和Get操作 22 //在uint64字段中。 23 func TestUint64Field(t *testing.T) { 24 db, cleanupFunc := newTestDB(t) 25 defer cleanupFunc() 26 27 counter, err := db.NewUint64Field("counter") 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 t.Run("get empty", func(t *testing.T) { 33 got, err := counter.Get() 34 if err != nil { 35 t.Fatal(err) 36 } 37 var want uint64 38 if got != want { 39 t.Errorf("got uint64 %v, want %v", got, want) 40 } 41 }) 42 43 t.Run("put", func(t *testing.T) { 44 var want uint64 = 42 45 err = counter.Put(want) 46 if err != nil { 47 t.Fatal(err) 48 } 49 got, err := counter.Get() 50 if err != nil { 51 t.Fatal(err) 52 } 53 if got != want { 54 t.Errorf("got uint64 %v, want %v", got, want) 55 } 56 57 t.Run("overwrite", func(t *testing.T) { 58 var want uint64 = 84 59 err = counter.Put(want) 60 if err != nil { 61 t.Fatal(err) 62 } 63 got, err := counter.Get() 64 if err != nil { 65 t.Fatal(err) 66 } 67 if got != want { 68 t.Errorf("got uint64 %v, want %v", got, want) 69 } 70 }) 71 }) 72 73 t.Run("put in batch", func(t *testing.T) { 74 batch := new(leveldb.Batch) 75 var want uint64 = 42 76 counter.PutInBatch(batch, want) 77 err = db.WriteBatch(batch) 78 if err != nil { 79 t.Fatal(err) 80 } 81 got, err := counter.Get() 82 if err != nil { 83 t.Fatal(err) 84 } 85 if got != want { 86 t.Errorf("got uint64 %v, want %v", got, want) 87 } 88 89 t.Run("overwrite", func(t *testing.T) { 90 batch := new(leveldb.Batch) 91 var want uint64 = 84 92 counter.PutInBatch(batch, want) 93 err = db.WriteBatch(batch) 94 if err != nil { 95 t.Fatal(err) 96 } 97 got, err := counter.Get() 98 if err != nil { 99 t.Fatal(err) 100 } 101 if got != want { 102 t.Errorf("got uint64 %v, want %v", got, want) 103 } 104 }) 105 }) 106 } 107 108 //TESTUINT64字段_inc验证inc操作 109 //在uint64字段中。 110 func TestUint64Field_Inc(t *testing.T) { 111 db, cleanupFunc := newTestDB(t) 112 defer cleanupFunc() 113 114 counter, err := db.NewUint64Field("counter") 115 if err != nil { 116 t.Fatal(err) 117 } 118 119 var want uint64 = 1 120 got, err := counter.Inc() 121 if err != nil { 122 t.Fatal(err) 123 } 124 if got != want { 125 t.Errorf("got uint64 %v, want %v", got, want) 126 } 127 128 want = 2 129 got, err = counter.Inc() 130 if err != nil { 131 t.Fatal(err) 132 } 133 if got != want { 134 t.Errorf("got uint64 %v, want %v", got, want) 135 } 136 } 137 138 //testuint64字段“incinbatch”验证incinbatch操作 139 //在uint64字段中。 140 func TestUint64Field_IncInBatch(t *testing.T) { 141 db, cleanupFunc := newTestDB(t) 142 defer cleanupFunc() 143 144 counter, err := db.NewUint64Field("counter") 145 if err != nil { 146 t.Fatal(err) 147 } 148 149 batch := new(leveldb.Batch) 150 var want uint64 = 1 151 got, err := counter.IncInBatch(batch) 152 if err != nil { 153 t.Fatal(err) 154 } 155 if got != want { 156 t.Errorf("got uint64 %v, want %v", got, want) 157 } 158 err = db.WriteBatch(batch) 159 if err != nil { 160 t.Fatal(err) 161 } 162 got, err = counter.Get() 163 if err != nil { 164 t.Fatal(err) 165 } 166 if got != want { 167 t.Errorf("got uint64 %v, want %v", got, want) 168 } 169 170 batch2 := new(leveldb.Batch) 171 want = 2 172 got, err = counter.IncInBatch(batch2) 173 if err != nil { 174 t.Fatal(err) 175 } 176 if got != want { 177 t.Errorf("got uint64 %v, want %v", got, want) 178 } 179 err = db.WriteBatch(batch2) 180 if err != nil { 181 t.Fatal(err) 182 } 183 got, err = counter.Get() 184 if err != nil { 185 t.Fatal(err) 186 } 187 if got != want { 188 t.Errorf("got uint64 %v, want %v", got, want) 189 } 190 } 191 192 //TESTUINT64字段“DEC验证DEC操作” 193 //在uint64字段中。 194 func TestUint64Field_Dec(t *testing.T) { 195 db, cleanupFunc := newTestDB(t) 196 defer cleanupFunc() 197 198 counter, err := db.NewUint64Field("counter") 199 if err != nil { 200 t.Fatal(err) 201 } 202 203 //测试溢出保护 204 var want uint64 205 got, err := counter.Dec() 206 if err != nil { 207 t.Fatal(err) 208 } 209 if got != want { 210 t.Errorf("got uint64 %v, want %v", got, want) 211 } 212 213 want = 32 214 err = counter.Put(want) 215 if err != nil { 216 t.Fatal(err) 217 } 218 219 want = 31 220 got, err = counter.Dec() 221 if err != nil { 222 t.Fatal(err) 223 } 224 if got != want { 225 t.Errorf("got uint64 %v, want %v", got, want) 226 } 227 } 228 229 //testuint64字段“decinbatch”验证decinbatch操作 230 //在uint64字段中。 231 func TestUint64Field_DecInBatch(t *testing.T) { 232 db, cleanupFunc := newTestDB(t) 233 defer cleanupFunc() 234 235 counter, err := db.NewUint64Field("counter") 236 if err != nil { 237 t.Fatal(err) 238 } 239 240 batch := new(leveldb.Batch) 241 var want uint64 242 got, err := counter.DecInBatch(batch) 243 if err != nil { 244 t.Fatal(err) 245 } 246 if got != want { 247 t.Errorf("got uint64 %v, want %v", got, want) 248 } 249 err = db.WriteBatch(batch) 250 if err != nil { 251 t.Fatal(err) 252 } 253 got, err = counter.Get() 254 if err != nil { 255 t.Fatal(err) 256 } 257 if got != want { 258 t.Errorf("got uint64 %v, want %v", got, want) 259 } 260 261 batch2 := new(leveldb.Batch) 262 want = 42 263 counter.PutInBatch(batch2, want) 264 err = db.WriteBatch(batch2) 265 if err != nil { 266 t.Fatal(err) 267 } 268 got, err = counter.Get() 269 if err != nil { 270 t.Fatal(err) 271 } 272 if got != want { 273 t.Errorf("got uint64 %v, want %v", got, want) 274 } 275 276 batch3 := new(leveldb.Batch) 277 want = 41 278 got, err = counter.DecInBatch(batch3) 279 if err != nil { 280 t.Fatal(err) 281 } 282 if got != want { 283 t.Errorf("got uint64 %v, want %v", got, want) 284 } 285 err = db.WriteBatch(batch3) 286 if err != nil { 287 t.Fatal(err) 288 } 289 got, err = counter.Get() 290 if err != nil { 291 t.Fatal(err) 292 } 293 if got != want { 294 t.Errorf("got uint64 %v, want %v", got, want) 295 } 296 } 297