github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/syndtr/goleveldb/leveldb/session_record_test.go (about) 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 }