/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ // Test filtering CensusTreeNode trees with an `allocationStack` breakdown. function run_test() { const countBreakdown = { by: "count", count: true, bytes: true }; const BREAKDOWN = { by: "allocationStack", then: countBreakdown, noStack: countBreakdown, }; let stack1, stack2, stack3, stack4, stack5; (function foo() { (function bar() { (function baz() { stack1 = saveStack(3); }()); (function quux() { stack2 = saveStack(3); stack3 = saveStack(3); }()); }()); stack4 = saveStack(2); }()); stack5 = saveStack(1); const REPORT = new Map([ [stack1, { bytes: 10, count: 1 }], [stack2, { bytes: 20, count: 2 }], [stack3, { bytes: 30, count: 3 }], [stack4, { bytes: 40, count: 4 }], [stack5, { bytes: 50, count: 5 }], ["noStack", { bytes: 60, count: 6 }], ]); const EXPECTED = { name: null, bytes: 0, totalBytes: 210, count: 0, totalCount: 21, children: [ { name: stack1.parent.parent, bytes: 0, totalBytes: 60, count: 0, totalCount: 6, children: [ { name: stack2.parent, bytes: 0, totalBytes: 50, count: 0, totalCount: 5, children: [ { name: stack3, bytes: 30, totalBytes: 30, count: 3, totalCount: 3, children: undefined, id: 15, parent: 14, reportLeafIndex: 3, }, { name: stack2, bytes: 20, totalBytes: 20, count: 2, totalCount: 2, children: undefined, id: 16, parent: 14, reportLeafIndex: 2, } ], id: 14, parent: 13, reportLeafIndex: undefined, }, { name: stack1.parent, bytes: 0, totalBytes: 10, count: 0, totalCount: 1, children: [ { name: stack1, bytes: 10, totalBytes: 10, count: 1, totalCount: 1, children: undefined, id: 18, parent: 17, reportLeafIndex: 1, } ], id: 17, parent: 13, reportLeafIndex: undefined, } ], id: 13, parent: 12, reportLeafIndex: undefined, } ], id: 12, parent: undefined, reportLeafIndex: undefined, }; compareCensusViewData(BREAKDOWN, REPORT, EXPECTED, { filter: "bar" }); }