byteio - bigendianreader_test.go
1 package byteio
2
3 import (
4 "strings"
5 "testing"
6 )
7
8 func TestReadBigEndian(t *testing.T) {
9 const testData = "\x0a\x0b\x0c\x0d\x0c\x0d\x01\x02\x03\x04\x05\x06\x07\x08A"
10 r := BigEndianReader{Reader: strings.NewReader(testData)}
11 if i, n, err := r.ReadUint32(); err != nil {
12 t.Errorf("test 1: unexpected error: %s", err)
13 } else if n != 4 {
14 t.Errorf("test 1: expecting to read 4 bytes, read %d", n)
15 } else if i != 168496141 {
16 t.Errorf("test 1: expecting 168496141, got %d", i)
17 }
18 if i, n, err := r.ReadUint16(); err != nil {
19 t.Errorf("test 2: unexpected error: %s", err)
20 } else if n != 2 {
21 t.Errorf("test 2: expecting to read 2 bytes, read %d", n)
22 } else if i != 3085 {
23 t.Errorf("test 2: expecting 3085, got %d", i)
24 }
25 if i, n, err := r.ReadUint64(); err != nil {
26 t.Errorf("test 3: unexpected error: %s", err)
27 } else if n != 8 {
28 t.Errorf("test 3: expecting to read 8 bytes, read %d", n)
29 } else if i != 72623859790382856 {
30 t.Errorf("test 3: expecting 72623859790382856 got %d", i)
31 }
32 if i, n, err := r.ReadUint8(); err != nil {
33 t.Errorf("test 4: unexpected error: %s", err)
34 } else if n != 1 {
35 t.Errorf("test 4: expecting to read 1 byte, read %d", n)
36 } else if i != 65 {
37 t.Errorf("test 4: expecting 65, got %d", i)
38 }
39 }
40
41 func BenchmarkReadBigEndianUint8(b *testing.B) {
42 r := BigEndianReader{Reader: neverending{1}}
43 b.ResetTimer()
44 for i := 0; i < b.N; i++ {
45 _, _, _ = r.ReadUint8()
46 }
47 }
48
49 func BenchmarkReadBigEndianInt8(b *testing.B) {
50 r := BigEndianReader{Reader: neverending{1}}
51 b.ResetTimer()
52 for i := 0; i < b.N; i++ {
53 _, _, _ = r.ReadInt8()
54 }
55 }
56 func BenchmarkReadBigEndianUint16(b *testing.B) {
57 r := BigEndianReader{Reader: neverending{1, 1}}
58 b.ResetTimer()
59 for i := 0; i < b.N; i++ {
60 _, _, _ = r.ReadUint16()
61 }
62 }
63
64 func BenchmarkReadBigEndianInt16(b *testing.B) {
65 r := BigEndianReader{Reader: neverending{1, 1}}
66 b.ResetTimer()
67 for i := 0; i < b.N; i++ {
68 _, _, _ = r.ReadInt16()
69 }
70 }
71
72 func BenchmarkReadBigEndianUint32(b *testing.B) {
73 r := BigEndianReader{Reader: neverending{1, 1, 1, 1}}
74 b.ResetTimer()
75 for i := 0; i < b.N; i++ {
76 _, _, _ = r.ReadUint32()
77 }
78 }
79
80 func BenchmarkReadBigEndianInt32(b *testing.B) {
81 r := BigEndianReader{Reader: neverending{1, 1, 1, 1}}
82 b.ResetTimer()
83 for i := 0; i < b.N; i++ {
84 _, _, _ = r.ReadInt32()
85 }
86 }
87
88 func BenchmarkReadBigEndianUint64(b *testing.B) {
89 r := BigEndianReader{Reader: neverending{1, 1, 1, 1, 1, 1, 1, 1}}
90 b.ResetTimer()
91 for i := 0; i < b.N; i++ {
92 _, _, _ = r.ReadUint64()
93 }
94 }
95
96 func BenchmarkReadBigEndianInt64(b *testing.B) {
97 r := BigEndianReader{Reader: neverending{1, 1, 1, 1, 1, 1, 1, 1}}
98 b.ResetTimer()
99 for i := 0; i < b.N; i++ {
100 _, _, _ = r.ReadInt64()
101 }
102 }
103