blob: d42f264833ae1291e09ef33d13ce731092595d76 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests the graph model.\n`);
await TestRunner.showPanel('web-audio');
const contextId = 'contextId';
const graph = new WebAudio.GraphVisualizer.GraphView(contextId);
TestRunner.addResult('Original lengths');
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest adding node');
const nodeData1 = {
nodeId: 'node1',
nodeType: 'Gain',
numberOfInputs: 1,
numberOfOutputs: 1
};
graph.addNode(nodeData1);
// TestRunner.addResult(`Graph is dirty: ${graph.isDirty()}`);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest removing node with no edges');
graph.removeNode(nodeData1.nodeId);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest adding node-to-node connection');
const nodeData2 = {
nodeId: 'node2',
nodeType: 'BiquadFilter',
numberOfInputs: 1,
numberOfOutputs: 1
};
graph.addNode(nodeData1);
graph.addNode(nodeData2);
const edgeData1 = {
sourceId: nodeData1.nodeId,
destinationId: nodeData2.nodeId,
sourceOutputIndex: 0,
destinationInputIndex: 0,
};
graph.addNodeToNodeConnection(edgeData1);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest removing node-to-node connection');
graph.removeNodeToNodeConnection({
sourceId: nodeData1.nodeId,
destinationId: nodeData2.nodeId,
});
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest removing node with edges');
graph.addNodeToNodeConnection(edgeData1);
graph.removeNode(nodeData1.nodeId);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('Add the node back for other tests.')
graph.addNode(nodeData1);
TestRunner.addResult('\nTest adding param');
const paramData1 = {
paramId: 'param1',
paramType: 'detune',
nodeId: nodeData2.nodeId,
};
graph.addParam(paramData1);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest adding node-to-param connection');
const edgeData2 = {
sourceId: nodeData1.nodeId,
destinationId: nodeData2.nodeId,
sourceOutputIndex: 0,
destinationParamId: paramData1.paramId,
};
graph.addNodeToParamConnection(edgeData2);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.addResult('\nTest removing node-to-param connection');
graph.removeNodeToParamConnection(edgeData2);
dumpNodeEdgeSize();
dumpInOutBoundingMapSize();
TestRunner.completeTest();
function dumpNodeEdgeSize() {
TestRunner.addResult(`Number of nodes: ${graph.getNodes().size}`);
TestRunner.addResult(`Number of edges: ${graph.getEdges().size}`);
}
function dumpInOutBoundingMapSize() {
TestRunner.addResult(`Number of nodes with out-bound edges: ${graph._outboundEdgeMap.size}`);
TestRunner.addResult(`Number of nodes with in-bound edges: ${graph._inboundEdgeMap.size}`);
}
})();