test_action-toggle-inverted-and-refresh-01.js (2906B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Test that changing displays with different inverted state properly 7 // refreshes the selected census. 8 9 const { 10 censusDisplays, 11 censusState, 12 viewState, 13 } = require("resource://devtools/client/memory/constants.js"); 14 const { 15 setCensusDisplayAndRefresh, 16 } = require("resource://devtools/client/memory/actions/census-display.js"); 17 const { 18 takeSnapshotAndCensus, 19 selectSnapshotAndRefresh, 20 } = require("resource://devtools/client/memory/actions/snapshot.js"); 21 const { 22 changeView, 23 } = require("resource://devtools/client/memory/actions/view.js"); 24 25 add_task(async function () { 26 const front = new StubbedMemoryFront(); 27 const heapWorker = new HeapAnalysesClient(); 28 await front.attach(); 29 const store = Store(); 30 const { getState, dispatch } = store; 31 32 dispatch(changeView(viewState.CENSUS)); 33 34 // Select a non-inverted display. 35 dispatch( 36 setCensusDisplayAndRefresh(heapWorker, censusDisplays.allocationStack) 37 ); 38 equal(getState().censusDisplay.inverted, false, "not inverted by default"); 39 40 dispatch(takeSnapshotAndCensus(front, heapWorker)); 41 dispatch(takeSnapshotAndCensus(front, heapWorker)); 42 dispatch(takeSnapshotAndCensus(front, heapWorker)); 43 44 await waitUntilCensusState(store, s => s.census, [ 45 censusState.SAVED, 46 censusState.SAVED, 47 censusState.SAVED, 48 ]); 49 ok(true, "saved 3 snapshots and took a census of each of them"); 50 51 // Select an inverted display. 52 dispatch( 53 setCensusDisplayAndRefresh( 54 heapWorker, 55 censusDisplays.invertedAllocationStack 56 ) 57 ); 58 59 await waitUntilCensusState(store, s => s.census, [ 60 censusState.SAVED, 61 censusState.SAVED, 62 censusState.SAVING, 63 ]); 64 ok(true, "toggling inverted should recompute the selected snapshot's census"); 65 66 equal(getState().censusDisplay.inverted, true, "now inverted"); 67 68 await waitUntilCensusState(store, s => s.census, [ 69 censusState.SAVED, 70 censusState.SAVED, 71 censusState.SAVED, 72 ]); 73 74 equal(getState().snapshots[0].census.display.inverted, false); 75 equal(getState().snapshots[1].census.display.inverted, false); 76 equal(getState().snapshots[2].census.display.inverted, true); 77 78 dispatch(selectSnapshotAndRefresh(heapWorker, getState().snapshots[1].id)); 79 await waitUntilCensusState(store, s => s.census, [ 80 censusState.SAVED, 81 censusState.SAVING, 82 censusState.SAVED, 83 ]); 84 ok(true, "selecting non-inverted census should trigger a recompute"); 85 86 await waitUntilCensusState(store, s => s.census, [ 87 censusState.SAVED, 88 censusState.SAVED, 89 censusState.SAVED, 90 ]); 91 92 equal(getState().snapshots[0].census.display.inverted, false); 93 equal(getState().snapshots[1].census.display.inverted, true); 94 equal(getState().snapshots[2].census.display.inverted, true); 95 96 heapWorker.destroy(); 97 await front.detach(); 98 });