OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / syndtr / goleveldb / leveldb / session_record_test.go
1 // Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
2 // All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file.
6
7 package leveldb
8
9 import (
10         "bytes"
11         "testing"
12 )
13
14 func decodeEncode(v *sessionRecord) (res bool, err error) {
15         b := new(bytes.Buffer)
16         err = v.encode(b)
17         if err != nil {
18                 return
19         }
20         v2 := &sessionRecord{}
21         err = v.decode(b)
22         if err != nil {
23                 return
24         }
25         b2 := new(bytes.Buffer)
26         err = v2.encode(b2)
27         if err != nil {
28                 return
29         }
30         return bytes.Equal(b.Bytes(), b2.Bytes()), nil
31 }
32
33 func TestSessionRecord_EncodeDecode(t *testing.T) {
34         big := int64(1) << 50
35         v := &sessionRecord{}
36         i := int64(0)
37         test := func() {
38                 res, err := decodeEncode(v)
39                 if err != nil {
40                         t.Fatalf("error when testing encode/decode sessionRecord: %v", err)
41                 }
42                 if !res {
43                         t.Error("encode/decode test failed at iteration:", i)
44                 }
45         }
46
47         for ; i < 4; i++ {
48                 test()
49                 v.addTable(3, big+300+i, big+400+i,
50                         makeInternalKey(nil, []byte("foo"), uint64(big+500+1), keyTypeVal),
51                         makeInternalKey(nil, []byte("zoo"), uint64(big+600+1), keyTypeDel))
52                 v.delTable(4, big+700+i)
53                 v.addCompPtr(int(i), makeInternalKey(nil, []byte("x"), uint64(big+900+1), keyTypeVal))
54         }
55
56         v.setComparer("foo")
57         v.setJournalNum(big + 100)
58         v.setPrevJournalNum(big + 99)
59         v.setNextFileNum(big + 200)
60         v.setSeqNum(uint64(big + 1000))
61         test()
62 }