// Copyright (c) 2012, Suryandaru Triandana // All rights reserved. // // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package leveldb import ( "bytes" "testing" ) func decodeEncode(v *sessionRecord) (res bool, err error) { b := new(bytes.Buffer) err = v.encode(b) if err != nil { return } v2 := &sessionRecord{} err = v.decode(b) if err != nil { return } b2 := new(bytes.Buffer) err = v2.encode(b2) if err != nil { return } return bytes.Equal(b.Bytes(), b2.Bytes()), nil } func TestSessionRecord_EncodeDecode(t *testing.T) { big := int64(1) << 50 v := &sessionRecord{} i := int64(0) test := func() { res, err := decodeEncode(v) if err != nil { t.Fatalf("error when testing encode/decode sessionRecord: %v", err) } if !res { t.Error("encode/decode test failed at iteration:", i) } } for ; i < 4; i++ { test() v.addTable(3, big+300+i, big+400+i, makeInternalKey(nil, []byte("foo"), uint64(big+500+1), keyTypeVal), makeInternalKey(nil, []byte("zoo"), uint64(big+600+1), keyTypeDel)) v.delTable(4, big+700+i) v.addCompPtr(int(i), makeInternalKey(nil, []byte("x"), uint64(big+900+1), keyTypeVal)) } v.setComparer("foo") v.setJournalNum(big + 100) v.setPrevJournalNum(big + 99) v.setNextFileNum(big + 200) v.setSeqNum(uint64(big + 1000)) test() }