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  }