| <!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> |