OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:io'; | 6 import 'dart:io'; |
7 | 7 |
8 import "package:async_helper/async_helper.dart"; | 8 import "package:async_helper/async_helper.dart"; |
9 import "package:expect/expect.dart"; | 9 import "package:expect/expect.dart"; |
10 | 10 |
11 void testZLibDeflate() { | |
12 test(int level, List<int> expected) { | |
13 asyncStart(); | |
14 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; | |
15 var controller = new StreamController(sync: true); | |
16 controller.stream.transform(new ZLibEncoder(gzip: false, level: level)) | |
17 .fold([], (buffer, data) { | |
18 buffer.addAll(data); | |
19 return buffer; | |
20 }) | |
21 .then((data) { | |
22 Expect.listEquals(expected, data); | |
23 asyncEnd(); | |
24 }); | |
25 controller.add(data); | |
26 controller.close(); | |
27 } | |
28 test(6, [120, 156, 99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, 0, 175, | |
29 0, 46]); | |
30 } | |
31 | |
32 | |
33 void testZLibDeflateEmpty() { | 11 void testZLibDeflateEmpty() { |
34 asyncStart(); | 12 asyncStart(); |
35 var controller = new StreamController(sync: true); | 13 var controller = new StreamController(sync: true); |
36 controller.stream.transform(new ZLibEncoder(gzip: false, level: 6)) | 14 controller.stream.transform(new ZLibEncoder(gzip: false, level: 6)) |
37 .fold([], (buffer, data) { | 15 .fold([], (buffer, data) { |
38 buffer.addAll(data); | 16 buffer.addAll(data); |
39 return buffer; | 17 return buffer; |
40 }) | 18 }) |
41 .then((data) { | 19 .then((data) { |
42 Expect.listEquals([120, 156, 3, 0, 0, 0, 0, 1], data); | 20 Expect.listEquals([120, 156, 3, 0, 0, 0, 0, 1], data); |
43 asyncEnd(); | 21 asyncEnd(); |
44 }); | 22 }); |
45 controller.close(); | 23 controller.close(); |
46 } | 24 } |
47 | 25 |
| 26 void testZLibDeflateEmptyGzip() { |
| 27 asyncStart(); |
| 28 var controller = new StreamController(sync: true); |
| 29 controller.stream.transform(new ZLibEncoder(gzip: true, level: 6)) |
| 30 .fold([], (buffer, data) { |
| 31 buffer.addAll(data); |
| 32 return buffer; |
| 33 }) |
| 34 .then((data) { |
| 35 Expect.listEquals([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, |
| 36 0, 0], data); |
| 37 asyncEnd(); |
| 38 }); |
| 39 controller.close(); |
| 40 } |
| 41 |
| 42 void testZLibDeflate() { |
| 43 test(int level, List<int> expected) { |
| 44 asyncStart(); |
| 45 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 46 var controller = new StreamController(sync: true); |
| 47 controller.stream.transform(new ZLibEncoder(gzip: false, level: level)) |
| 48 .fold([], (buffer, data) { |
| 49 buffer.addAll(data); |
| 50 return buffer; |
| 51 }) |
| 52 .then((data) { |
| 53 Expect.listEquals(expected, data); |
| 54 asyncEnd(); |
| 55 }); |
| 56 controller.add(data); |
| 57 controller.close(); |
| 58 } |
| 59 test(6, [120, 156, 99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, 0, 175, |
| 60 0, 46]); |
| 61 } |
48 | 62 |
49 void testZLibDeflateGZip() { | 63 void testZLibDeflateGZip() { |
50 asyncStart(); | 64 asyncStart(); |
51 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; | 65 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
52 var controller = new StreamController(sync: true); | 66 var controller = new StreamController(sync: true); |
53 controller.stream.transform(new ZLibEncoder(gzip: true)) | 67 controller.stream.transform(new ZLibEncoder(gzip: true)) |
54 .fold([], (buffer, data) { | 68 .fold([], (buffer, data) { |
55 buffer.addAll(data); | 69 buffer.addAll(data); |
56 return buffer; | 70 return buffer; |
57 }) | 71 }) |
58 .then((data) { | 72 .then((data) { |
59 Expect.equals(30, data.length); | 73 Expect.equals(30, data.length); |
60 Expect.listEquals([99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, | 74 Expect.listEquals([99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, |
61 70, 215, 108, 69, 10, 0, 0, 0], | 75 70, 215, 108, 69, 10, 0, 0, 0], |
62 // Skip header, as it can change. | 76 // Skip header, as it can change. |
63 data.sublist(10)); | 77 data.sublist(10)); |
64 asyncEnd(); | 78 asyncEnd(); |
65 }); | 79 }); |
66 controller.add(data); | 80 controller.add(data); |
67 controller.close(); | 81 controller.close(); |
68 } | 82 } |
69 | 83 |
| 84 void testZLibDeflateRaw() { |
| 85 test(int level, List<int> expected) { |
| 86 asyncStart(); |
| 87 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 88 var controller = new StreamController(sync: true); |
| 89 controller.stream.transform(new ZLibEncoder(raw: true, level: level)) |
| 90 .fold([], (buffer, data) { |
| 91 buffer.addAll(data); |
| 92 return buffer; |
| 93 }) |
| 94 .then((data) { |
| 95 print(data); |
| 96 Expect.listEquals(expected, data); |
| 97 asyncEnd(); |
| 98 }); |
| 99 controller.add(data); |
| 100 controller.close(); |
| 101 } |
| 102 test(6, [99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0]); |
| 103 } |
| 104 |
70 void testZLibDeflateInvalidLevel() { | 105 void testZLibDeflateInvalidLevel() { |
71 test2(gzip, level) { | 106 test2(gzip, level) { |
72 try { | 107 var encoder = new ZLibEncoder(gzip: gzip, level: level); |
73 new ZLibEncoder(gzip: gzip, level: level).startChunkedConversion(null); | 108 Expect.throws(() => encoder.startChunkedConversion(null)); |
74 Expect.fail("No exception thrown"); | |
75 } catch (e) { | |
76 } | |
77 } | 109 } |
78 test(level) { | 110 test(level) { |
79 test2(false, level); | 111 test2(false, level); |
80 test2(true, level); | 112 test2(true, level); |
81 test2(9, level); | 113 test2(9, level); |
82 } | 114 } |
83 test(-2); | 115 test(-2); |
84 test(-20); | 116 test(-20); |
85 test(10); | 117 test(10); |
86 test(42); | 118 test(42); |
(...skipping 22 matching lines...) Expand all Loading... |
109 } | 141 } |
110 void test(int level) { | 142 void test(int level) { |
111 test2(false, level); | 143 test2(false, level); |
112 test2(true, level); | 144 test2(true, level); |
113 } | 145 } |
114 for (int i = -1; i < 10; i++) { | 146 for (int i = -1; i < 10; i++) { |
115 test(i); | 147 test(i); |
116 } | 148 } |
117 } | 149 } |
118 | 150 |
| 151 void testZLibInflateRaw() { |
| 152 test(int level) { |
| 153 asyncStart(); |
| 154 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 155 var controller = new StreamController(sync: true); |
| 156 controller.stream |
| 157 .transform(new ZLibEncoder(raw: true, level: level)) |
| 158 .transform(new ZLibDecoder(raw: true)) |
| 159 .fold([], (buffer, data) { |
| 160 buffer.addAll(data); |
| 161 return buffer; |
| 162 }) |
| 163 .then((inflated) { |
| 164 Expect.listEquals(data, inflated); |
| 165 asyncEnd(); |
| 166 }); |
| 167 controller.add(data); |
| 168 controller.close(); |
| 169 } |
| 170 for (int i = -1; i < 10; i++) { |
| 171 test(i); |
| 172 } |
| 173 } |
| 174 |
119 void testZLibInflateSync() { | 175 void testZLibInflateSync() { |
120 test2(bool gzip, int level) { | 176 test2(bool gzip, int level) { |
121 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; | 177 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
122 var encoded = new ZLibEncoder(gzip: gzip, level: level).convert(data); | 178 var encoded = new ZLibEncoder(gzip: gzip, level: level).convert(data); |
123 var decoded = new ZLibDecoder().convert(encoded); | 179 var decoded = new ZLibDecoder().convert(encoded); |
124 Expect.listEquals(data, decoded); | 180 Expect.listEquals(data, decoded); |
125 } | 181 } |
126 void test(int level) { | 182 void test(int level) { |
127 test2(false, level); | 183 test2(false, level); |
128 test2(true, level); | 184 test2(true, level); |
129 } | 185 } |
130 for (int i = -1; i < 10; i++) { | 186 for (int i = -1; i < 10; i++) { |
131 test(i); | 187 test(i); |
132 } | 188 } |
133 } | 189 } |
134 | 190 |
| 191 void testZlibInflateThrowsWithSmallerWindow() { |
| 192 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 193 var encoder = new ZLibEncoder(windowBits: 10); |
| 194 var encodedData = encoder.convert(data); |
| 195 var decoder = new ZLibDecoder(windowBits: 8); |
| 196 Expect.throws(() => decoder.convert(encodedData)); |
| 197 } |
| 198 |
| 199 void testZlibInflateWithLargerWindow() { |
| 200 test2(bool gzip, int level) { |
| 201 asyncStart(); |
| 202 var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 203 var controller = new StreamController(sync: true); |
| 204 controller.stream |
| 205 .transform(new ZLibEncoder(gzip: gzip, level: level, windowBits: 8)) |
| 206 .transform(new ZLibDecoder(windowBits: 10)) |
| 207 .fold([], (buffer, data) { |
| 208 buffer.addAll(data); |
| 209 return buffer; |
| 210 }) |
| 211 .then((inflated) { |
| 212 Expect.listEquals(data, inflated); |
| 213 asyncEnd(); |
| 214 }); |
| 215 controller.add(data); |
| 216 controller.close(); |
| 217 } |
| 218 void test(int level) { |
| 219 test2(false, level); |
| 220 test2(true, level); |
| 221 } |
| 222 for (int i = -1; i < 10; i++) { |
| 223 test(i); |
| 224 } |
| 225 } |
| 226 |
135 void main() { | 227 void main() { |
136 asyncStart(); | 228 asyncStart(); |
137 testZLibDeflate(); | 229 testZLibDeflate(); |
138 testZLibDeflateEmpty(); | 230 testZLibDeflateEmpty(); |
| 231 testZLibDeflateEmptyGzip(); |
139 testZLibDeflateGZip(); | 232 testZLibDeflateGZip(); |
140 testZLibDeflateInvalidLevel(); | 233 testZLibDeflateInvalidLevel(); |
141 testZLibInflate(); | 234 testZLibInflate(); |
142 testZLibInflateSync(); | 235 testZLibInflateSync(); |
| 236 testZlibInflateThrowsWithSmallerWindow(); |
| 237 testZlibInflateWithLargerWindow(); |
| 238 testZLibDeflateRaw(); |
| 239 testZLibInflateRaw(); |
143 asyncEnd(); | 240 asyncEnd(); |
144 } | 241 } |
OLD | NEW |