-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdecode_test.go
More file actions
180 lines (169 loc) · 8.3 KB
/
decode_test.go
File metadata and controls
180 lines (169 loc) · 8.3 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
package ribbit
import (
"testing"
"encoding/base64"
"log"
)
func croakBytes() []byte {
croakBytes, err := base64.StdEncoding.DecodeString(base64Croak)
if err != nil {
log.Fatalln(err)
}
return croakBytes
}
func oneTipBytes() []byte {
croakBytes, err := base64.StdEncoding.DecodeString(base64Tip)
if err != nil {
log.Fatalln(err)
}
return croakBytes
}
func TestDecoder_CroakStream_SuccessfullyDecodes(t *testing.T) {
tips, err := DecodeTips(croakBytes())
if err != nil {
t.Error("Test data is invalid", err)
}
if len(tips) != 50 {
t.Error(
"Expected there to be",
50,
"tips, but there were",
len(tips),
)
}
for _, tip := range tips {
if tip.Number == 257 && tip.Tip != tip257 {
t.Error("TIP 257 IS WRONG!!!", tip, tip257)
}
}
}
func TestDecode_InvalidData_ReturnsAnError(t *testing.T) {
bytes := []byte{}
tips, err := DecodeTips(bytes)
if err == nil {
t.Error("WHY DID THIS WORK??")
}
if len(tips) > 0 {
t.Error("WHAT EVEN HAPPENED?")
}
}
func TestDecodeTip_DecodesOneTip(t *testing.T) {
tip, err := DecodeTip(oneTipBytes())
if err != nil {
t.Error("Test data is invalid", err)
}
if tip.Tip != tip257 {
t.Error("TIP 257 IS WRONG!!!", tip, tip257)
}
}
var tip257 = `FROG IS DESIGNED TO BE THROWN INTO A ROOM TO DELIVER A LOUD BANG AND BRIGHT FLASH SUFFICIENT ENOUGH TO TEMPORARILY DISORIENT PERSONNEL IN THE ROOM.`
var base64Tip = `MIGaAgIBAQyBk0ZST0cgSVMgREVTSUdORUQgVE8gQkUgVEhST1dOIElOVE8gQSBS
T09NIFRPIERFTElWRVIgQSBMT1VEIEJBTkcgQU5EIEJSSUdIVCBGTEFTSCBTVUZG
SUNJRU5UIEVOT1VHSCBUTyBURU1QT1JBUklMWSBESVNPUklFTlQgUEVSU09OTkVM
IElOIFRIRSBST09NLg==`
var base64Croak = `MIITvzBIAgFSDENGUk9HIElTIEEgQ0hPS0lORyBIQVpBUkQuIERPIE5PVCBHSVZF
IEZST0cgVE8gVU5TVVBFUlZJU0VEIElORkFOVFMuMGUCAgDQDF9QUkVTUyBUSEUg
IlpPT00iIEJVVFRPTiBUTyBSRVBFQVRFRExZIEZPQ1VTIFlPVVIgQVRURU5USU9O
IE9OIEZST0cnUyBUT05HVUUsIEFOVVMgQU5EIEdFTklUQUxTLjAuAgIAkwwoRkVF
RCBZT1VSIEZST0cgRVZFUlkgREFZIFRPIEFWT0lEIERBTUFHRTB3AgEpDHJJRiBG
Uk9HIEJFR0lOUyBUTyBHTE9XIFJFRCwgRE8gTk9UIEJFQ09NRSBBTEFSTUVELiBK
VVNUIFBFUk1BTkVOVExZIFNFQUwgT0ZGIFRIRSBST09NIElOIFdISUNIIFlPVSBB
UkUgVVNJTkcgRlJPRy4wfwICAOUMeUZST0cnUyBPUEVSQVRJTkcgU1lTVEVNIElT
IFNVU0NFUFRJQkxFIFRPIE1FTU9SWSBMRUFLUy4gQVBQTFkgRlJPRyBNRU1PUlkg
UkVDT1ZFUlkgTE9USU9OKFRNKSBUTyBGUk9HJ1MgU0tJTiBUV0lDRSBEQUlMWS4w
UwIBcgxORE8gTk9UIExFQVZFIFlPVVIgRlJPRyBPVVRTSURFIE9WRVJOSUdIVC4g
U1dBRERMRSBZT1VSIEZST0cgV0hFTkVWRVIgUE9TU0lCTEUuMIGKAgIA7wyBg0ZS
T0cgU0hPVUxEIEJFIFRBS0VOIFRPIFlPVVIgTE9DQUwgRlJPRyBERUFMRVJTSElQ
IEZPUiBBIFNFUlZJQ0UgRVZFUlkgMyBZRUFSUyBPUiAxMCwwMDAgTUlMRVMgT0Yg
SE9QUElORywgV0hJQ0hFVkVSIE9DQ1VSUyBTT09ORVIuMG4CAUoMaUZST0cgT05M
WSBSVU5TIE9OIE5BUlJPVy1HQVVHRSBSQUlMLiBSVU5OSU5HIEZST0cgT04gU1RB
TkRBUkQtR0FVR0UgUkFJTCBXSUxMIExFQUQgVE8gREVSQUlMTUVOVCBPRiBGUk9H
LjAuAgEHDClGUk9HIElTIE5PVCBBIFBVTVBLSU4uIERPIE5PVCBDQVJWRSBGUk9H
LjAlAgFTDCBETyBOT1QgRkVFRCBGUk9HIEFGVEVSIE1JRE5JR0hULjCBhwIBKAyB
gUlGIEZST0cgRkFJTFMgVE8gR0VORVJBVEUgQklHLCBNQU5MWSBQT09TIFRIQVQg
UExPUCBTQVRJU0ZZSU5HTFkgSU5UTyBUSEUgVE9JTEVULCBDQUxMIE9VUiBDVVNU
T01FUiBTRVJWSUNFIE5VTUJFUiBBVCAxLTgwMC1GUk9HLjBlAgFDDGBQUk9MT05H
IFRIRSBMSUZFIE9GIEZST0cgQlkgUEVSRk9STUlORyBUSEUgRk9MTE9XSU5HIFNJ
TVBMRSBNQUlOVEVOQU5DRSBTVEVQUyBGUk9NIFRJTUUgVE8gVElNRTowPwICALQM
OUZST0cgSVMgTk9UIFRPIEJFIFNQVU4gUklHSFQgUk9VTkQuIEZST0cgSVMgTk9U
IEEgUkVDT1JELjCBwwIBBAyBvUZST0cgSVMgSVJSRVNJU1RJQkxFIFRPIENBVFMs
IERPR1MsIENISUxEUkVOIFVOREVSIFRIRSBBR0UgT0YgVEhSRUUsIEZFUkFMIENB
VFMsIERJU0hXQVNIRVIgR09CTElOUywgSE9VU0UgRkFJUklFUyBBTkQgT1RIRVIg
RlJPR1MuIFNFQ1VSRSBGUk9HIElOIElUUyBUUkFWRUwgQk9YIEFUIE5JR0hUIFRP
IFBSRVZFTlQgREFNQUdFLjBiAgFiDF1GUk9HIElTIENPTVBBVElCTEUgV0lUSCBN
SUNST1NPRlQgQ09NSUMgQ0hBVCBXSEVOIENPTVBJTEVEIFdJVEggVEhFIC0tRU5B
QkxFLUpFUktDSVRZIE9QVElPTi4wYgIBLQxdRE8gTk9UIFRVUk4gRlJPRyBPRkYg
QU5EIFRIRU4gT04gQUdBSU4sIEFTIE5PWElPVVMgU1VCU1RBTkNFUyBXSUxMIExF
QUsgRlJPTSBUSEUgRVlFIFNPQ0tFVFMuMEwCAToMR0ZPUiBPUFRJTUFMIEZST0cg
UEVSRk9STUFOQ0UgUkVNRU1CRVIgVE8gU0FWRSBZT1VSIEZST0cgQkVGT1JFIEVY
SVRJTkcuMC4CAgD8DChGUk9HIENBTiBCRSBVU0VEIEZPUiBVTkRFUldBVEVSIFdF
TERJTkcuMFoCAUcMVUpNUCBJUyBOT1QgSU4gRlJPRydTIElOU1RSVUNUSU9OIFNF
VC4gRlJPRyBXSUxMIFBFUkZPUk0gVEhJUyBPUEVSQVRJT04gSU5ERVBFTkRFTlRM
WS4wgYkCAgCxDIGCQUZURVIgVFJBTlNQT1JUSU5HIEZST0csIExFQVZFIEZST0cg
VE8gU0VUVExFIEZPUiBVUCBUTyBGT1VSIEhPVVJTIEJFRk9SRSBVU0lORyBGUk9H
IEFHQUlOIFRPIEdJVkUgSVRTIElOVEVSTkFMUyBUSU1FIFRPIFJFU0VUVExFLjCB
jQICALcMgYZEVUUgVE8gVU5FWFBFQ1RFRExZIEhJR0ggREVNQU5EIE9WRVIgQ0hS
SVNUTUFTLCBGUk9HIElTIElOIFNIT1JUIFNVUFBMWS4gWU9VIE1BWSBIQVZFIFRP
IEhPTEQgT1VUIEZPUiBGUk9HIFVOVElMIFRIRSBFTkQgT0YgVEhFIE5JR0hULjCB
pwICAPsMgaBETyBOT1QgQUxMT1cgRlJPRyBUTyBHTyBVTkRFUiBCRURTIE9SIEZV
Uk5JVFVSRS4gSUYgRlJPRyBCRUNPTUVTIENMT0dHRUQgV0lUSCBEVVNULCBZT1Ug
TUFZIE5PVElDRSBBIFJFRFVDVElPTiBJTiBQRVJGT1JNQU5DRSBBTkQgQU4gSU5D
UkVBU0UgSU4gR0VORVJBVEVEIEhFQVQuMDECARsMLERPIE5PVCBVU0UgRlJPRyBJ
TiBQTEFDRSBPRiBQUkVTU1VSRSBDT09LRVIuMIGDAgIAvAx9RlJPRyBJUyBSQVRF
RCBGT1IgVVNFIElOIFRFTVBFUkFUVVJFUyBVUCBUTyAzNUMgKDk1RikuIEZST0cn
UyBTVFJVQ1RVUkFMIFNUQUJJTElUWSBJUyBOT1QgR1VBUkFOVEVFRCBCRVlPTkQg
VEhFU0UgQ09ORElUSU9OUy4wTgICAP0MSERPIE5PVCBSRVZFUlNFLUVOR0lORUVS
IEZST0cuIERPIE5PVCBMT09LIEZPUiBIVFRQIEhFQURFUiBGUk9HIE9SIFgtRlJP
RzBwAgIAoAxqRlJPRydTIEVNSVNTSU9OUyBNRUVUIEVQQSBSRVFVSVJFTUVOVFMu
ICoqKkRPIE5PVCoqKiBJTlRFUkZFUkUgV0lUSCBUSEUgVU5NQVJLRUQgQkxBQ0sg
Qk9YIElOIEZST0cnUyBBTlVTLjBrAgIA2gxlVkFMSUQgT05MWSBPTiBVLlMuIEZS
T0cgU1RPUkUuIFJFUVVJUkVTIEZST0cgQUNDT1VOVCBBTkQgUFJJT1IgQUNDRVBU
QU5DRSBPRiBMSUNFTlNFIEFORCBVU0FHRSBURVJNUy4wgZMCAgCiDIGMSU4gVEhF
IEVWRU5UIE9GIEEgV0FURVIgTEFORElORyBUSEVSRSBJUyBBIExJRkUgRlJPRyBV
TkRFUiBZT1VSIFNFQVQuIFNJTVBMWSBQTEFDRSBGUk9HIE9WRVIgWU9VUiBIRUFE
IEFORCBORUNLIEFORCBQVUxMIFRIRSBMRUcgVE8gSU5GTEFURS4wgZoCAgEBDIGT
RlJPRyBJUyBERVNJR05FRCBUTyBCRSBUSFJPV04gSU5UTyBBIFJPT00gVE8gREVM
SVZFUiBBIExPVUQgQkFORyBBTkQgQlJJR0hUIEZMQVNIIFNVRkZJQ0lFTlQgRU5P
VUdIIFRPIFRFTVBPUkFSSUxZIERJU09SSUVOVCBQRVJTT05ORUwgSU4gVEhFIFJP
T00uMH4CAgDDDHhGUk9HIERPRVMgTk9UIENPTkZPUk0gVE8gQU5ZIE5BVElPTkFM
LCBTVVBSQU5BVElPTkFMIE9SIElOVEVSTkFUSU9OQUwgU0FGRVRZIFNUQU5EQVJE
Uy4gVVNFIE9GIEZST0cgSVMgQVQgWU9VUiBPV04gUklTSy4wgYACAQEMe0lOIENB
U0UgT0YgRU1FUkdFTkNZLCBQVUxMIERPV04gT04gRlJPRyBBTkQgQlJFQVRIRSBO
T1JNQUxMWS4gT1hZR0VOIElTIEZMT1dJTkcgRVZFTiBUSE9VR0ggRlJPRyBNQVkg
Tk9UIEFQUEVBUiBUTyBJTkZMQVRFLjApAgE+DCRETyBOT1QgSU5TRVJUIFVSQU5J
VU0gT1JFIElOVE8gRlJPRy4wNAIBEAwvRlJPRyBDQU5OT1QgQkUgQ09NUFJFU1NF
RC4gRE8gTk9UIEJBQ0sgVVAgRlJPRy4wbAICAL8MZkRPIE5PVCBCQUxBTkNFIE9C
SkVDVFMgQ09OVEFJTklORyBMSVFVSURTLCBTVUNIIEFTIFZBU0VTLCBPTiBUT1Ag
T0YgRlJPRy4gRlJPRyBJUyBOT1QgV0FURVItUkVTSVNUQU5ULjBEAgFeDD9GUk9H
IElTIE5PVCBBIEhUTUwgRUxFTUVOVC4gRE8gTk9UIENBTEwgR0VUQVRUUklCVVRF
KCkgT04gRlJPRy4wKwIBAwwmRlJPRyBJUyBOT1QgRk9SIFVTRSBEVVJJTkcgVEhF
IFdJTlRFUi4wSAIBMwxDVE8gTE9BRCBGUk9HIE9OIFRIRSBUT1AgT0YgVEhFIFNU
QUNLLCBFTlRFUiBUSEUgRk9MTE9XSU5HIENPTU1BTkQ6IDA+AgEaDDlGUk9HIFVO
REVSIFBSRVNTVVJFLiAgUE9JTlQgQVdBWSBGUk9NIEZBQ0UgV0hJTEUgT1BFTklO
Ry4wUwICAIoMTUZST0cgQ0FOTk9UIEJFIEVYUE9SVEVEIFRPIFRIRSBTVEFURVMg
T0YgU1lSSUEsIE5PUlRIIEtPUkVBLCBZRU1FTiBPUiBJQ0VMQU5EMGwCAgCWDGZG
Uk9HIElTIE5PVCBDQVBBQkxFIE9GIFBBUlNJTkcgWU9VVFVCRSBVUkxTLiBQQVNT
SU5HIEEgWU9VVFVCRSBVUkwgVE8gRlJPRyBNQVkgUkVTVUxUIElOIEZST0cgRkxF
RUlORy4wgYsCAgDEDIGERlJPRyBJUyBBQkxFIFRPIFJFQUQgVkNELCBTVkNELCBD
VkQgQU5EIERWRDE4LUVOQ09ERUQgRElTQ1MgT05MWS4gU0VSSU9VUyBEQU1BR0Ug
Q0FOIE9DQ1VSIElGIEZST0cgQVRURU1QVFMgVE8gUExBWSBEVkRTIE9SIEJMVVJB
WVMuMEsCAUYMRlJFQUQgQUxMIFNJR05TIEJFRk9SRSBQQVJLSU5HIEZST0cuIERP
IE5PVCBQQVJLIEZST0cgV0lUSE9VVCBBIFBFUk1JVC4wPgIBWQw5RlJPRyBJUyBO
T1QgU1VJVEFCTEUgRk9SIENISUxEUkVOIFVOREVSIFRIRSBBR0UgT0YgVEhSRUUu
MFgCAgCMDFJZT1VSIEZST0cgT05DRSBXT1JLRUQgQVMgQSBXQUlUUkVTUyBJTiBB
IENPQ0tUQUlMIEJBUiBCVVQgVEhBVCBXQVMgQSBMT05HIFRJTUUgQUdPMFwCAgDN
DFZGUk9HJ1MgREVGQVVMVCBBRE1JTiBQSU4gSVMgNTM3NS4gVEhJUyBTSE9VTEQg
QkUgQ0hBTkdFRCBUTyAyNDg5IEZPUiBTRUNVUklUWSBSRUFTT05TLjCCAQMCAgC2
DIH8SEFWRSBGUk9HIEhFTFAgSU4gVEhFIEtJVENIRU4hIEFUVEFDSCBXRVQgVVNB
R0UgTk9aWkxFIFRPIFRIRSBGT1JXQVJEIFJFQ0VJVklORyBQT1JULCBGTElQIEpV
TVBFUiBDT05GSUdVUkFUSU9OIE9OIE1PVE9SIENPTlRST0wgQVJSQVksIFRIRU4g
QVRUQUNIIEdST1VORElORyBTVFJBUCBUTyBBIExBUkdFLCBNRVRBTCBPQkpFQ1Qu
IEZST0cgQkxBREVTIE1VU1QgQkUgQ0xFQU5FRCBBTkQgT0lMRUQgQUZURVIgVVNF
IE9SIEVWRVJZIEhPVVIuMHICAgC6DGxFWFBPU1VSRSBUTyBCUklHSFQgU1VOTElH
SFQgQ0FOIFNFVkVSRUxZIERBTUFHRSBGUk9HJ1MgSU5URVJOQUwgQ09NUE9ORU5U
Uy4gU1RPUkUgRlJPRyBJTiBBIENPT0wsIERSWSBQTEFDRS4wPgIBZgw5RlJPRydT
IEZFRUxJTkdTIEFSRSBTRU5TSVRJVkUuIERPIE5PVCBESVNBUFBST1ZFIE9GIEZS
T0cuMC0CARQMKFJFVFVSTiBZT1VSIEZST0cgVE8gSVRTIENIQVJHRVIgTklHSFRM
WS4wbwICAL0MaURPIE5PVCBCTE9DSyBBTlkgT0YgRlJPRydTIFZFTlRJTEFUSU9O
IE9QRU5JTkdTLiBFTlNVUkUgRlJPRydTIFNVUkZBQ0UgSVMgQ09PTCBUTyBUSEUg
VE9VQ0ggQVQgQUxMIFRJTUVTLg==`