/**
 * Validate various native types continue to work when run in JITed code.
 *
 * In SERVER-30362, the JIT would not compile natives types which had custom getProperty
 * implementations correctly. We force the JIT to kick in by using large loops.
 */
(function() {
'use strict';

function testDBCollection() {
    const c = new DBCollection(null, null, "foo", "test.foo");
    for (let i = 0; i < 100000; i++) {
        if (c.toString() != "test.foo") {
            throw i;
        }
    }
}

function testDB() {
    const c = new DB(null, "test");
    for (let i = 0; i < 100000; i++) {
        if (c.toString() != "test") {
            throw i;
        }
    }
}

function testDBQuery() {
    const c = DBQuery('a', 'b', 'c', 'd');
    for (let i = 0; i < 100000; i++) {
        if (c.toString() != "DBQuery: d -> null") {
            throw i;
        }
    }
}

testDBCollection();
testDB();
testDBQuery();
})();