// 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 Int32x4 operator +(Int32x4 other)
/// Addition operator.
/// @description Checks that every lane of the new [Int32x4] equals the result
/// of applying addition operator to corresponding lanes of operands.
/// @note undocumented
/// @author ngl@unipro.ru

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

check(x1, y1, z1, w1, x2, y2, z2, w2) {
  var obj1 = new Int32x4(x1, y1, z1, w1);
  var obj2 = new Int32x4(x2, y2, z2, w2);
  var res = obj1 + obj2;

  Expect.equals((x1 + x2).toUnsigned(32), res.x.toUnsigned(32));
  Expect.equals((y1 + y2).toUnsigned(32), res.y.toUnsigned(32));
  Expect.equals((z1 + z2).toUnsigned(32), res.z.toUnsigned(32));
  Expect.equals((w1 + w2).toUnsigned(32), res.w.toUnsigned(32));
}

main() {
  check(0, 0, 0, 0, 0, 0, 0, 0);
  check(1, 1, 1, 1, 1, 1, 1, 1);
  check(0, 1, 0, 1, 1, 0, 1, 0);

  check(0xff7812a1, 0x1903c8e4, 0x35c7de18, 0x3619c6ff,
      0x829c02ac, 0xf367c6e1, 0x367c8d9f, 0xc637ba81);
  check(0x80000000, 0x00ff00ff, 0xC0000000, 0xffffffff,
      0x00000001, 0x00ff0000, 0x40000000, 0x01010101);
}
