//@ runBigIntEnabled

assert = {
    sameValue: function (input, expected, message) {
        if (input !== expected)
            throw new Error(message);
    }
};

function testDiv(x, y, z, message) {
    assert.sameValue(x / y, z, message);
}

testDiv(Object(2n), 1n, 2n, "ToPrimitive: unbox object with internal slot");

let o = {
    [Symbol.toPrimitive]: function() {
        return 2n;
    }
};
testDiv(o, 1n, 2n, "ToPrimitive: @@toPrimitive");

o = {
    valueOf: function() {
        return 2n;
    }
};
testDiv(o, 1n, 2n, "ToPrimitive: valueOf");

o = {
    toString: function() {
        return 2n;
    }
}
testDiv(o, 1n, 2n, "ToPrimitive: toString");

o = {
    valueOf: function() {
        return 2n;
    },
    toString: function () {
        throw new Error("Should never execute it");
    }
};
testDiv(o, 1n, 2n, "ToPrimitive: valueOf");

