// 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 int level
///  final
/// The compression-level can be set in the range of -1..9, with 6 being the
/// default compression level. Levels above 6 will have higher compression rates
/// at the cost of more CPU and memory usage. Levels below 6 will use less CPU
/// and memory at the cost of lower compression rates.
/// @description Checks that this property returns constructor's level argument
/// @author sgrekhov@unipro.ru
/// @issue 31039

import "dart:io";
import "../../../Utils/expect.dart";

main() {
  GZipCodec codec1 = new GZipCodec(level: -1);
  Expect.equals(-1, codec1.level);

  GZipCodec codec2 = new GZipCodec(level: 9);
  Expect.equals(9, codec2.level);

  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);
}
