OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [compress/] [gzip/] [gunzip_test.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2009 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package gzip
6
 
7
import (
8
        "bytes"
9
        "io"
10
        "testing"
11
)
12
 
13
type gunzipTest struct {
14
        name string
15
        desc string
16
        raw  string
17
        gzip []byte
18
        err  error
19
}
20
 
21
var gunzipTests = []gunzipTest{
22
        { // has 1 empty fixed-huffman block
23
                "empty.txt",
24
                "empty.txt",
25
                "",
26
                []byte{
27
                        0x1f, 0x8b, 0x08, 0x08, 0xf7, 0x5e, 0x14, 0x4a,
28
                        0x00, 0x03, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e,
29
                        0x74, 0x78, 0x74, 0x00, 0x03, 0x00, 0x00, 0x00,
30
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31
                },
32
                nil,
33
        },
34
        { // has 1 non-empty fixed huffman block
35
                "hello.txt",
36
                "hello.txt",
37
                "hello world\n",
38
                []byte{
39
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
40
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
41
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
42
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
43
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00,
44
                        0x00, 0x00,
45
                },
46
                nil,
47
        },
48
        { // concatenation
49
                "hello.txt",
50
                "hello.txt x2",
51
                "hello world\n" +
52
                        "hello world\n",
53
                []byte{
54
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
55
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
56
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
57
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
58
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00,
59
                        0x00, 0x00,
60
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
61
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
62
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
63
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
64
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00,
65
                        0x00, 0x00,
66
                },
67
                nil,
68
        },
69
        { // has a fixed huffman block with some length-distance pairs
70
                "shesells.txt",
71
                "shesells.txt",
72
                "she sells seashells by the seashore\n",
73
                []byte{
74
                        0x1f, 0x8b, 0x08, 0x08, 0x72, 0x66, 0x8b, 0x4a,
75
                        0x00, 0x03, 0x73, 0x68, 0x65, 0x73, 0x65, 0x6c,
76
                        0x6c, 0x73, 0x2e, 0x74, 0x78, 0x74, 0x00, 0x2b,
77
                        0xce, 0x48, 0x55, 0x28, 0x4e, 0xcd, 0xc9, 0x29,
78
                        0x06, 0x92, 0x89, 0xc5, 0x19, 0x60, 0x56, 0x52,
79
                        0xa5, 0x42, 0x09, 0x58, 0x18, 0x28, 0x90, 0x5f,
80
                        0x94, 0xca, 0x05, 0x00, 0x76, 0xb0, 0x3b, 0xeb,
81
                        0x24, 0x00, 0x00, 0x00,
82
                },
83
                nil,
84
        },
85
        { // has dynamic huffman blocks
86
                "gettysburg",
87
                "gettysburg",
88
                "  Four score and seven years ago our fathers brought forth on\n" +
89
                        "this continent, a new nation, conceived in Liberty, and dedicated\n" +
90
                        "to the proposition that all men are created equal.\n" +
91
                        "  Now we are engaged in a great Civil War, testing whether that\n" +
92
                        "nation, or any nation so conceived and so dedicated, can long\n" +
93
                        "endure.\n" +
94
                        "  We are met on a great battle-field of that war.\n" +
95
                        "  We have come to dedicate a portion of that field, as a final\n" +
96
                        "resting place for those who here gave their lives that that\n" +
97
                        "nation might live.  It is altogether fitting and proper that\n" +
98
                        "we should do this.\n" +
99
                        "  But, in a larger sense, we can not dedicate — we can not\n" +
100
                        "consecrate — we can not hallow — this ground.\n" +
101
                        "  The brave men, living and dead, who struggled here, have\n" +
102
                        "consecrated it, far above our poor power to add or detract.\n" +
103
                        "The world will little note, nor long remember what we say here,\n" +
104
                        "but it can never forget what they did here.\n" +
105
                        "  It is for us the living, rather, to be dedicated here to the\n" +
106
                        "unfinished work which they who fought here have thus far so\n" +
107
                        "nobly advanced.  It is rather for us to be here dedicated to\n" +
108
                        "the great task remaining before us — that from these honored\n" +
109
                        "dead we take increased devotion to that cause for which they\n" +
110
                        "gave the last full measure of devotion —\n" +
111
                        "  that we here highly resolve that these dead shall not have\n" +
112
                        "died in vain — that this nation, under God, shall have a new\n" +
113
                        "birth of freedom — and that government of the people, by the\n" +
114
                        "people, for the people, shall not perish from this earth.\n" +
115
                        "\n" +
116
                        "Abraham Lincoln, November 19, 1863, Gettysburg, Pennsylvania\n",
117
                []byte{
118
                        0x1f, 0x8b, 0x08, 0x08, 0xd1, 0x12, 0x2b, 0x4a,
119
                        0x00, 0x03, 0x67, 0x65, 0x74, 0x74, 0x79, 0x73,
120
                        0x62, 0x75, 0x72, 0x67, 0x00, 0x65, 0x54, 0xcd,
121
                        0x6e, 0xd4, 0x30, 0x10, 0xbe, 0xfb, 0x29, 0xe6,
122
                        0x01, 0x42, 0xa5, 0x0a, 0x09, 0xc1, 0x11, 0x90,
123
                        0x40, 0x48, 0xa8, 0xe2, 0x80, 0xd4, 0xf3, 0x24,
124
                        0x9e, 0x24, 0x56, 0xbd, 0x9e, 0xc5, 0x76, 0x76,
125
                        0x95, 0x1b, 0x0f, 0xc1, 0x13, 0xf2, 0x24, 0x7c,
126
                        0x63, 0x77, 0x9b, 0x4a, 0x5c, 0xaa, 0x6e, 0x6c,
127
                        0xcf, 0x7c, 0x7f, 0x33, 0x44, 0x5f, 0x74, 0xcb,
128
                        0x54, 0x26, 0xcd, 0x42, 0x9c, 0x3c, 0x15, 0xb9,
129
                        0x48, 0xa2, 0x5d, 0x38, 0x17, 0xe2, 0x45, 0xc9,
130
                        0x4e, 0x67, 0xae, 0xab, 0xe0, 0xf7, 0x98, 0x75,
131
                        0x5b, 0xd6, 0x4a, 0xb3, 0xe6, 0xba, 0x92, 0x26,
132
                        0x57, 0xd7, 0x50, 0x68, 0xd2, 0x54, 0x43, 0x92,
133
                        0x54, 0x07, 0x62, 0x4a, 0x72, 0xa5, 0xc4, 0x35,
134
                        0x68, 0x1a, 0xec, 0x60, 0x92, 0x70, 0x11, 0x4f,
135
                        0x21, 0xd1, 0xf7, 0x30, 0x4a, 0xae, 0xfb, 0xd0,
136
                        0x9a, 0x78, 0xf1, 0x61, 0xe2, 0x2a, 0xde, 0x55,
137
                        0x25, 0xd4, 0xa6, 0x73, 0xd6, 0xb3, 0x96, 0x60,
138
                        0xef, 0xf0, 0x9b, 0x2b, 0x71, 0x8c, 0x74, 0x02,
139
                        0x10, 0x06, 0xac, 0x29, 0x8b, 0xdd, 0x25, 0xf9,
140
                        0xb5, 0x71, 0xbc, 0x73, 0x44, 0x0f, 0x7a, 0xa5,
141
                        0xab, 0xb4, 0x33, 0x49, 0x0b, 0x2f, 0xbd, 0x03,
142
                        0xd3, 0x62, 0x17, 0xe9, 0x73, 0xb8, 0x84, 0x48,
143
                        0x8f, 0x9c, 0x07, 0xaa, 0x52, 0x00, 0x6d, 0xa1,
144
                        0xeb, 0x2a, 0xc6, 0xa0, 0x95, 0x76, 0x37, 0x78,
145
                        0x9a, 0x81, 0x65, 0x7f, 0x46, 0x4b, 0x45, 0x5f,
146
                        0xe1, 0x6d, 0x42, 0xe8, 0x01, 0x13, 0x5c, 0x38,
147
                        0x51, 0xd4, 0xb4, 0x38, 0x49, 0x7e, 0xcb, 0x62,
148
                        0x28, 0x1e, 0x3b, 0x82, 0x93, 0x54, 0x48, 0xf1,
149
                        0xd2, 0x7d, 0xe4, 0x5a, 0xa3, 0xbc, 0x99, 0x83,
150
                        0x44, 0x4f, 0x3a, 0x77, 0x36, 0x57, 0xce, 0xcf,
151
                        0x2f, 0x56, 0xbe, 0x80, 0x90, 0x9e, 0x84, 0xea,
152
                        0x51, 0x1f, 0x8f, 0xcf, 0x90, 0xd4, 0x60, 0xdc,
153
                        0x5e, 0xb4, 0xf7, 0x10, 0x0b, 0x26, 0xe0, 0xff,
154
                        0xc4, 0xd1, 0xe5, 0x67, 0x2e, 0xe7, 0xc8, 0x93,
155
                        0x98, 0x05, 0xb8, 0xa8, 0x45, 0xc0, 0x4d, 0x09,
156
                        0xdc, 0x84, 0x16, 0x2b, 0x0d, 0x9a, 0x21, 0x53,
157
                        0x04, 0x8b, 0xd2, 0x0b, 0xbd, 0xa2, 0x4c, 0xa7,
158
                        0x60, 0xee, 0xd9, 0xe1, 0x1d, 0xd1, 0xb7, 0x4a,
159
                        0x30, 0x8f, 0x63, 0xd5, 0xa5, 0x8b, 0x33, 0x87,
160
                        0xda, 0x1a, 0x18, 0x79, 0xf3, 0xe3, 0xa6, 0x17,
161
                        0x94, 0x2e, 0xab, 0x6e, 0xa0, 0xe3, 0xcd, 0xac,
162
                        0x50, 0x8c, 0xca, 0xa7, 0x0d, 0x76, 0x37, 0xd1,
163
                        0x23, 0xe7, 0x05, 0x57, 0x8b, 0xa4, 0x22, 0x83,
164
                        0xd9, 0x62, 0x52, 0x25, 0xad, 0x07, 0xbb, 0xbf,
165
                        0xbf, 0xff, 0xbc, 0xfa, 0xee, 0x20, 0x73, 0x91,
166
                        0x29, 0xff, 0x7f, 0x02, 0x71, 0x62, 0x84, 0xb5,
167
                        0xf6, 0xb5, 0x25, 0x6b, 0x41, 0xde, 0x92, 0xb7,
168
                        0x76, 0x3f, 0x91, 0x91, 0x31, 0x1b, 0x41, 0x84,
169
                        0x62, 0x30, 0x0a, 0x37, 0xa4, 0x5e, 0x18, 0x3a,
170
                        0x99, 0x08, 0xa5, 0xe6, 0x6d, 0x59, 0x22, 0xec,
171
                        0x33, 0x39, 0x86, 0x26, 0xf5, 0xab, 0x66, 0xc8,
172
                        0x08, 0x20, 0xcf, 0x0c, 0xd7, 0x47, 0x45, 0x21,
173
                        0x0b, 0xf6, 0x59, 0xd5, 0xfe, 0x5c, 0x8d, 0xaa,
174
                        0x12, 0x7b, 0x6f, 0xa1, 0xf0, 0x52, 0x33, 0x4f,
175
                        0xf5, 0xce, 0x59, 0xd3, 0xab, 0x66, 0x10, 0xbf,
176
                        0x06, 0xc4, 0x31, 0x06, 0x73, 0xd6, 0x80, 0xa2,
177
                        0x78, 0xc2, 0x45, 0xcb, 0x03, 0x65, 0x39, 0xc9,
178
                        0x09, 0xd1, 0x06, 0x04, 0x33, 0x1a, 0x5a, 0xf1,
179
                        0xde, 0x01, 0xb8, 0x71, 0x83, 0xc4, 0xb5, 0xb3,
180
                        0xc3, 0x54, 0x65, 0x33, 0x0d, 0x5a, 0xf7, 0x9b,
181
                        0x90, 0x7c, 0x27, 0x1f, 0x3a, 0x58, 0xa3, 0xd8,
182
                        0xfd, 0x30, 0x5f, 0xb7, 0xd2, 0x66, 0xa2, 0x93,
183
                        0x1c, 0x28, 0xb7, 0xe9, 0x1b, 0x0c, 0xe1, 0x28,
184
                        0x47, 0x26, 0xbb, 0xe9, 0x7d, 0x7e, 0xdc, 0x96,
185
                        0x10, 0x92, 0x50, 0x56, 0x7c, 0x06, 0xe2, 0x27,
186
                        0xb4, 0x08, 0xd3, 0xda, 0x7b, 0x98, 0x34, 0x73,
187
                        0x9f, 0xdb, 0xf6, 0x62, 0xed, 0x31, 0x41, 0x13,
188
                        0xd3, 0xa2, 0xa8, 0x4b, 0x3a, 0xc6, 0x1d, 0xe4,
189
                        0x2f, 0x8c, 0xf8, 0xfb, 0x97, 0x64, 0xf4, 0xb6,
190
                        0x2f, 0x80, 0x5a, 0xf3, 0x56, 0xe0, 0x40, 0x50,
191
                        0xd5, 0x19, 0xd0, 0x1e, 0xfc, 0xca, 0xe5, 0xc9,
192
                        0xd4, 0x60, 0x00, 0x81, 0x2e, 0xa3, 0xcc, 0xb6,
193
                        0x52, 0xf0, 0xb4, 0xdb, 0x69, 0x99, 0xce, 0x7a,
194
                        0x32, 0x4c, 0x08, 0xed, 0xaa, 0x10, 0x10, 0xe3,
195
                        0x6f, 0xee, 0x99, 0x68, 0x95, 0x9f, 0x04, 0x71,
196
                        0xb2, 0x49, 0x2f, 0x62, 0xa6, 0x5e, 0xb4, 0xef,
197
                        0x02, 0xed, 0x4f, 0x27, 0xde, 0x4a, 0x0f, 0xfd,
198
                        0xc1, 0xcc, 0xdd, 0x02, 0x8f, 0x08, 0x16, 0x54,
199
                        0xdf, 0xda, 0xca, 0xe0, 0x82, 0xf1, 0xb4, 0x31,
200
                        0x7a, 0xa9, 0x81, 0xfe, 0x90, 0xb7, 0x3e, 0xdb,
201
                        0xd3, 0x35, 0xc0, 0x20, 0x80, 0x33, 0x46, 0x4a,
202
                        0x63, 0xab, 0xd1, 0x0d, 0x29, 0xd2, 0xe2, 0x84,
203
                        0xb8, 0xdb, 0xfa, 0xe9, 0x89, 0x44, 0x86, 0x7c,
204
                        0xe8, 0x0b, 0xe6, 0x02, 0x6a, 0x07, 0x9b, 0x96,
205
                        0xd0, 0xdb, 0x2e, 0x41, 0x4c, 0xa1, 0xd5, 0x57,
206
                        0x45, 0x14, 0xfb, 0xe3, 0xa6, 0x72, 0x5b, 0x87,
207
                        0x6e, 0x0c, 0x6d, 0x5b, 0xce, 0xe0, 0x2f, 0xe2,
208
                        0x21, 0x81, 0x95, 0xb0, 0xe8, 0xb6, 0x32, 0x0b,
209
                        0xb2, 0x98, 0x13, 0x52, 0x5d, 0xfb, 0xec, 0x63,
210
                        0x17, 0x8a, 0x9e, 0x23, 0x22, 0x36, 0xee, 0xcd,
211
                        0xda, 0xdb, 0xcf, 0x3e, 0xf1, 0xc7, 0xf1, 0x01,
212
                        0x12, 0x93, 0x0a, 0xeb, 0x6f, 0xf2, 0x02, 0x15,
213
                        0x96, 0x77, 0x5d, 0xef, 0x9c, 0xfb, 0x88, 0x91,
214
                        0x59, 0xf9, 0x84, 0xdd, 0x9b, 0x26, 0x8d, 0x80,
215
                        0xf9, 0x80, 0x66, 0x2d, 0xac, 0xf7, 0x1f, 0x06,
216
                        0xba, 0x7f, 0xff, 0xee, 0xed, 0x40, 0x5f, 0xa5,
217
                        0xd6, 0xbd, 0x8c, 0x5b, 0x46, 0xd2, 0x7e, 0x48,
218
                        0x4a, 0x65, 0x8f, 0x08, 0x42, 0x60, 0xf7, 0x0f,
219
                        0xb9, 0x16, 0x0b, 0x0c, 0x1a, 0x06, 0x00, 0x00,
220
                },
221
                nil,
222
        },
223
        { // has 1 non-empty fixed huffman block then garbage
224
                "hello.txt",
225
                "hello.txt + garbage",
226
                "hello world\n",
227
                []byte{
228
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
229
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
230
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
231
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
232
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00,
233
                        0x00, 0x00, 'g', 'a', 'r', 'b', 'a', 'g', 'e', '!', '!', '!',
234
                },
235
                ErrHeader,
236
        },
237
        { // has 1 non-empty fixed huffman block not enough header
238
                "hello.txt",
239
                "hello.txt + garbage",
240
                "hello world\n",
241
                []byte{
242
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
243
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
244
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
245
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
246
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00,
247
                        0x00, 0x00, gzipID1,
248
                },
249
                io.ErrUnexpectedEOF,
250
        },
251
        { // has 1 non-empty fixed huffman block but corrupt checksum
252
                "hello.txt",
253
                "hello.txt + corrupt checksum",
254
                "hello world\n",
255
                []byte{
256
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
257
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
258
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
259
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
260
                        0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x00,
261
                        0x00, 0x00,
262
                },
263
                ErrChecksum,
264
        },
265
        { // has 1 non-empty fixed huffman block but corrupt size
266
                "hello.txt",
267
                "hello.txt + corrupt size",
268
                "hello world\n",
269
                []byte{
270
                        0x1f, 0x8b, 0x08, 0x08, 0xc8, 0x58, 0x13, 0x4a,
271
                        0x00, 0x03, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e,
272
                        0x74, 0x78, 0x74, 0x00, 0xcb, 0x48, 0xcd, 0xc9,
273
                        0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1,
274
                        0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0xff, 0x00,
275
                        0x00, 0x00,
276
                },
277
                ErrChecksum,
278
        },
279
}
280
 
281
func TestDecompressor(t *testing.T) {
282
        b := new(bytes.Buffer)
283
        for _, tt := range gunzipTests {
284
                in := bytes.NewBuffer(tt.gzip)
285
                gzip, err := NewReader(in)
286
                if err != nil {
287
                        t.Errorf("%s: NewReader: %s", tt.name, err)
288
                        continue
289
                }
290
                defer gzip.Close()
291
                if tt.name != gzip.Name {
292
                        t.Errorf("%s: got name %s", tt.name, gzip.Name)
293
                }
294
                b.Reset()
295
                n, err := io.Copy(b, gzip)
296
                if err != tt.err {
297
                        t.Errorf("%s: io.Copy: %v want %v", tt.name, err, tt.err)
298
                }
299
                s := b.String()
300
                if s != tt.raw {
301
                        t.Errorf("%s: got %d-byte %q want %d-byte %q", tt.name, n, s, len(tt.raw), tt.raw)
302
                }
303
        }
304
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.