// 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 ]. 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) { }