| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| function itemForRepresentedObject(x) { |
| return x; |
| } |
| |
| function createTree(data) { |
| let node = { |
| ...data, |
| parent: null, |
| children: data.children || [], |
| }; |
| |
| node.children = node.children.map((childData) => { |
| let childNode = createTree(childData); |
| childNode.parent = node; |
| return childNode; |
| }); |
| |
| return node; |
| } |
| |
| function flatten(node) { |
| return [node, ...node.children.flatMap(flatten)]; |
| } |
| |
| function shuffle(array) { |
| let shuffled = []; |
| while (array.length) |
| shuffled.push(array.splice(Math.floor(Math.random() * array.length), 1)[0]); |
| return shuffled; |
| } |
| |
| let suite = InspectorTest.createSyncSuite("SelectionController.createTreeComparator"); |
| |
| suite.addTestCase({ |
| name: "SelectionController.createTreeComparator.ValidTree", |
| description: "Check that createTreeComparator works with a valid tree.", |
| test() { |
| let comparator = WI.SelectionController.createTreeComparator(itemForRepresentedObject); |
| |
| InspectorTest.log("Creating tree..."); |
| let root = createTree({ |
| id: "root", |
| children: [ |
| { |
| id: "1", |
| children: [ |
| { |
| id: "1 > 1", |
| children: [ |
| {id: "1 > 1 > 1"}, |
| {id: "1 > 1 > 2"}, |
| {id: "1 > 1 > 3"}, |
| ], |
| }, |
| { |
| id: "1 > 2", |
| children: [ |
| {id: "1 > 2 > 1"}, |
| {id: "1 > 2 > 2"}, |
| {id: "1 > 2 > 3"}, |
| ], |
| }, |
| { |
| id: "1 > 3", |
| children: [ |
| {id: "1 > 3 > 1"}, |
| {id: "1 > 3 > 2"}, |
| {id: "1 > 3 > 3"}, |
| ], |
| }, |
| |
| ], |
| }, |
| { |
| id: "2", |
| children: [ |
| { |
| id: "2 > 1", |
| children: [ |
| {id: "2 > 1 > 1"}, |
| {id: "2 > 1 > 2"}, |
| {id: "2 > 1 > 3"}, |
| ], |
| }, |
| { |
| id: "2 > 2", |
| children: [ |
| {id: "2 > 2 > 1"}, |
| {id: "2 > 2 > 2"}, |
| {id: "2 > 2 > 3"}, |
| ], |
| }, |
| { |
| id: "2 > 3", |
| children: [ |
| {id: "2 > 3 > 1"}, |
| {id: "2 > 3 > 2"}, |
| {id: "2 > 3 > 3"}, |
| ], |
| }, |
| ], |
| }, |
| { |
| id: "3", |
| children: [ |
| { |
| id: "3 > 1", |
| children: [ |
| {id: "3 > 1 > 1"}, |
| {id: "3 > 1 > 2"}, |
| {id: "3 > 1 > 3"}, |
| ], |
| }, |
| { |
| id: "3 > 2", |
| children: [ |
| {id: "3 > 2 > 1"}, |
| {id: "3 > 2 > 2"}, |
| {id: "3 > 2 > 3"}, |
| ], |
| }, |
| { |
| id: "3 > 3", |
| children: [ |
| {id: "3 > 3 > 1"}, |
| {id: "3 > 3 > 2"}, |
| {id: "3 > 3 > 3"}, |
| ], |
| }, |
| ], |
| }, |
| ], |
| }); |
| |
| InspectorTest.log("Shuffling tree..."); |
| let nodes = shuffle(flatten(root)); |
| |
| InspectorTest.log("Sorting tree..."); |
| nodes.sort(comparator); |
| |
| InspectorTest.newline(); |
| for (let node of nodes) |
| InspectorTest.log(" " + node.id); |
| }, |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onLoad="runTest()"> |
| <p>Tests for WI.SelectionController.createTreeComparator.</p> |
| </body> |
| </html> |