blob: c708aa0f1d8325f544dd2c6a3342bdf0da71f8e8 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createSyncSuite("Set");
suite.addTestCase({
name: "Set.prototype.take",
test() {
const key = "key";
let set = new Set;
set.add(key);
InspectorTest.expectTrue(set.take(key), "Set can take `key`.");
InspectorTest.expectFalse(set.has(key), "Set no longer has `key`.");
InspectorTest.expectFalse(set.take(key), "Set can NOT take `key`.");
InspectorTest.expectFalse(set.take("DNE"), "Set can NOT take `DNE`, as it does NOT exist.");
}
});
suite.addTestCase({
name: "Set.prototype.intersects",
test() {
function testTrue(a, b, message) {
InspectorTest.expectThat((new Set(a)).intersects(new Set(b)), message);
}
function testFalse(a, b, message) {
InspectorTest.expectFalse((new Set(a)).intersects(new Set(b)), message);
}
const object1 = {a: 1};
const object2 = {b: 2};
const object3 = {c: 3};
testFalse([], [], "an empty set should not intersect another empty set.");
testFalse([1, "a", object1], [], "a non-empty set should not intersect an empty set.");
testTrue([1, "a", object1], [1, "a", object1], "a set should intersect another set with the same values.");
testFalse([1, "a", object1], [2, "b", object2], "a set should not intersect another set with different values.");
testTrue([1, "a", object1], [1, 3, "a", "c", object1, object3], "a set should intersect another set with same and additional values.");
testTrue([1, 2, "a", "b", object1, object2], [1, 3, "a", "c", object1, object3], "a set should intersect another set with same and different values.");
}
});
suite.addTestCase({
name: "Set.prototype.isSubsetOf",
test() {
function testTrue(a, b, message) {
InspectorTest.expectThat((new Set(a)).isSubsetOf(new Set(b)), message);
}
function testFalse(a, b, message) {
InspectorTest.expectFalse((new Set(a)).isSubsetOf(new Set(b)), message);
}
const object1 = {a: 1};
const object2 = {b: 2};
const object3 = {c: 3};
testTrue([], [], "an empty set should be a subset of another empty set.");
testTrue([], [2, "b", object2], "an empty set should be a subset of a non-empty set.");
testTrue([1, "a", object1], [1, "a", object1], "a set should be a subset of another set with the same values.");
testFalse([1, "a", object1], [2, "b", object2], "a set should not be a subset of another set with different values.");
testTrue([1, "a", object1], [1, 3, "a", "c", object1, object3], "a set should be a subset of another set with same and additional values.");
testFalse([1, 2, "a", "b", object1, object2], [1, 3, "a", "c", object1, object3], "a set should not be a subset of another set with same and different values.");
}
});
suite.addTestCase({
name: "Set.prototype.equals",
test() {
function testTrue(a, b, message) {
InspectorTest.expectThat((new Set(a)).equals(new Set(b)), message);
}
function testFalse(a, b, message) {
InspectorTest.expectFalse((new Set(a)).equals(new Set(b)), message);
}
const object1 = {a: 1};
const object2 = {b: 2};
const object3 = {c: 3};
testTrue([], [], "an empty set should be equal to another empty set.");
testTrue([1, "a", object1], [1, "a", object1], "a set should be equal to another set with the same values.");
testTrue([1, "a", object1], [object1, 1, "a"], "a set should be equal to another set with the same values in a different order.");
testFalse([1, "a", object1], [2, "b", object2], "a set should not be a equal to another set with different values.");
testFalse([1, 2, "a", "b", object1, object2], [1, 3, "a", "c", object1, object3], "a set should not be equal to another set with same and different values.");
}
});
suite.addTestCase({
name: "Set.prototype.difference",
test() {
function testDifference({aValues, bValues, expectedDifference}) {
let a = new Set(aValues);
let b = new Set(bValues);
InspectorTest.log(`Given a Set with values [${aValues}], and another Set with values [${bValues}]:`);
let difference = a.difference(b);
InspectorTest.expectThat(difference.equals(new Set(expectedDifference)), `Set difference should be [${expectedDifference}].`);
InspectorTest.log("");
}
testDifference({
aValues: [],
bValues: [],
expectedDifference: [],
});
testDifference({
aValues: [1, 2, 3],
bValues: [],
expectedDifference: [1, 2, 3],
});
testDifference({
aValues: [],
bValues: [1, 2, 3],
expectedDifference: [],
});
testDifference({
aValues: [1, 2, 3],
bValues: [2, 3, 4],
expectedDifference: [1],
});
}
});
suite.addTestCase({
name: "Set.prototype.firstValue",
test() {
function testFirstValue(values) {
let expected = values[0];
InspectorTest.expectEqual(new Set(values).firstValue, expected, `Set with values [${values}] should have firstValue equal to ${expected}.`);
}
testFirstValue([]);
testFirstValue([1, 2, 3]);
}
});
suite.addTestCase({
name: "Set.prototype.lastValue",
test() {
function testLastValue(values) {
let expected = values.lastValue;
InspectorTest.expectEqual(new Set(values).lastValue, expected, `Set with values [${values}] should have lastValue equal to ${expected}.`);
}
testLastValue([]);
testLastValue([1, 2, 3]);
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onLoad="runTest()">
</body>
</html>