// 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 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 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 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 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 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 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 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(
          0x80000000 * 0x100000000, -1, -0x80000000 * 0x100000000)
      .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 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();
  // TODO(36194)
  //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 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 = null]) {
  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;
}
