// Copyright (c) 2016, 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 bitLength
 * Returns the minimum number of bits required to store this integer.
 * The number of bits excludes the sign bit, which gives the natural length for
 * non-negative (unsigned) values. Negative values are complemented to return
 * the bit position of the first bit that differs from the sign bit.
 * To find the number of bits needed to store the value as a signed value,
 * add one, i.e. use x.bitLength + 1.
 * @description Checks that this method returns the minimum number of bits
 * required to store this integer
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

main() {
  Expect.equals(0, 0.bitLength); // 00000000
  Expect.equals(1, 1.bitLength); // 00000001
  Expect.equals(2, 2.bitLength); // 00000010
  Expect.equals(2, 3.bitLength); // 00000011
  Expect.equals(3, 7.bitLength); // 00000111
  Expect.equals(4, 8.bitLength); // 00001000
  Expect.equals(5, 16.bitLength); // 00010000
  Expect.equals(8, 128.bitLength); // 10000000
  Expect.equals(8, 255.bitLength); // 11111111
  Expect.equals(9, 256.bitLength);
  Expect.equals(17, 65536.bitLength);
  Expect.equals(25, 16777216.bitLength);

  Expect.equals(0, (-1).bitLength); // 11111111
  Expect.equals(1, (-2).bitLength); // 11111110
  Expect.equals(2, (-3).bitLength); // 11111101
  Expect.equals(2, (-4).bitLength); // 11111100
}
