ctor-audiobuffersource.html (3783B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title> 5 Test Constructor: AudioBufferSource 6 </title> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/webaudio/resources/audit-util.js"></script> 10 <script src="/webaudio/resources/audit.js"></script> 11 <script src="/webaudio/resources/audionodeoptions.js"></script> 12 </head> 13 <body> 14 <script id="layout-test-code"> 15 let context; 16 17 let audit = Audit.createTaskRunner(); 18 19 audit.define('initialize', (task, should) => { 20 context = initializeContext(should); 21 task.done(); 22 }); 23 24 audit.define('invalid constructor', (task, should) => { 25 testInvalidConstructor(should, 'AudioBufferSourceNode', context); 26 task.done(); 27 }); 28 29 audit.define('default constructor', (task, should) => { 30 let prefix = 'node0'; 31 let node = 32 testDefaultConstructor(should, 'AudioBufferSourceNode', context, { 33 prefix: prefix, 34 numberOfInputs: 0, 35 numberOfOutputs: 1, 36 channelCount: 2, 37 channelCountMode: 'max', 38 channelInterpretation: 'speakers' 39 }); 40 41 testDefaultAttributes(should, node, prefix, [ 42 {name: 'buffer', value: null}, 43 {name: 'detune', value: 0}, 44 {name: 'loop', value: false}, 45 {name: 'loopEnd', value: 0.0}, 46 {name: 'loopStart', value: 0.0}, 47 {name: 'playbackRate', value: 1.0}, 48 ]); 49 50 task.done(); 51 }); 52 53 audit.define('nullable buffer', (task, should) => { 54 let node; 55 let options = {buffer: null}; 56 57 should( 58 () => { 59 node = new AudioBufferSourceNode(context, options); 60 }, 61 'node1 = new AudioBufferSourceNode(c, ' + JSON.stringify(options)) 62 .notThrow(); 63 64 should(node.buffer, 'node1.buffer').beEqualTo(null); 65 66 task.done(); 67 }); 68 69 audit.define('constructor options', (task, should) => { 70 let node; 71 let buffer = context.createBuffer(2, 1000, context.sampleRate); 72 73 let options = { 74 buffer: buffer, 75 detune: .5, 76 loop: true, 77 loopEnd: (buffer.length / 2) / context.sampleRate, 78 loopStart: 5 / context.sampleRate, 79 playbackRate: .75 80 }; 81 82 let message = 'node = new AudioBufferSourceNode(c, ' + 83 JSON.stringify(options) + ')'; 84 85 should(() => { 86 node = new AudioBufferSourceNode(context, options); 87 }, message).notThrow(); 88 89 // Use the factory method to create an equivalent node and compare the 90 // results from the constructor against this node. 91 let factoryNode = context.createBufferSource(); 92 factoryNode.buffer = options.buffer; 93 factoryNode.detune.value = options.detune; 94 factoryNode.loop = options.loop; 95 factoryNode.loopEnd = options.loopEnd; 96 factoryNode.loopStart = options.loopStart; 97 factoryNode.playbackRate.value = options.playbackRate; 98 99 should(node.buffer === buffer, 'node2.buffer === buffer') 100 .beEqualTo(true); 101 should(node.detune.value, 'node2.detune.value') 102 .beEqualTo(factoryNode.detune.value); 103 should(node.loop, 'node2.loop').beEqualTo(factoryNode.loop); 104 should(node.loopEnd, 'node2.loopEnd').beEqualTo(factoryNode.loopEnd); 105 should(node.loopStart, 'node2.loopStart') 106 .beEqualTo(factoryNode.loopStart); 107 should(node.playbackRate.value, 'node2.playbackRate.value') 108 .beEqualTo(factoryNode.playbackRate.value); 109 110 task.done(); 111 }); 112 113 audit.run(); 114 </script> 115 </body> 116 </html>