// 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.

// @dart = 2.9

/// @assertion void addByte(int byte)
/// Append byte to the current contents of the builder.
///
/// The byte will be bit-representation truncated to the range 0 .. 255.
/// @description Checks that [byte] value is truncated to the range 0 .. 255.
/// @author a.semenov@unipro.ru

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

main() {
  BytesBuilder builder = new BytesBuilder();

  builder.addByte(-1);
  builder.addByte(-2);
  Expect.listEquals([255, 254], builder.toBytes());

  builder.addByte(256);
  builder.addByte(257);
  Expect.listEquals([255, 254, 0, 1], builder.takeBytes());

  builder.addByte(1000000);
  builder.addByte(-1000000);
  builder.addByte(123456789);
  builder.addByte(-123456789);
  Expect.listEquals(
    [1000000, -1000000, 123456789, -123456789].map((int e) => e & 255).toList(),
    builder.toBytes()
  );

}
