| Index: tests/standalone/io/zlib_test.dart
|
| diff --git a/tests/standalone/io/zlib_test.dart b/tests/standalone/io/zlib_test.dart
|
| index 5b0fc492e0b1777d5fbd896a2b3b300ee8d410a5..ac9f797305358547be4def235df40870cd16b49b 100644
|
| --- a/tests/standalone/io/zlib_test.dart
|
| +++ b/tests/standalone/io/zlib_test.dart
|
| @@ -8,28 +8,6 @@ import 'dart:io';
|
| import "package:async_helper/async_helper.dart";
|
| import "package:expect/expect.dart";
|
|
|
| -void testZLibDeflate() {
|
| - test(int level, List<int> expected) {
|
| - asyncStart();
|
| - var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| - var controller = new StreamController(sync: true);
|
| - controller.stream.transform(new ZLibEncoder(gzip: false, level: level))
|
| - .fold([], (buffer, data) {
|
| - buffer.addAll(data);
|
| - return buffer;
|
| - })
|
| - .then((data) {
|
| - Expect.listEquals(expected, data);
|
| - asyncEnd();
|
| - });
|
| - controller.add(data);
|
| - controller.close();
|
| - }
|
| - test(6, [120, 156, 99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, 0, 175,
|
| - 0, 46]);
|
| -}
|
| -
|
| -
|
| void testZLibDeflateEmpty() {
|
| asyncStart();
|
| var controller = new StreamController(sync: true);
|
| @@ -45,6 +23,41 @@ void testZLibDeflateEmpty() {
|
| controller.close();
|
| }
|
|
|
| +void testZLibDeflateEmptyGzip() {
|
| + asyncStart();
|
| + var controller = new StreamController(sync: true);
|
| + controller.stream.transform(new ZLibEncoder(gzip: true, level: 6))
|
| + .fold([], (buffer, data) {
|
| + buffer.addAll(data);
|
| + return buffer;
|
| + })
|
| + .then((data) {
|
| + Expect.listEquals([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0,
|
| + 0, 0, 0], data);
|
| + asyncEnd();
|
| + });
|
| + controller.close();
|
| +}
|
| +
|
| +void testZLibDeflate() {
|
| + asyncStart();
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| + var controller = new StreamController(sync: true);
|
| + controller.stream.transform(new ZLibEncoder(gzip: false, level: 6))
|
| + .fold([], (buffer, data) {
|
| + buffer.addAll(data);
|
| + return buffer;
|
| + })
|
| + .then((data) {
|
| + Expect.listEquals(
|
| + [120, 156, 99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0, 0,
|
| + 175, 0, 46],
|
| + data);
|
| + asyncEnd();
|
| + });
|
| + controller.add(data);
|
| + controller.close();
|
| +}
|
|
|
| void testZLibDeflateGZip() {
|
| asyncStart();
|
| @@ -67,35 +80,77 @@ void testZLibDeflateGZip() {
|
| controller.close();
|
| }
|
|
|
| +void testZLibDeflateRaw() {
|
| + asyncStart();
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| + var controller = new StreamController(sync: true);
|
| + controller.stream.transform(new ZLibEncoder(raw: true, level: 6))
|
| + .fold([], (buffer, data) {
|
| + buffer.addAll(data);
|
| + return buffer;
|
| + })
|
| + .then((data) {
|
| + print(data);
|
| + Expect.listEquals([99, 96, 100, 98, 102, 97, 101, 99, 231, 224, 4, 0],
|
| + data);
|
| + asyncEnd();
|
| + });
|
| + controller.add(data);
|
| + controller.close();
|
| +}
|
| +
|
| void testZLibDeflateInvalidLevel() {
|
| test2(gzip, level) {
|
| - try {
|
| - new ZLibEncoder(gzip: gzip, level: level).startChunkedConversion(null);
|
| - Expect.fail("No exception thrown");
|
| - } catch (e) {
|
| - }
|
| - }
|
| - test(level) {
|
| - test2(false, level);
|
| - test2(true, level);
|
| - test2(9, level);
|
| - }
|
| - test(-2);
|
| - test(-20);
|
| - test(10);
|
| - test(42);
|
| - test(null);
|
| - test("9");
|
| + [true, false].forEach((gzip) {
|
| + [-2, -20, 10, 42, null, "9"].forEach((level) {
|
| + Expect.throws(
|
| + () => new ZLibEncoder(gzip: gzip, level: level),
|
| + (e) => e is ArgumentError,
|
| + "'level' must be in range -1..9"
|
| + );
|
| + });
|
| + });
|
| + };
|
| }
|
|
|
| void testZLibInflate() {
|
| - test2(bool gzip, int level) {
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| +
|
| + [true, false].forEach((gzip) {
|
| + [ZLibOption.STRATEGY_FILTERED, ZLibOption.STRATEGY_HUFFMAN_ONLY,
|
| + ZLibOption.STRATEGY_RLE, ZLibOption.STRATEGY_FIXED,
|
| + ZLibOption.STRATEGY_DEFAULT].forEach((strategy) {
|
| + [3, 6, 9].forEach((level) {
|
| + asyncStart();
|
| + var controller = new StreamController(sync: true);
|
| + controller.stream
|
| + .transform(new ZLibEncoder(gzip: gzip, level: level,
|
| + strategy: strategy))
|
| + .transform(new ZLibDecoder())
|
| + .fold([], (buffer, data) {
|
| + buffer.addAll(data);
|
| + return buffer;
|
| + })
|
| + .then((inflated) {
|
| + Expect.listEquals(data, inflated);
|
| + asyncEnd();
|
| + });
|
| + controller.add(data);
|
| + controller.close();
|
| + });
|
| + });
|
| + });
|
| +}
|
| +
|
| +void testZLibInflateRaw() {
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| +
|
| + [3, 6, 9].forEach((level) {
|
| asyncStart();
|
| - var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| var controller = new StreamController(sync: true);
|
| controller.stream
|
| - .transform(new ZLibEncoder(gzip: gzip, level: level))
|
| - .transform(new ZLibDecoder())
|
| + .transform(new ZLibEncoder(raw: true, level: level))
|
| + .transform(new ZLibDecoder(raw: true))
|
| .fold([], (buffer, data) {
|
| buffer.addAll(data);
|
| return buffer;
|
| @@ -106,39 +161,78 @@ void testZLibInflate() {
|
| });
|
| controller.add(data);
|
| controller.close();
|
| - }
|
| - void test(int level) {
|
| - test2(false, level);
|
| - test2(true, level);
|
| - }
|
| - for (int i = -1; i < 10; i++) {
|
| - test(i);
|
| - }
|
| + });
|
| }
|
|
|
| void testZLibInflateSync() {
|
| - test2(bool gzip, int level) {
|
| - var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| - var encoded = new ZLibEncoder(gzip: gzip, level: level).convert(data);
|
| - var decoded = new ZLibDecoder().convert(encoded);
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| +
|
| + [true, false].forEach((gzip) {
|
| + [3, 6, 9].forEach((level) {
|
| + var encoded = new ZLibEncoder(gzip: gzip, level: level).convert(data);
|
| + var decoded = new ZLibDecoder().convert(encoded);
|
| + Expect.listEquals(data, decoded);
|
| + });
|
| + });
|
| +}
|
| +
|
| +void testZlibInflateThrowsWithSmallerWindow() {
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| + var encoder = new ZLibEncoder(windowBits: 10);
|
| + var encodedData = encoder.convert(data);
|
| + var decoder = new ZLibDecoder(windowBits: 8);
|
| + Expect.throws(() => decoder.convert(encodedData));
|
| +}
|
| +
|
| +void testZlibInflateWithLargerWindow() {
|
| + var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
| +
|
| + [true, false].forEach((gzip) {
|
| + [3, 6, 9].forEach((level) {
|
| + asyncStart();
|
| + var controller = new StreamController(sync: true);
|
| + controller.stream
|
| + .transform(new ZLibEncoder(gzip: gzip, level: level, windowBits: 8))
|
| + .transform(new ZLibDecoder(windowBits: 10))
|
| + .fold([], (buffer, data) {
|
| + buffer.addAll(data);
|
| + return buffer;
|
| + })
|
| + .then((inflated) {
|
| + Expect.listEquals(data, inflated);
|
| + asyncEnd();
|
| + });
|
| + controller.add(data);
|
| + controller.close();
|
| + });
|
| + });
|
| +}
|
| +
|
| +void testZlibWithDictionary() {
|
| + var dict = [102, 111, 111, 98, 97, 114];
|
| + var data = [98, 97, 114, 102, 111, 111];
|
| +
|
| + [3, 6, 9].forEach((level) {
|
| + var encoded = new ZLibEncoder(level: level, dictionary: dict)
|
| + .convert(data);
|
| + var decoded = new ZLibDecoder(dictionary: dict).convert(encoded);
|
| Expect.listEquals(data, decoded);
|
| - }
|
| - void test(int level) {
|
| - test2(false, level);
|
| - test2(true, level);
|
| - }
|
| - for (int i = -1; i < 10; i++) {
|
| - test(i);
|
| - }
|
| + });
|
| }
|
|
|
| void main() {
|
| asyncStart();
|
| testZLibDeflate();
|
| testZLibDeflateEmpty();
|
| + testZLibDeflateEmptyGzip();
|
| testZLibDeflateGZip();
|
| testZLibDeflateInvalidLevel();
|
| testZLibInflate();
|
| testZLibInflateSync();
|
| + testZlibInflateThrowsWithSmallerWindow();
|
| + testZlibInflateWithLargerWindow();
|
| + testZLibDeflateRaw();
|
| + testZLibInflateRaw();
|
| + testZlibWithDictionary();
|
| asyncEnd();
|
| }
|
|
|