/*
 * Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 * for details. All rights reserved. Use of this source code is governed by a
 * BSD-style license that can be found in the LICENSE file.
 */
/**
 * @assertion bool raw
 *  final
 * When true, deflate generates raw data with no zlib header or trailer, and
 * will not compute an adler32 check value
 * @description Checks that this property returns constructor's raw argument and
 * data, compressed with raw: true has smaller size
 * @author sgrekhov@unipro.ru
 */
import "dart:io";
import "../../../Utils/expect.dart";

main() {
  GZipCodec codec1 = new GZipCodec();
  Expect.isFalse(codec1.raw);

  GZipCodec codec2 = new GZipCodec(raw: true);
  Expect.isTrue(codec2.raw);

  int max = 1000;
  List<int> data = new List<int>.filled(max, 0);
  for (int i = 0; i < max; i++) {
    data[i] = i % 256;
  }

  var encoded1 = codec1.encode(data);
  var encoded2 = codec2.encode(data);
  Expect.isTrue(encoded2.length < encoded1.length);

}
