// Copyright (C) 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-multiplicative-operators-runtime-semantics-evaluation
description: Mixing BigInt and Number produces a TypeError for modulus operator
features: [BigInt]
info: |
  Let lnum be ? ToNumeric(leftValue).
  Let rnum be ? ToNumeric(rightValue).
  If Type(lnum) does not equal Type(rnum), throw a TypeError exception.
---*/
assert.throws(TypeError, function() {
  1n % 1;
}, '1n % 1 throws TypeError');

assert.throws(TypeError, function() {
  1 % 1n;
}, '1 % 1n throws TypeError');

assert.throws(TypeError, function() {
  Object(1n) % 1;
}, 'Object(1n) % 1 throws TypeError');

assert.throws(TypeError, function() {
  1 % Object(1n);
}, '1 % Object(1n) throws TypeError');

assert.throws(TypeError, function() {
  1n % Object(1);
}, '1n % Object(1) throws TypeError');

assert.throws(TypeError, function() {
  Object(1) % 1n;
}, 'Object(1) % 1n throws TypeError');

assert.throws(TypeError, function() {
  Object(1n) % Object(1);
}, 'Object(1n) % Object(1) throws TypeError');

assert.throws(TypeError, function() {
  Object(1) % Object(1n);
}, 'Object(1) % Object(1n) throws TypeError');

assert.throws(TypeError, function() {
  1n % NaN;
}, '1n % NaN throws TypeError');

assert.throws(TypeError, function() {
  NaN % 1n;
}, 'NaN % 1n throws TypeError');

assert.throws(TypeError, function() {
  1n % Infinity;
}, '1n % Infinity throws TypeError');

assert.throws(TypeError, function() {
  Infinity % 1n;
}, 'Infinity % 1n throws TypeError');

assert.throws(TypeError, function() {
  1n % true;
}, '1n % true throws TypeError');

assert.throws(TypeError, function() {
  true % 1n;
}, 'true % 1n throws TypeError');

assert.throws(TypeError, function() {
  1n % '1';
}, '1n % "1" throws TypeError');

assert.throws(TypeError, function() {
  '1' % 1n;
}, '"1" % 1n throws TypeError');

assert.throws(TypeError, function() {
  1n % null;
}, '1n % null throws TypeError');

assert.throws(TypeError, function() {
  null % 1n;
}, 'null % 1n throws TypeError');

assert.throws(TypeError, function() {
  1n % undefined;
}, '1n % undefined throws TypeError');

assert.throws(TypeError, function() {
  undefined % 1n;
}, 'undefined % 1n throws TypeError');