-
Notifications
You must be signed in to change notification settings - Fork 0
/
record_test.go
84 lines (64 loc) · 1.6 KB
/
record_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package wal
import (
"bytes"
"testing"
"github.com/matryer/is"
)
func TestRecordMarshal(t *testing.T) {
is := is.New(t)
payloadVal := []byte("this is my payload")
sizeVal := uint64(len(payloadVal))
checksumVal := sum(payloadVal)
_r := record{
payload: payloadVal,
}
raw, err := _r.marshal()
is.NoErr(err)
buff := bytes.Buffer{}
buff.Write(encodeUint64(sizeVal))
buff.Write(encodeUint64(checksumVal))
buff.Write(payloadVal)
is.Equal(raw, buff.Bytes())
}
func TestRecordUnmarshal(t *testing.T) {
is := is.New(t)
payloadVal := []byte("this is my payload")
sizeVal := uint64(len(payloadVal))
checksumVal := sum(payloadVal)
buff := bytes.Buffer{}
buff.Write(encodeUint64(sizeVal))
buff.Write(encodeUint64(checksumVal))
buff.Write(payloadVal)
raw := buff.Bytes()
_r := record{}
err := _r.unmarshalMetadata(raw[:recordMetadataLength])
is.NoErr(err)
err = _r.unmarshalPayload(raw[recordMetadataLength:])
is.NoErr(err)
is.Equal(_r.size, sizeVal)
is.Equal(_r.checksum, checksumVal)
is.Equal(uint64(len(_r.payload)), _r.size)
}
func TestRecordBlockC(t *testing.T) {
is := is.New(t)
payloadVal := []byte("this is my payload")
blksize := int64(1024)
_r := record{
payload: payloadVal,
}
is.Equal(_r.blockC(blksize), int64(1))
}
func TestRecordIsValid(t *testing.T) {
is := is.New(t)
tr := record{
payload: []byte("this is test data"),
}
rawtr, err := tr.marshal()
is.NoErr(err)
trout := record{}
err = trout.unmarshalMetadata(rawtr[:recordMetadataLength])
is.NoErr(err)
err = trout.unmarshalPayload(rawtr[recordMetadataLength:])
is.NoErr(err)
is.Equal(trout.isValid(), true)
}