blob: 4a8ed35cc267c4ca7efa7f71576895723b3e8e75 [file] [log] [blame]
// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Extensions to mjsunit and other test harnesses added between harness and
// fuzzing code.
try {
// Scope for utility functions.
(function() {
// Same as in mjsunit.js.
function classOf(object) {
// Argument must not be null or undefined.
var string = Object.prototype.toString.call(object);
// String has format [object <ClassName>].
return string.substring(8, string.length - 1);
}
// Override prettyPrinted with a version that also recusively prints object
// properties (with a depth of 3).
let origPrettyPrinted = prettyPrinted;
prettyPrinted = function prettyPrinted(value, depth=3) {
if (depth == 0) {
return "...";
}
switch (typeof value) {
case "object":
if (value === null) return "null";
var objectClass = classOf(value);
switch (objectClass) {
case "Object":
var name = value.constructor.name;
if (!name)
name = "Object";
return name + "{" + Object.keys(value).map(function(key, index) {
return (
prettyPrinted(key, depth - 1) +
": " +
prettyPrinted(value[key], depth - 1)
);
}).join(",") + "}";
}
}
// Fall through to original version for all other types.
return origPrettyPrinted(value);
}
// We're not interested in stack traces.
MjsUnitAssertionError = function MjsUnitAssertionError(message) {}
MjsUnitAssertionError.prototype.toString = function () { return ""; };
// Do more printing in assertions for more correctness coverage.
failWithMessage = function failWithMessage(message) {
print(prettyPrinted(message))
}
assertSame = function assertSame(expected, found, name_opt) {
print(prettyPrinted(found));
}
assertNotSame = function assertNotSame(expected, found, name_opt) {
print(prettyPrinted(found));
}
assertEquals = function assertEquals(expected, found, name_opt) {
print(prettyPrinted(found));
}
assertNotEquals = function assertNotEquals(expected, found, name_opt) {
print(prettyPrinted(found));
}
assertNull = function assertNull(value, name_opt) {
print(prettyPrinted(value));
}
assertNotNull = function assertNotNull(value, name_opt) {
print(prettyPrinted(value));
}
// Suppress optimization status as it leads to false positives.
assertUnoptimized = function assertUnoptimized() {}
assertOptimized = function assertOptimized() {}
isNeverOptimize = function isNeverOptimize() {}
isAlwaysOptimize = function isAlwaysOptimize() {}
isInterpreted = function isInterpreted() {}
isOptimized = function isOptimized() {}
isTurboFanned = function isTurboFanned() {}
})();
} catch(e) { }