1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
// 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 = this.prettyPrinted;
this.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.
this.MjsUnitAssertionError = function MjsUnitAssertionError(message) {}
MjsUnitAssertionError.prototype.toString = function () { return ""; };
// Do more printing in assertions for more correctness coverage.
this.failWithMessage = function failWithMessage(message) {
print(prettyPrinted(message))
}
this.fail = function fail(expectedText, found, name_opt) {
print(prettyPrinted(found));
}
this.assertSame = function assertSame(expected, found, name_opt) {
print(prettyPrinted(found));
}
this.assertNotSame = function assertNotSame(expected, found, name_opt) {
print(prettyPrinted(found));
}
this.assertEquals = function assertEquals(expected, found, name_opt) {
print(prettyPrinted(found));
}
this.assertNotEquals = function assertNotEquals(expected, found, name_opt) {
print(prettyPrinted(found));
}
this.assertNull = function assertNull(value, name_opt) {
print(prettyPrinted(value));
}
this.assertNotNull = function assertNotNull(value, name_opt) {
print(prettyPrinted(value));
}
// Suppress optimization status as it leads to false positives.
this.assertUnoptimized = function assertUnoptimized() {}
this.assertOptimized = function assertOptimized() {}
this.isNeverOptimize = function isNeverOptimize() {}
this.isAlwaysOptimize = function isAlwaysOptimize() {}
this.isInterpreted = function isInterpreted() {}
this.isOptimized = function isOptimized() {}
this.isTurboFanned = function isTurboFanned() {}
})();
} catch(e) { }
|