// Copyright (c) 2019, 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.

import "package:expect/expect.dart";

void main() {
  const BitNot(42, 4294967253).check();
  const BitNot(4294967253, 42).check();
  const BitNot(-42, 41).check();
  const BitNot(-1, 0).check();
  const BitNot(0, 0xFFFFFFFF).check();
  const BitNot(4294967295, 0).check();
  const BitNot(0x12121212121212, 0xEDEDEDED).check();
  const BitNot(0x7fffffff00000000, 0xffffffff).check();
  const BitNot(0x8000000000000000, 0xffffffff).check();

  const Negate(0, -0).check();
  const Negate(-0, 0).check();
  const Negate(0.0, -0.0).check();
  const Negate(-0.0, 0.0).check();
  const Negate(-0.0, 0).check();
  const Negate(-0, 0.0).check();
  const Negate(0, -0.0).check();
  const Negate(0.0, -0).check();
  const Negate(1, -1).check();
  const Negate(-1, 1).check();
  const Negate(1.0, -1.0).check();
  const Negate(-1.0, 1.0).check();
  const Negate(3.14, -3.14).check();
  const Negate(-3.14, 3.14).check();
  const Negate(4294967295, -4294967295).check();
  const Negate(-4294967295, 4294967295).check();
  const Negate(4294967295.5, -4294967295.5).check();
  const Negate(-4294967295.5, 4294967295.5).check();
  const Negate(4294967296, -4294967296).check();
  const Negate(-4294967296, 4294967296).check();
  const Negate(4294967296.5, -4294967296.5).check();
  const Negate(-4294967296.5, 4294967296.5).check();
  const Negate(9007199254740991, -9007199254740991).check();
  const Negate(-9007199254740991, 9007199254740991).check();
  const Negate(9007199254740991.5, -9007199254740991.5).check();
  const Negate(-9007199254740991.5, 9007199254740991.5).check();
  const Negate(9007199254740992, -9007199254740992).check();
  const Negate(-9007199254740992, 9007199254740992).check();
  const Negate(9007199254740992.5, -9007199254740992.5).check();
  const Negate(-9007199254740992.5, 9007199254740992.5).check();
  const Negate(double.infinity, double.negativeInfinity).check();
  const Negate(double.negativeInfinity, double.infinity).check();
  const Negate(double.maxFinite, -double.maxFinite).check();
  const Negate(-double.maxFinite, double.maxFinite).check();
  const Negate(double.minPositive, -double.minPositive).check();
  const Negate(-double.minPositive, double.minPositive).check();
  const Negate(double.nan, double.nan).check();
  const Negate(0x7fffffff00000000, -0x7fffffff00000000).check();
  const Negate(-0x7fffffff00000000, 0x7fffffff00000000).check();
  const Negate(0x8000000000000000, -0x8000000000000000).check();
  const Negate(-0x8000000000000000, 0x8000000000000000).check();

  const Not(true, false).check();
  const Not(false, true).check();

  const BitAnd(314159, 271828, 262404).check();
  const BitAnd(271828, 314159, 262404).check();
  const BitAnd(0, 0, 0).check();
  const BitAnd(-1, 0, 0).check();
  const BitAnd(-1, 314159, 314159).check();
  const BitAnd(-1, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitAnd(0xff, -4, 0xfc).check();
  const BitAnd(0, 0xFFFFFFFF, 0).check();
  const BitAnd(0xFFFFFFFF, 0, 0).check();
  const BitAnd(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitAnd(0x123456789ABC, 0xEEEEEEEEEEEE, 0x46688AAC).check();
  const BitAnd(0x7fffffff00008000, 0x8000000000008000, 0x8000).check();
  const BitAnd(0x8000000000008000, 0x7fffffff00008000, 0x8000).check();
  const BitAnd(true, true, true).check();
  const BitAnd(true, false, false).check();
  const BitAnd(false, true, false).check();
  const BitAnd(false, false, false).check();

  const BitOr(314159, 271828, 323583).check();
  const BitOr(271828, 314159, 323583).check();
  const BitOr(0, 0, 0).check();
  const BitOr(-8, 0, 0xFFFFFFF8).check();
  const BitOr(-8, 271828, 0xFFFFFFFC).check();
  const BitOr(-8, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitOr(0x1, -4, 0xFFFFFFFD).check();
  const BitOr(0, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitOr(0xFFFFFFFF, 0, 0xFFFFFFFF).check();
  const BitOr(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitOr(0x123456789ABC, 0x111111111111, 0x57799BBD).check();
  const BitOr(0x7000000080000000, 0x8000000000008000, 0x80008000).check();
  const BitOr(0x8000000000008000, 0x7000000080000000, 0x80008000).check();
  const BitOr(true, true, true).check();
  const BitOr(true, false, true).check();
  const BitOr(false, true, true).check();
  const BitOr(false, false, false).check();

  const BitXor(314159, 271828, 61179).check();
  const BitXor(271828, 314159, 61179).check();
  const BitXor(0, 0, 0).check();
  const BitXor(-1, 0, 0xFFFFFFFF).check();
  const BitXor(-256, 1, 0xFFFFFF01).check();
  const BitXor(-256, -255, 1).check();
  const BitXor(0, 0xFFFFFFFF, 0xFFFFFFFF).check();
  const BitXor(0xFFFFFFFF, 0, 0xFFFFFFFF).check();
  const BitXor(0xFFFFFFFF, 0xFFFFFFFF, 0).check();
  const BitXor(0x123456789ABC, 0x111111111111, 0x47698BAD).check();
  const BitXor(0x7000000012340000, 0x8000000011110000, 0x03250000).check();
  const BitXor(0x8000000011110000, 0x7000000012340000, 0x03250000).check();
  const BitXor(true, true, false).check();
  const BitXor(true, false, true).check();
  const BitXor(false, true, true).check();
  const BitXor(false, false, false).check();

  const ShiftLeft(42, 0, 42).check();
  const ShiftLeft(42, 5, 1344).check();
  const ShiftLeft(1, 31, 0x80000000).check();
  const ShiftLeft(1, 32, 0).check();
  const ShiftLeft(1, 100, 0).check();
  const ShiftLeft(0, 0, 0).check();
  const ShiftLeft(0, 5, 0).check();
  const ShiftLeft(0, 31, 0).check();
  const ShiftLeft(0, 32, 0).check();
  const ShiftLeft(0, 100, 0).check();
  const ShiftLeft(-1, 0, 0xFFFFFFFF).check();
  const ShiftLeft(-1, 5, 0xFFFFFFE0).check();
  const ShiftLeft(-1, 31, 0x80000000).check();
  const ShiftLeft(-1, 32, 0).check();
  const ShiftLeft(-1, 100, 0).check();
  const ShiftLeft(0x7000000000008000, 0, 0x8000).check();
  const ShiftLeft(0x7000000000008000, 1, 0x10000).check();
  const ShiftLeft(0x7000000000008000, 16, 0x80000000).check();
  const ShiftLeft(0x7000000000008000, 17, 0x0).check();
  const ShiftLeft(0x8000000000008000, 0, 0x8000).check();
  const ShiftLeft(0x8000000000008000, 1, 0x10000).check();
  const ShiftLeft(0x8000000000008000, 16, 0x80000000).check();
  const ShiftLeft(0x8000000000008000, 17, 0x0).check();

  const ShiftRight(8675309, 0, 8675309).check();
  const ShiftRight(8675309, 5, 271103).check();
  const ShiftRight(0xFEDCBA98, 0, 0xFEDCBA98).check();
  const ShiftRight(0xFEDCBA98, 5, 0x07F6E5D4).check();
  const ShiftRight(0xFEDCBA98, 31, 1).check();
  const ShiftRight(0xFEDCBA98, 32, 0).check();
  const ShiftRight(0xFEDCBA98, 100, 0).check();
  const ShiftRight(0xFFFFFEDCBA98, 0, 0xFEDCBA98).check();
  const ShiftRight(0xFFFFFEDCBA98, 5, 0x07F6E5D4).check();
  const ShiftRight(0xFFFFFEDCBA98, 31, 1).check();
  const ShiftRight(0xFFFFFEDCBA98, 32, 0).check();
  const ShiftRight(0xFFFFFEDCBA98, 100, 0).check();
  const ShiftRight(-1, 0, 0xFFFFFFFF).check();
  const ShiftRight(-1, 5, 0xFFFFFFFF).check();
  const ShiftRight(-1, 31, 0xFFFFFFFF).check();
  const ShiftRight(-1, 32, 0xFFFFFFFF).check();
  const ShiftRight(-1, 100, 0xFFFFFFFF).check();
  const ShiftRight(-1073741824, 0, 0xC0000000).check();
  const ShiftRight(-1073741824, 5, 0xFE000000).check();
  const ShiftRight(-1073741824, 31, 0xFFFFFFFF).check();
  const ShiftRight(-1073741824, 32, 0xFFFFFFFF).check();
  const ShiftRight(-1073741824, 100, 0xFFFFFFFF).check();
  const ShiftRight(0x7000000000008000, 0, 0x8000).check();
  const ShiftRight(0x7000000000008000, 1, 0x4000).check();
  const ShiftRight(0x7000000000008000, 15, 0x1).check();
  const ShiftRight(0x7000000000008000, 16, 0).check();
  const ShiftRight(0x8000000000008000, 0, 0x8000).check();
  const ShiftRight(0x8000000000008000, 1, 0x4000).check();
  const ShiftRight(0x8000000000008000, 15, 0x1).check();
  const ShiftRight(0x8000000000008000, 16, 0).check();

  const BooleanAnd(true, true, true).check();
  const BooleanAnd(true, false, false).check();
  const BooleanAnd(false, true, false).check();
  const BooleanAnd(false, false, false).check();
  const BooleanAnd(false, null, false).check();

  const BooleanOr(true, true, true).check();
  const BooleanOr(true, false, true).check();
  const BooleanOr(false, true, true).check();
  const BooleanOr(false, false, false).check();
  const BooleanOr(true, null, true).check();

  const Subtract(314159, 271828, 42331).check();
  const Subtract(271828, 314159, -42331).check();
  const Subtract(0, 0, 0).check();
  const Subtract(0, 42, -42).check();
  const Subtract(0, -42, 42).check();
  const Subtract(42, 0, 42).check();
  const Subtract(42, 42, 0).check();
  const Subtract(42, -42, 84).check();
  const Subtract(-42, 0, -42).check();
  const Subtract(-42, 42, -84).check();
  const Subtract(-42, -42, 0).check();
  const Subtract(4294967295, -1, 4294967296).check();
  const Subtract(4294967296, -1, 4294967297).check();
  const Subtract(9007199254740991, -1, 9007199254740992).check();
  const Subtract(9007199254740992, -1, 9007199254740992).check();
  const Subtract(9007199254740992, -100, 9007199254741092).check();
  const Subtract(-4294967295, 1, -4294967296).check();
  const Subtract(-4294967296, 1, -4294967297).check();
  const Subtract(-9007199254740991, 1, -9007199254740992).check();
  const Subtract(-9007199254740992, 1, -9007199254740992).check();
  const Subtract(-9007199254740992, 100, -9007199254741092).check();
  const Subtract(
          0x7fffffff00000000, -0x7fffffff00000000, 2 * 0x7fffffff00000000)
      .check();
  const Subtract(4.2, 1.5, 2.7).check();
  const Subtract(1.5, 4.2, -2.7).check();
  const Subtract(1.5, 0, 1.5).check();
  const Subtract(0, 1.5, -1.5).check();
  const Subtract(1.5, 1.5, 0.0).check();
  const Subtract(-1.5, -1.5, 0.0).check();
  const Subtract(0.0, 0.0, 0.0).check();
  const Subtract(0.0, -0.0, 0.0).check();
  const Subtract(-0.0, 0.0, -0.0).check();
  const Subtract(-0.0, -0.0, 0.0).check();
  const Subtract(double.maxFinite, -double.maxFinite, double.infinity).check();
  const Subtract(-double.maxFinite, double.maxFinite, double.negativeInfinity)
      .check();
  const Subtract(1.5, double.nan, double.nan).check();
  const Subtract(double.nan, 1.5, double.nan).check();
  const Subtract(double.nan, double.nan, double.nan).check();
  const Subtract(double.nan, double.infinity, double.nan).check();
  const Subtract(double.nan, double.negativeInfinity, double.nan).check();
  const Subtract(double.infinity, double.nan, double.nan).check();
  const Subtract(double.negativeInfinity, double.nan, double.nan).check();
  const Subtract(double.infinity, double.maxFinite, double.infinity).check();
  const Subtract(double.infinity, -double.maxFinite, double.infinity).check();
  const Subtract(
          double.negativeInfinity, double.maxFinite, double.negativeInfinity)
      .check();
  const Subtract(
          double.negativeInfinity, -double.maxFinite, double.negativeInfinity)
      .check();
  const Subtract(1.5, double.infinity, double.negativeInfinity).check();
  const Subtract(1.5, double.negativeInfinity, double.infinity).check();
  const Subtract(double.infinity, double.infinity, double.nan).check();
  const Subtract(double.infinity, double.negativeInfinity, double.infinity)
      .check();
  const Subtract(
          double.negativeInfinity, double.infinity, double.negativeInfinity)
      .check();
  const Subtract(double.negativeInfinity, double.negativeInfinity, double.nan)
      .check();
  const Subtract(double.minPositive, double.minPositive, 0.0).check();
  const Subtract(-double.minPositive, -double.minPositive, 0.0).check();

  const Multiply(6, 7, 42).check();
  const Multiply(-6, 7, -42).check();
  const Multiply(6, -7, -42).check();
  const Multiply(-6, -7, 42).check();
  const Multiply(0, 0, 0).check();
  const Multiply(0, 7, 0).check();
  const Multiply(6, 0, 0).check();
  const Multiply(65536, 65536, 4294967296).check();
  const Multiply(4294967296, -1, -4294967296).check();
  const Multiply(-1, 4294967296, -4294967296).check();
  const Multiply(134217728, 134217728, 18014398509481984).check();
  const Multiply(18014398509481984, -1, -18014398509481984).check();
  const Multiply(-1, 18014398509481984, -18014398509481984).check();
  const Multiply(9000000000000000, 9000000000000000, 8.1e31).check();
  const Multiply(0x7fff000000000000, 0x8000000000000000, 8.506799558180535e37)
      .check();
  const Multiply(0x8000000000000000, 1.2, 11068046444225730000.0).check();
  const Multiply(3.14, 2.72, 8.5408).check();
  const Multiply(-3.14, 2.72, -8.5408).check();
  const Multiply(3.14, -2.72, -8.5408).check();
  const Multiply(-3.14, -2.72, 8.5408).check();
  const Multiply(3.14, 0, 0.0).check();
  const Multiply(0, 2.72, 0.0).check();
  const Multiply(0.0, 0.0, 0.0).check();
  const Multiply(0.0, -0.0, -0.0).check();
  const Multiply(-0.0, 0.0, -0.0).check();
  const Multiply(-0.0, -0.0, 0.0).check();
  const Multiply(double.maxFinite, double.maxFinite, double.infinity).check();
  const Multiply(double.maxFinite, -double.maxFinite, double.negativeInfinity)
      .check();
  const Multiply(-double.maxFinite, double.maxFinite, double.negativeInfinity)
      .check();
  const Multiply(-double.maxFinite, -double.maxFinite, double.infinity).check();
  const Multiply(0, double.nan, double.nan).check();
  const Multiply(double.nan, 0, double.nan).check();
  const Multiply(double.nan, double.nan, double.nan).check();
  const Multiply(0, double.infinity, double.nan).check();
  const Multiply(double.infinity, 0, double.nan).check();
  const Multiply(0, double.negativeInfinity, double.nan).check();
  const Multiply(double.negativeInfinity, 0, double.nan).check();
  const Multiply(-0.0, double.infinity, double.nan).check();
  const Multiply(double.infinity, -0.0, double.nan).check();
  const Multiply(-0.0, double.negativeInfinity, double.nan).check();
  const Multiply(double.negativeInfinity, -0.0, double.nan).check();
  const Multiply(double.infinity, double.infinity, double.infinity).check();
  const Multiply(
          double.infinity, double.negativeInfinity, double.negativeInfinity)
      .check();
  const Multiply(
          double.negativeInfinity, double.infinity, double.negativeInfinity)
      .check();
  const Multiply(
          double.negativeInfinity, double.negativeInfinity, double.infinity)
      .check();
  const Multiply(double.minPositive, 0.5, 0.0).check();
  const Multiply(double.minPositive, -0.5, -0.0).check();
  const Multiply(-double.minPositive, 0.5, -0.0).check();
  const Multiply(-double.minPositive, -0.5, 0.0).check();
  const Multiply(1e-300, -1e-300, -0.0).check();
  const Multiply(double.minPositive, double.infinity, double.infinity).check();
  const Multiply(
          double.minPositive, double.negativeInfinity, double.negativeInfinity)
      .check();
  const Multiply(double.minPositive, double.maxFinite, 8.881784197001251e-16)
      .check();

  const Modulo(27, 314159, 27).check();
  const Modulo(27, 1, 0).check();
  const Modulo(27, -1, 0).check();
  const Modulo(-27, 1, 0).check();
  const Modulo(-27, -1, 0).check();
  const Modulo(314159, 27, 14).check();
  const Modulo(314159, -27, 14).check();
  const Modulo(-314159, 27, 13).check();
  const Modulo(-314159, -27, 13).check();
  const Modulo(4294967295, 4294967296, 4294967295).check();
  const Modulo(4294967295, -4294967296, 4294967295).check();
  const Modulo(-4294967295, 4294967296, 1).check();
  const Modulo(-4294967295, -4294967296, 1).check();
  const Modulo(9007199254740991, 9007199254740992, 9007199254740991).check();
  const Modulo(9007199254740991, -9007199254740992, 9007199254740991).check();
  const Modulo(-9007199254740991, 9007199254740992, 1).check();
  const Modulo(-9007199254740991, -9007199254740992, 1).check();
  const Modulo(2.71828, 3.14159, 2.71828).check();
  const Modulo(2.71828, 1, 0.71828).check();
  const Modulo(2.71828, -1, 0.71828).check();
  const Modulo(-2.71828, 1, 0.28171999999999997).check();
  const Modulo(-2.71828, -1, 0.28171999999999997).check();
  const Modulo(27.1828, 3.14159, 2.0500800000000012).check();
  const Modulo(27.1828, -3.14159, 2.0500800000000012).check();
  const Modulo(-27.1828, 3.14159, 1.0915099999999986).check();
  const Modulo(-27.1828, -3.14159, 1.0915099999999986).check();
  const Modulo(42, double.nan, double.nan).check();
  const Modulo(double.nan, 42, double.nan).check();
  const Modulo(0, double.nan, double.nan).check();
  const Modulo(double.nan, double.nan, double.nan).check();
  const Modulo(double.infinity, double.nan, double.nan).check();
  const Modulo(double.nan, double.infinity, double.nan).check();
  const Modulo(0.0, double.infinity, 0).check();
  const Modulo(-0.0, double.infinity, 0).check();
  const Modulo(0.0, double.negativeInfinity, 0).check();
  const Modulo(-0.0, double.negativeInfinity, 0).check();
  const Modulo(42, double.infinity, 42).check();
  const Modulo(-42, double.infinity, double.infinity).check();
  const Modulo(42, double.negativeInfinity, 42).check();
  const Modulo(-42, double.negativeInfinity, double.infinity).check();
  const Modulo(double.infinity, 42, double.nan).check();
  const Modulo(double.infinity, -42, double.nan).check();
  const Modulo(double.negativeInfinity, 42, double.nan).check();
  const Modulo(double.negativeInfinity, -42, double.nan).check();
  const Modulo(double.infinity, double.infinity, double.nan).check();
  const Modulo(double.negativeInfinity, double.infinity, double.nan).check();
  const Modulo(double.infinity, double.negativeInfinity, double.nan).check();
  const Modulo(double.negativeInfinity, double.negativeInfinity, double.nan)
      .check();

  const TruncatingDivide(27, 314159, 0).check();
  const TruncatingDivide(27, 1, 27).check();
  const TruncatingDivide(27, -1, -27).check();
  const TruncatingDivide(-27, 1, -27).check();
  const TruncatingDivide(-27, -1, 27).check();
  const TruncatingDivide(314159, 27, 11635).check();
  const TruncatingDivide(314159, -27, -11635).check();
  const TruncatingDivide(-314159, 27, -11635).check();
  const TruncatingDivide(-314159, -27, 11635).check();
  const TruncatingDivide(4294967295, 4294967296, 0).check();
  const TruncatingDivide(4294967295, -4294967296, 0).check();
  const TruncatingDivide(-4294967295, 4294967296, 0).check();
  const TruncatingDivide(-4294967295, -4294967296, 0).check();
  const TruncatingDivide(9007199254740991, 9007199254740992, 0).check();
  const TruncatingDivide(9007199254740991, -9007199254740992, 0).check();
  const TruncatingDivide(-9007199254740991, 9007199254740992, 0).check();
  const TruncatingDivide(-9007199254740991, -9007199254740992, 0).check();
  const TruncatingDivide(4294967295, 0.5, 8589934590).check();
  const TruncatingDivide(4294967295, -0.5, -8589934590).check();
  const TruncatingDivide(-4294967295, 0.5, -8589934590).check();
  const TruncatingDivide(-4294967295, -0.5, 8589934590).check();
  const TruncatingDivide(9007199254740991, 0.5, 18014398509481982).check();
  const TruncatingDivide(9007199254740991, -0.5, -18014398509481982).check();
  const TruncatingDivide(-9007199254740991, 0.5, -18014398509481982).check();
  const TruncatingDivide(-9007199254740991, -0.5, 18014398509481982).check();
  const TruncatingDivide(0x8000000000000000, -1, -0x8000000000000000).check();
  const TruncatingDivide(0x6000000000000000, 0.5, 0xC000000000000000).check();
  const TruncatingDivide(2.71828, 3.14159, 0).check();
  const TruncatingDivide(2.71828, 1, 2).check();
  const TruncatingDivide(2.71828, -1, -2).check();
  const TruncatingDivide(-2.71828, 1, -2).check();
  const TruncatingDivide(-2.71828, -1, 2).check();
  const TruncatingDivide(27.1828, 3.14159, 8).check();
  const TruncatingDivide(27.1828, -3.14159, -8).check();
  const TruncatingDivide(-27.1828, 3.14159, -8).check();
  const TruncatingDivide(-27.1828, -3.14159, 8).check();
  const TruncatingDivide(0.0, double.infinity, 0).check();
  const TruncatingDivide(-0.0, double.infinity, 0).check();
  const TruncatingDivide(0.0, double.negativeInfinity, 0).check();
  const TruncatingDivide(-0.0, double.negativeInfinity, 0).check();
  const TruncatingDivide(42, double.infinity, 0).check();
  const TruncatingDivide(-42, double.infinity, 0).check();
  const TruncatingDivide(42, double.negativeInfinity, 0).check();
  const TruncatingDivide(-42, double.negativeInfinity, 0).check();

  const Divide(27, 3, 9).check();
  const Divide(27, 1, 27).check();
  const Divide(27, -1, -27).check();
  const Divide(-27, 1, -27).check();
  const Divide(-27, -1, 27).check();
  const Divide(0, 1, 0).check();
  const Divide(0, -1, -0.0).check();
  const Divide(-0.0, 1, -0.0).check();
  const Divide(-0.0, -1, 0).check();
  const Divide(314159, 27, 11635.518518518518).check();
  const Divide(314159, -27, -11635.518518518518).check();
  const Divide(-314159, 27, -11635.518518518518).check();
  const Divide(-314159, -27, 11635.518518518518).check();
  const Divide(4294967295, 4294967296, 0.9999999997671694).check();
  const Divide(4294967295, -4294967296, -0.9999999997671694).check();
  const Divide(-4294967295, 4294967296, -0.9999999997671694).check();
  const Divide(-4294967295, -4294967296, 0.9999999997671694).check();
  const Divide(9007199254740991, 9007199254740992, 0.9999999999999999).check();
  const Divide(9007199254740991, -9007199254740992, -0.9999999999999999)
      .check();
  const Divide(-9007199254740991, 9007199254740992, -0.9999999999999999)
      .check();
  const Divide(-9007199254740991, -9007199254740992, 0.9999999999999999)
      .check();
  const Divide(4294967296, 4294967295, 1.0000000002328306).check();
  const Divide(4294967296, -4294967295, -1.0000000002328306).check();
  const Divide(-4294967296, 4294967295, -1.0000000002328306).check();
  const Divide(-4294967296, -4294967295, 1.0000000002328306).check();
  const Divide(9007199254740992, 9007199254740991, 1.0000000000000002).check();
  const Divide(9007199254740992, -9007199254740991, -1.0000000000000002)
      .check();
  const Divide(-9007199254740992, 9007199254740991, -1.0000000000000002)
      .check();
  const Divide(-9007199254740992, -9007199254740991, 1.0000000000000002)
      .check();
  const Divide(4294967295, 0.5, 8589934590).check();
  const Divide(4294967295, -0.5, -8589934590).check();
  const Divide(-4294967295, 0.5, -8589934590).check();
  const Divide(-4294967295, -0.5, 8589934590).check();
  const Divide(9007199254740991, 0.5, 18014398509481982).check();
  const Divide(9007199254740991, -0.5, -18014398509481982).check();
  const Divide(-9007199254740991, 0.5, -18014398509481982).check();
  const Divide(-9007199254740991, -0.5, 18014398509481982).check();
  const Divide(2.71828, 3.14159, 0.8652561282662601).check();
  const Divide(2.71828, 1, 2.71828).check();
  const Divide(2.71828, -1, -2.71828).check();
  const Divide(-2.71828, 1, -2.71828).check();
  const Divide(-2.71828, -1, 2.71828).check();
  const Divide(27.1828, 3.14159, 8.652561282662601).check();
  const Divide(27.1828, -3.14159, -8.652561282662601).check();
  const Divide(-27.1828, 3.14159, -8.652561282662601).check();
  const Divide(-27.1828, -3.14159, 8.652561282662601).check();
  const Divide(1, 0, double.infinity).check();
  const Divide(1, -0.0, double.negativeInfinity).check();
  const Divide(-1, 0, double.negativeInfinity).check();
  const Divide(-1, -0.0, double.infinity).check();
  const Divide(0, 0, double.nan).check();
  const Divide(0, -0.0, double.nan).check();
  const Divide(-0.0, 0, double.nan).check();
  const Divide(-0.0, -0.0, double.nan).check();
  const Divide(double.infinity, 0, double.infinity).check();
  const Divide(double.infinity, -0.0, double.negativeInfinity).check();
  const Divide(double.negativeInfinity, 0, double.negativeInfinity).check();
  const Divide(double.negativeInfinity, -0.0, double.infinity).check();
  const Divide(double.nan, 0, double.nan).check();
  const Divide(double.nan, -0.0, double.nan).check();
  const Divide(double.nan, 1, double.nan).check();
  const Divide(1, double.nan, double.nan).check();
  const Divide(0, double.nan, double.nan).check();
  const Divide(double.nan, double.nan, double.nan).check();
  const Divide(double.nan, double.infinity, double.nan).check();
  const Divide(double.infinity, double.nan, double.nan).check();
  const Divide(double.negativeInfinity, double.nan, double.nan).check();
  const Divide(double.infinity, 1, double.infinity).check();
  const Divide(double.infinity, -1, double.negativeInfinity).check();
  const Divide(double.negativeInfinity, 1, double.negativeInfinity).check();
  const Divide(double.negativeInfinity, -1, double.infinity).check();
  const Divide(0, double.infinity, 0).check();
  const Divide(0, double.negativeInfinity, -0.0).check();
  const Divide(-0.0, double.infinity, -0.0).check();
  const Divide(-0.0, double.negativeInfinity, 0).check();
  const Divide(1, double.infinity, 0).check();
  const Divide(1, double.negativeInfinity, -0.0).check();
  const Divide(-1, double.infinity, -0.0).check();
  const Divide(-1, double.negativeInfinity, 0).check();
  const Divide(double.infinity, double.infinity, double.nan).check();
  const Divide(double.minPositive, double.maxFinite, 0).check();
  const Divide(double.minPositive, -double.maxFinite, -0.0).check();
  const Divide(-double.minPositive, double.maxFinite, -0.0).check();
  const Divide(-double.minPositive, -double.maxFinite, 0).check();
  const Divide(double.maxFinite, double.minPositive, double.infinity).check();
  const Divide(double.maxFinite, -double.minPositive, double.negativeInfinity)
      .check();
  const Divide(-double.maxFinite, double.minPositive, double.negativeInfinity)
      .check();
  const Divide(-double.maxFinite, -double.minPositive, double.infinity).check();

  const Add("", "", "").check();
  const Add("foo", "", "foo").check();
  const Add("", "bar", "bar").check();
  const Add("foo", "bar", "foobar").check();
  const Add(314159, 271828, 585987).check();
  const Add(314159, -271828, 42331).check();
  const Add(-314159, 271828, -42331).check();
  const Add(-314159, -271828, -585987).check();
  const Add(0, 0, 0).check();
  const Add(0, 42, 42).check();
  const Add(0, -42, -42).check();
  const Add(42, 0, 42).check();
  const Add(42, 42, 84).check();
  const Add(42, -42, 0).check();
  const Add(-42, 0, -42).check();
  const Add(-42, 42, 0).check();
  const Add(-42, -42, -84).check();
  const Add(4294967295, 1, 4294967296).check();
  const Add(4294967296, 1, 4294967297).check();
  const Add(9007199254740991, 1, 9007199254740992).check();
  const Add(9007199254740992, 1, 9007199254740992).check();
  const Add(9007199254740992, 100, 9007199254741092).check();
  const Add(-4294967295, -1, -4294967296).check();
  const Add(-4294967296, -1, -4294967297).check();
  const Add(-9007199254740991, -1, -9007199254740992).check();
  const Add(-9007199254740992, -1, -9007199254740992).check();
  const Add(-9007199254740992, -100, -9007199254741092).check();
  const Add(4.2, 1.5, 5.7).check();
  const Add(4.2, -1.5, 2.7).check();
  const Add(-4.2, 1.5, -2.7).check();
  const Add(-4.2, -1.5, -5.7).check();
  const Add(1.5, 0, 1.5).check();
  const Add(0, 1.5, 1.5).check();
  const Add(1.5, -1.5, 0.0).check();
  const Add(-1.5, 1.5, 0.0).check();
  const Add(0.0, 0.0, 0.0).check();
  const Add(0.0, -0.0, 0.0).check();
  const Add(-0.0, 0.0, 0.0).check();
  const Add(-0.0, -0.0, -0.0).check();
  const Add(double.maxFinite, double.maxFinite, double.infinity).check();
  const Add(-double.maxFinite, -double.maxFinite, double.negativeInfinity)
      .check();
  const Add(1.5, double.nan, double.nan).check();
  const Add(double.nan, 1.5, double.nan).check();
  const Add(double.nan, double.nan, double.nan).check();
  const Add(double.nan, double.infinity, double.nan).check();
  const Add(double.nan, double.negativeInfinity, double.nan).check();
  const Add(double.infinity, double.nan, double.nan).check();
  const Add(double.negativeInfinity, double.nan, double.nan).check();
  const Add(double.infinity, -double.maxFinite, double.infinity).check();
  const Add(double.infinity, double.maxFinite, double.infinity).check();
  const Add(double.negativeInfinity, -double.maxFinite, double.negativeInfinity)
      .check();
  const Add(double.negativeInfinity, double.maxFinite, double.negativeInfinity)
      .check();
  const Add(1.5, double.negativeInfinity, double.negativeInfinity).check();
  const Add(1.5, double.infinity, double.infinity).check();
  const Add(double.infinity, double.infinity, double.infinity).check();
  const Add(double.infinity, double.negativeInfinity, double.nan).check();
  const Add(double.negativeInfinity, double.infinity, double.nan).check();
  const Add(double.negativeInfinity, double.negativeInfinity,
          double.negativeInfinity)
      .check();
  const Add(double.minPositive, -double.minPositive, 0.0).check();
  const Add(-double.minPositive, double.minPositive, 0.0).check();

  const Less(double.nan, double.nan, false).check();
  const Less(double.nan, double.infinity, false).check();
  const Less(double.infinity, double.nan, false).check();
  const Less(double.nan, double.maxFinite, false).check();
  const Less(double.maxFinite, double.nan, false).check();
  const Less(double.nan, -double.maxFinite, false).check();
  const Less(-double.maxFinite, double.nan, false).check();
  const Less(double.nan, double.negativeInfinity, false).check();
  const Less(double.negativeInfinity, double.nan, false).check();
  const Less(double.negativeInfinity, double.negativeInfinity, false).check();
  const Less(double.negativeInfinity, -double.maxFinite, true).check();
  const Less(-double.maxFinite, double.negativeInfinity, false).check();
  const Less(-double.maxFinite, -double.maxFinite, false).check();
  const Less(-double.maxFinite, -9007199254740992, true).check();
  const Less(-9007199254740992, -double.maxFinite, false).check();
  const Less(-9007199254740992, -9007199254740992, false).check();
  const Less(-9007199254740992, -4294967296, true).check();
  const Less(-4294967296, -9007199254740992, false).check();
  const Less(-4294967296, -4294967296, false).check();
  const Less(-4294967296, -42, true).check();
  const Less(-42, -4294967296, false).check();
  const Less(-42, -42, false).check();
  const Less(-42, -42.0, false).check();
  const Less(-42.0, -42, false).check();
  const Less(-42.0, -42.0, false).check();
  const Less(-42, -3.14, true).check();
  const Less(-3.14, -42, false).check();
  const Less(-3.14, -3.14, false).check();
  const Less(-3.14, -double.minPositive, true).check();
  const Less(-double.minPositive, -3.14, false).check();
  const Less(-double.minPositive, -double.minPositive, false).check();
  const Less(-double.minPositive, -0.0, true).check();
  const Less(-0.0, -double.minPositive, false).check();
  const Less(-0.0, -0.0, false).check();
  const Less(0, 0, false).check();
  const Less(0.0, 0.0, false).check();
  const Less(-0.0, 0, false).check();
  const Less(0, -0.0, false).check();
  const Less(-0.0, 0.0, false).check();
  const Less(0.0, -0.0, false).check();
  const Less(0, 0.0, false).check();
  const Less(0.0, 0, false).check();
  const Less(0.0, double.minPositive, true).check();
  const Less(double.minPositive, 0.0, false).check();
  const Less(double.minPositive, double.minPositive, false).check();
  const Less(double.minPositive, 3.14, true).check();
  const Less(3.14, double.minPositive, false).check();
  const Less(3.14, 3.14, false).check();
  const Less(3.14, 42, true).check();
  const Less(42, 3.14, false).check();
  const Less(42.0, 42.0, false).check();
  const Less(42, 42.0, false).check();
  const Less(42.0, 42, false).check();
  const Less(42, 42, false).check();
  const Less(42, 4294967296, true).check();
  const Less(4294967296, 42, false).check();
  const Less(4294967296, 4294967296, false).check();
  const Less(4294967296, 9007199254740992, true).check();
  const Less(9007199254740992, 4294967296, false).check();
  const Less(9007199254740992, 9007199254740992, false).check();
  const Less(9007199254740992, double.maxFinite, true).check();
  const Less(double.maxFinite, 9007199254740992, false).check();
  const Less(double.maxFinite, double.maxFinite, false).check();
  const Less(double.maxFinite, double.infinity, true).check();
  const Less(double.infinity, double.maxFinite, false).check();
  const Less(double.infinity, double.infinity, false).check();
  const Less(0x7fffffff00000000, 0x8000000000000000, true).check();
  const Less(0x8000000000000000, 0x7fffffff00000000, false).check();

  const LessEqual(double.nan, double.nan, false).check();
  const LessEqual(double.nan, double.infinity, false).check();
  const LessEqual(double.infinity, double.nan, false).check();
  const LessEqual(double.nan, double.maxFinite, false).check();
  const LessEqual(double.maxFinite, double.nan, false).check();
  const LessEqual(double.nan, -double.maxFinite, false).check();
  const LessEqual(-double.maxFinite, double.nan, false).check();
  const LessEqual(double.nan, double.negativeInfinity, false).check();
  const LessEqual(double.negativeInfinity, double.nan, false).check();
  const LessEqual(double.negativeInfinity, double.negativeInfinity, true)
      .check();
  const LessEqual(double.negativeInfinity, -double.maxFinite, true).check();
  const LessEqual(-double.maxFinite, double.negativeInfinity, false).check();
  const LessEqual(-double.maxFinite, -double.maxFinite, true).check();
  const LessEqual(-double.maxFinite, -9007199254740992, true).check();
  const LessEqual(-9007199254740992, -double.maxFinite, false).check();
  const LessEqual(-9007199254740992, -9007199254740992, true).check();
  const LessEqual(-9007199254740992, -4294967296, true).check();
  const LessEqual(-4294967296, -9007199254740992, false).check();
  const LessEqual(-4294967296, -4294967296, true).check();
  const LessEqual(-4294967296, -42, true).check();
  const LessEqual(-42, -4294967296, false).check();
  const LessEqual(-42, -42, true).check();
  const LessEqual(-42, -42.0, true).check();
  const LessEqual(-42.0, -42, true).check();
  const LessEqual(-42.0, -42.0, true).check();
  const LessEqual(-42, -3.14, true).check();
  const LessEqual(-3.14, -42, false).check();
  const LessEqual(-3.14, -3.14, true).check();
  const LessEqual(-3.14, -double.minPositive, true).check();
  const LessEqual(-double.minPositive, -3.14, false).check();
  const LessEqual(-double.minPositive, -double.minPositive, true).check();
  const LessEqual(-double.minPositive, -0.0, true).check();
  const LessEqual(-0.0, -double.minPositive, false).check();
  const LessEqual(-0.0, -0.0, true).check();
  const LessEqual(0, 0, true).check();
  const LessEqual(0.0, 0.0, true).check();
  const LessEqual(-0.0, 0, true).check();
  const LessEqual(0, -0.0, true).check();
  const LessEqual(-0.0, 0.0, true).check();
  const LessEqual(0.0, -0.0, true).check();
  const LessEqual(0, 0.0, true).check();
  const LessEqual(0.0, 0, true).check();
  const LessEqual(0.0, double.minPositive, true).check();
  const LessEqual(double.minPositive, 0.0, false).check();
  const LessEqual(double.minPositive, double.minPositive, true).check();
  const LessEqual(double.minPositive, 3.14, true).check();
  const LessEqual(3.14, double.minPositive, false).check();
  const LessEqual(3.14, 3.14, true).check();
  const LessEqual(3.14, 42, true).check();
  const LessEqual(42, 3.14, false).check();
  const LessEqual(42.0, 42.0, true).check();
  const LessEqual(42, 42.0, true).check();
  const LessEqual(42.0, 42, true).check();
  const LessEqual(42, 42, true).check();
  const LessEqual(42, 4294967296, true).check();
  const LessEqual(4294967296, 42, false).check();
  const LessEqual(4294967296, 4294967296, true).check();
  const LessEqual(4294967296, 9007199254740992, true).check();
  const LessEqual(9007199254740992, 4294967296, false).check();
  const LessEqual(9007199254740992, 9007199254740992, true).check();
  const LessEqual(9007199254740992, double.maxFinite, true).check();
  const LessEqual(double.maxFinite, 9007199254740992, false).check();
  const LessEqual(double.maxFinite, double.maxFinite, true).check();
  const LessEqual(double.maxFinite, double.infinity, true).check();
  const LessEqual(double.infinity, double.maxFinite, false).check();
  const LessEqual(double.infinity, double.infinity, true).check();
  const LessEqual(0x7fffffff00000000, 0x8000000000000000, true).check();
  const LessEqual(0x8000000000000000, 0x7fffffff00000000, false).check();

  const Greater(double.nan, double.nan, false).check();
  const Greater(double.nan, double.infinity, false).check();
  const Greater(double.infinity, double.nan, false).check();
  const Greater(double.nan, double.maxFinite, false).check();
  const Greater(double.maxFinite, double.nan, false).check();
  const Greater(double.nan, -double.maxFinite, false).check();
  const Greater(-double.maxFinite, double.nan, false).check();
  const Greater(double.nan, double.negativeInfinity, false).check();
  const Greater(double.negativeInfinity, double.nan, false).check();
  const Greater(double.negativeInfinity, double.negativeInfinity, false)
      .check();
  const Greater(double.negativeInfinity, -double.maxFinite, false).check();
  const Greater(-double.maxFinite, double.negativeInfinity, true).check();
  const Greater(-double.maxFinite, -double.maxFinite, false).check();
  const Greater(-double.maxFinite, -9007199254740992, false).check();
  const Greater(-9007199254740992, -double.maxFinite, true).check();
  const Greater(-9007199254740992, -9007199254740992, false).check();
  const Greater(-9007199254740992, -4294967296, false).check();
  const Greater(-4294967296, -9007199254740992, true).check();
  const Greater(-4294967296, -4294967296, false).check();
  const Greater(-4294967296, -42, false).check();
  const Greater(-42, -4294967296, true).check();
  const Greater(-42, -42, false).check();
  const Greater(-42, -42.0, false).check();
  const Greater(-42.0, -42, false).check();
  const Greater(-42.0, -42.0, false).check();
  const Greater(-42, -3.14, false).check();
  const Greater(-3.14, -42, true).check();
  const Greater(-3.14, -3.14, false).check();
  const Greater(-3.14, -double.minPositive, false).check();
  const Greater(-double.minPositive, -3.14, true).check();
  const Greater(-double.minPositive, -double.minPositive, false).check();
  const Greater(-double.minPositive, -0.0, false).check();
  const Greater(-0.0, -double.minPositive, true).check();
  const Greater(-0.0, -0.0, false).check();
  const Greater(0, 0, false).check();
  const Greater(0.0, 0.0, false).check();
  const Greater(-0.0, 0, false).check();
  const Greater(0, -0.0, false).check();
  const Greater(-0.0, 0.0, false).check();
  const Greater(0.0, -0.0, false).check();
  const Greater(0, 0.0, false).check();
  const Greater(0.0, 0, false).check();
  const Greater(0.0, double.minPositive, false).check();
  const Greater(double.minPositive, 0.0, true).check();
  const Greater(double.minPositive, double.minPositive, false).check();
  const Greater(double.minPositive, 3.14, false).check();
  const Greater(3.14, double.minPositive, true).check();
  const Greater(3.14, 3.14, false).check();
  const Greater(3.14, 42, false).check();
  const Greater(42, 3.14, true).check();
  const Greater(42.0, 42.0, false).check();
  const Greater(42, 42.0, false).check();
  const Greater(42.0, 42, false).check();
  const Greater(42, 42, false).check();
  const Greater(42, 4294967296, false).check();
  const Greater(4294967296, 42, true).check();
  const Greater(4294967296, 4294967296, false).check();
  const Greater(4294967296, 9007199254740992, false).check();
  const Greater(9007199254740992, 4294967296, true).check();
  const Greater(9007199254740992, 9007199254740992, false).check();
  const Greater(9007199254740992, double.maxFinite, false).check();
  const Greater(double.maxFinite, 9007199254740992, true).check();
  const Greater(double.maxFinite, double.maxFinite, false).check();
  const Greater(double.maxFinite, double.infinity, false).check();
  const Greater(double.infinity, double.maxFinite, true).check();
  const Greater(double.infinity, double.infinity, false).check();
  const Greater(0x7fffffff00000000, 0x8000000000000000, false).check();
  const Greater(0x8000000000000000, 0x7fffffff00000000, true).check();

  const GreaterEqual(double.nan, double.nan, false).check();
  const GreaterEqual(double.nan, double.infinity, false).check();
  const GreaterEqual(double.infinity, double.nan, false).check();
  const GreaterEqual(double.nan, double.maxFinite, false).check();
  const GreaterEqual(double.maxFinite, double.nan, false).check();
  const GreaterEqual(double.nan, -double.maxFinite, false).check();
  const GreaterEqual(-double.maxFinite, double.nan, false).check();
  const GreaterEqual(double.nan, double.negativeInfinity, false).check();
  const GreaterEqual(double.negativeInfinity, double.nan, false).check();
  const GreaterEqual(double.negativeInfinity, double.negativeInfinity, true)
      .check();
  const GreaterEqual(double.negativeInfinity, -double.maxFinite, false).check();
  const GreaterEqual(-double.maxFinite, double.negativeInfinity, true).check();
  const GreaterEqual(-double.maxFinite, -double.maxFinite, true).check();
  const GreaterEqual(-double.maxFinite, -9007199254740992, false).check();
  const GreaterEqual(-9007199254740992, -double.maxFinite, true).check();
  const GreaterEqual(-9007199254740992, -9007199254740992, true).check();
  const GreaterEqual(-9007199254740992, -4294967296, false).check();
  const GreaterEqual(-4294967296, -9007199254740992, true).check();
  const GreaterEqual(-4294967296, -4294967296, true).check();
  const GreaterEqual(-4294967296, -42, false).check();
  const GreaterEqual(-42, -4294967296, true).check();
  const GreaterEqual(-42, -42, true).check();
  const GreaterEqual(-42, -42.0, true).check();
  const GreaterEqual(-42.0, -42, true).check();
  const GreaterEqual(-42.0, -42.0, true).check();
  const GreaterEqual(-42, -3.14, false).check();
  const GreaterEqual(-3.14, -42, true).check();
  const GreaterEqual(-3.14, -3.14, true).check();
  const GreaterEqual(-3.14, -double.minPositive, false).check();
  const GreaterEqual(-double.minPositive, -3.14, true).check();
  const GreaterEqual(-double.minPositive, -double.minPositive, true).check();
  const GreaterEqual(-double.minPositive, -0.0, false).check();
  const GreaterEqual(-0.0, -double.minPositive, true).check();
  const GreaterEqual(-0.0, -0.0, true).check();
  const GreaterEqual(0, 0, true).check();
  const GreaterEqual(0.0, 0.0, true).check();
  const GreaterEqual(-0.0, 0, true).check();
  const GreaterEqual(0, -0.0, true).check();
  const GreaterEqual(-0.0, 0.0, true).check();
  const GreaterEqual(0.0, -0.0, true).check();
  const GreaterEqual(0, 0.0, true).check();
  const GreaterEqual(0.0, 0, true).check();
  const GreaterEqual(0.0, double.minPositive, false).check();
  const GreaterEqual(double.minPositive, 0.0, true).check();
  const GreaterEqual(double.minPositive, double.minPositive, true).check();
  const GreaterEqual(double.minPositive, 3.14, false).check();
  const GreaterEqual(3.14, double.minPositive, true).check();
  const GreaterEqual(3.14, 3.14, true).check();
  const GreaterEqual(3.14, 42, false).check();
  const GreaterEqual(42, 3.14, true).check();
  const GreaterEqual(42.0, 42.0, true).check();
  const GreaterEqual(42, 42.0, true).check();
  const GreaterEqual(42.0, 42, true).check();
  const GreaterEqual(42, 42, true).check();
  const GreaterEqual(42, 4294967296, false).check();
  const GreaterEqual(4294967296, 42, true).check();
  const GreaterEqual(4294967296, 4294967296, true).check();
  const GreaterEqual(4294967296, 9007199254740992, false).check();
  const GreaterEqual(9007199254740992, 4294967296, true).check();
  const GreaterEqual(9007199254740992, 9007199254740992, true).check();
  const GreaterEqual(9007199254740992, double.maxFinite, false).check();
  const GreaterEqual(double.maxFinite, 9007199254740992, true).check();
  const GreaterEqual(double.maxFinite, double.maxFinite, true).check();
  const GreaterEqual(double.maxFinite, double.infinity, false).check();
  const GreaterEqual(double.infinity, double.maxFinite, true).check();
  const GreaterEqual(double.infinity, double.infinity, true).check();
  const GreaterEqual(0x7fffffff00000000, 0x8000000000000000, false).check();
  const GreaterEqual(0x8000000000000000, 0x7fffffff00000000, true).check();

  const Equals(null, null, true).check();
  const Equals(null, "", false).check();
  const Equals("", null, false).check();
  const Equals("", "", true).check();
  const Equals(true, true, true).check();
  const Equals(false, false, true).check();
  const Equals(true, false, false).check();
  const Equals(false, true, false).check();
  const Equals(0, false, false).check();
  const Equals(true, 1, false).check();
  const Equals(double.nan, double.nan, false).check();
  const Equals(0, 0, true).check();
  const Equals(0.0, 0.0, true).check();
  const Equals(-0.0, -0.0, true).check();
  const Equals(0, 0.0, true).check();
  const Equals(0.0, 0, true).check();
  const Equals(0, -0.0, true).check();
  const Equals(-0.0, 0, true).check();
  const Equals(0.0, -0.0, true).check();
  const Equals(-0.0, 0.0, true).check();
  const Equals(1, 1, true).check();
  const Equals(1.0, 1.0, true).check();
  const Equals(1, 1.0, true).check();
  const Equals(1.0, 1, true).check();
  const Equals(double.infinity, double.infinity, true).check();
  const Equals(double.infinity, double.negativeInfinity, false).check();
  const Equals(double.negativeInfinity, double.infinity, false).check();
  const Equals(double.negativeInfinity, double.negativeInfinity, true).check();
  const Equals(0x8000000000000000, 0x8000000000000000, true).check();
  const Equals(0x8000000000000000, -9223372036854775808, false).check();

  const Identity(null, null, true).check();
  const Identity(null, "", false).check();
  const Identity("", null, false).check();
  const Identity("", "", true).check();
  const Identity(true, true, true).check();
  const Identity(false, false, true).check();
  const Identity(true, false, false).check();
  const Identity(false, true, false).check();
  const Identity(0, false, false).check();
  const Identity(true, 1, false).check();
  const Identity(double.nan, double.nan, false).check();
  const Identity(0, 0, true).check();
  const Identity(0.0, 0.0, true).check();
  const Identity(-0.0, -0.0, true).check();
  const Identity(0, 0.0, true).check();
  const Identity(0.0, 0, true).check();
  const Identity(0, -0.0, true).check();
  const Identity(-0.0, 0, true).check();
  const Identity(0.0, -0.0, true).check();
  const Identity(-0.0, 0.0, true).check();
  const Identity(1, 1, true).check();
  const Identity(1.0, 1.0, true).check();
  const Identity(1, 1.0, true).check();
  const Identity(1.0, 1, true).check();
  const Identity(double.infinity, double.infinity, true).check();
  const Identity(double.infinity, double.negativeInfinity, false).check();
  const Identity(double.negativeInfinity, double.infinity, false).check();
  const Identity(double.negativeInfinity, double.negativeInfinity, true)
      .check();
  const Identity(0x8000000000000000, 0x8000000000000000, true).check();
  const Identity(0x8000000000000000, -9223372036854775808, false).check();

  const IfNull(null, null, null).check();
  const IfNull(null, 1, 1).check();
  const IfNull("foo", 1, "foo").check();
  const IfNull("foo", null, "foo").check();
}

/// Wraps [Expect.equals] to accommodate JS equality semantics.
///
/// Naively using [Expect.equals] causes JS values to be compared with `===`.
/// This can yield some unintended results:
///
/// * Since `NaN === NaN` is `false`, [Expect.equals] will throw even if both
///   values are `NaN`. Therefore, we check for `NaN` specifically.
/// * Since `0.0 === -0.0` is `true`, [Expect.equals] will fail to throw if one
///   constant evaluation results in `0` or `0.0` and the other results in
///   `-0.0`. Therefore, we additionally check that both values have the same
///   sign in this case.
void jsEquals(expected, actual, [String reason = ""]) {
  if (expected is num && actual is num) {
    if (expected.isNaN && actual.isNaN) return;
  }

  Expect.equals(expected, actual, reason);

  if (expected == 0 && actual == 0) {
    Expect.equals(
        expected.isNegative,
        actual.isNegative,
        (reason == null ? "" : "$reason ") +
            "${expected.toString()} and "
                "${actual.toString()} have different signs.");
  }
}

abstract class TestOp {
  final expected;
  final result;

  const TestOp(this.expected, this.result);

  @pragma('dart2js:noInline')
  checkAll(evalResult) {
    jsEquals(expected, result,
        "Frontend constant evaluation does not yield expected value.");
    jsEquals(expected, evalResult,
        "Backend constant evaluation does not yield expected value.");
    jsEquals(expected, eval(), "eval() does not yield expected value.");
  }

  eval();
}

class BitNot extends TestOp {
  final arg;

  const BitNot(this.arg, expected) : super(expected, ~arg);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => ~arg;
}

class Negate extends TestOp {
  final arg;

  const Negate(this.arg, expected) : super(expected, -arg);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => -arg;
}

class Not extends TestOp {
  final arg;

  const Not(this.arg, expected) : super(expected, !arg);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => !arg;
}

class BitAnd extends TestOp {
  final arg1;
  final arg2;

  const BitAnd(this.arg1, this.arg2, expected) : super(expected, arg1 & arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 & arg2;
}

class BitOr extends TestOp {
  final arg1;
  final arg2;

  const BitOr(this.arg1, this.arg2, expected) : super(expected, arg1 | arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 | arg2;
}

class BitXor extends TestOp {
  final arg1;
  final arg2;

  const BitXor(this.arg1, this.arg2, expected) : super(expected, arg1 ^ arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 ^ arg2;
}

class ShiftLeft extends TestOp {
  final arg1;
  final arg2;

  const ShiftLeft(this.arg1, this.arg2, expected)
      : super(expected, arg1 << arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 << arg2;
}

class ShiftRight extends TestOp {
  final arg1;
  final arg2;

  const ShiftRight(this.arg1, this.arg2, expected)
      : super(expected, arg1 >> arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 >> arg2;
}

class BooleanAnd extends TestOp {
  final arg1;
  final arg2;

  const BooleanAnd(this.arg1, this.arg2, expected)
      : super(expected, arg1 && arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 && arg2;
}

class BooleanOr extends TestOp {
  final arg1;
  final arg2;

  const BooleanOr(this.arg1, this.arg2, expected)
      : super(expected, arg1 || arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 || arg2;
}

class Subtract extends TestOp {
  final arg1;
  final arg2;

  const Subtract(this.arg1, this.arg2, expected) : super(expected, arg1 - arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 - arg2;
}

class Multiply extends TestOp {
  final arg1;
  final arg2;

  const Multiply(this.arg1, this.arg2, expected) : super(expected, arg1 * arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 * arg2;
}

class Modulo extends TestOp {
  final arg1;
  final arg2;

  const Modulo(this.arg1, this.arg2, expected) : super(expected, arg1 % arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 % arg2;
}

class TruncatingDivide extends TestOp {
  final arg1;
  final arg2;

  const TruncatingDivide(this.arg1, this.arg2, expected)
      : super(expected, arg1 ~/ arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 ~/ arg2;
}

class Divide extends TestOp {
  final arg1;
  final arg2;

  const Divide(this.arg1, this.arg2, expected) : super(expected, arg1 / arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @override
  @pragma('dart2js:tryInline')
  eval() => arg1 / arg2;
}

class Add extends TestOp {
  final arg1;
  final arg2;

  const Add(this.arg1, this.arg2, expected) : super(expected, arg1 + arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 + arg2;
}

class Less extends TestOp {
  final arg1;
  final arg2;

  const Less(this.arg1, this.arg2, expected) : super(expected, arg1 < arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 < arg2;
}

class LessEqual extends TestOp {
  final arg1;
  final arg2;

  const LessEqual(this.arg1, this.arg2, expected)
      : super(expected, arg1 <= arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 <= arg2;
}

class Greater extends TestOp {
  final arg1;
  final arg2;

  const Greater(this.arg1, this.arg2, expected) : super(expected, arg1 > arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 > arg2;
}

class GreaterEqual extends TestOp {
  final arg1;
  final arg2;

  const GreaterEqual(this.arg1, this.arg2, expected)
      : super(expected, arg1 >= arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 >= arg2;
}

class Equals extends TestOp {
  final arg1;
  final arg2;

  const Equals(this.arg1, this.arg2, expected) : super(expected, arg1 == arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 == arg2;
}

class Identity extends TestOp {
  final arg1;
  final arg2;

  const Identity(this.arg1, this.arg2, expected)
      : super(expected, identical(arg1, arg2));

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => identical(arg1, arg2);
}

class IfNull extends TestOp {
  final arg1;
  final arg2;

  const IfNull(this.arg1, this.arg2, expected) : super(expected, arg1 ?? arg2);

  @pragma('dart2js:tryInline')
  check() => checkAll(eval());

  @pragma('dart2js:tryInline')
  eval() => arg1 ?? arg2;
}
