blob: 91e8580c7cb6273458254024972009e99cda834d [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createSyncSuite("InspectorTest.ExpectFunctions.Sync");
function toArray(a) {
return a instanceof Array && a.length ? a : [a];
}
function addTestCase({functionName, passingInputs, failingInputs}) {
let functionUnderTest = InspectorTest[functionName];
InspectorTest.assert(typeof functionUnderTest === "function", "Unknown InspectorTest function: " + functionName);
suite.addTestCase({
name: `InspectorTest.${functionName}`,
test() {
function exerciseFunction(inputs, shouldPass) {
if (!inputs || !inputs.length) {
InspectorTest.fail("exerciseFunction called with no inputs.");
return;
}
InspectorTest.log("Expected to " + (shouldPass ? "PASS" : "FAIL"));
for (let input of inputs.map(toArray))
functionUnderTest.call(InspectorTest, ...input);
}
exerciseFunction(passingInputs, true);
exerciseFunction(failingInputs, false);
return true;
}
});
}
function addInverseTestCase(functionName, testCase) {
addTestCase({functionName, passingInputs: testCase.failingInputs, failingInputs: testCase.passingInputs})
}
let expectThatTestCase = {
functionName: "expectThat",
passingInputs: [true, 1, "abc", {}, []],
failingInputs: [false, 0, "", null, undefined, NaN],
};
addTestCase(expectThatTestCase);
addInverseTestCase("expectFalse", expectThatTestCase);
let expectNullTestCase = {
functionName: "expectNull",
passingInputs: [null],
failingInputs: [true, false, 1, "", undefined, {}, []]
};
addTestCase(expectNullTestCase);
addInverseTestCase("expectNotNull", expectNullTestCase);
let object1 = {a: 1, b: 2};
let object2 = {a: 1, b: 2};
let customObject1 = new WI.SourceCode;
let customObject2 = new WI.Resource("foo.bar");
let expectEqualTestCase = {
functionName: "expectEqual",
passingInputs: [
[true, true],
[object1, object1],
[customObject1, customObject1],
[1.23, 1.23],
["abc", "abc"],
[null, null],
[undefined, undefined],
],
failingInputs: [
[true, false],
[object1, object2],
[customObject1, customObject2],
[1.23, 4.56],
["abc", "def"],
[null, undefined],
[NaN, NaN],
[{}, {}],
[[], []],
]
};
addTestCase(expectEqualTestCase);
addInverseTestCase("expectNotEqual", expectEqualTestCase);
let expectShallowEqualTestCase = {
functionName: "expectShallowEqual",
passingInputs: [
[{a: 1, b: 2}, {a: 1, b: 2}],
[{}, {}],
[[1, 2], [1, 2]],
[[{a: 1}, {a: 2}], [{a: 1}, {a: 2}]],
[[{}], [{}]],
[[], []],
],
failingInputs: [
[{a: 1, b: 2}, {a: 3, b: 4}],
[{}, []],
[[1, 2], [3, 4]],
[[{a: 1}, {a: 2}], [{a: 3}, {a: 4}]],
[[{a: 1}, {a: 2}], [{b: 1}, {b: 2}]],
]
};
addTestCase(expectShallowEqualTestCase);
addInverseTestCase("expectNotShallowEqual", expectShallowEqualTestCase);
addTestCase({
functionName: "expectEqualWithAccuracy",
passingInputs: [
[0, 0, 0],
[0, 0, 1],
[0, 1, 1],
[1, 0, 1],
],
failingInputs: [
[0, 2, 1],
[2, 0, 1],
]
});
addTestCase({
functionName: "expectLessThan",
passingInputs: [
[0, 1],
["abc", "def"],
],
failingInputs: [
[0, 0],
[1, 0],
["abc", "abc"],
["def", "abc"],
]
});
addTestCase({
functionName: "expectLessThanOrEqual",
passingInputs: [
[0, 1],
[0, 0],
["abc", "def"],
["abc", "abc"],
],
failingInputs: [
[1, 0],
["def", "abc"],
]
});
addTestCase({
functionName: "expectGreaterThan",
passingInputs: [
[1, 0],
["def", "abc"],
],
failingInputs: [
[0, 0],
[0, 1],
["abc", "abc"],
["abc", "def"],
]
});
addTestCase({
functionName: "expectGreaterThanOrEqual",
passingInputs: [
[1, 0],
[0, 0],
["def", "abc"],
["abc", "abc"],
],
failingInputs: [
[0, 1],
["abc", "def"],
]
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Testing TestHarness.expect* family of functions.</p>
</body>
</html>