| OLD | NEW |
| 1 var sampleRate = 44100.0; | 1 var sampleRate = 44100.0; |
| 2 | 2 |
| 3 var renderLengthSeconds = 4; | 3 var renderLengthSeconds = 4; |
| 4 var delayTimeSeconds = 0.5; | 4 var delayTimeSeconds = 0.5; |
| 5 var toneLengthSeconds = 2; | 5 var toneLengthSeconds = 2; |
| 6 | 6 |
| 7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) { | 7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) { |
| 8 var duration = numberOfCycles / frequency; | 8 var duration = numberOfCycles / frequency; |
| 9 var sampleFrameLength = duration * sampleRate; | 9 var sampleFrameLength = duration * sampleRate; |
| 10 | 10 |
| 11 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); | 11 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); |
| 12 | 12 |
| 13 var n = audioBuffer.length; | 13 var n = audioBuffer.length; |
| 14 var data = audioBuffer.getChannelData(0); | 14 var data = audioBuffer.getChannelData(0); |
| 15 | 15 |
| 16 for (var i = 0; i < n; ++i) | 16 for (var i = 0; i < n; ++i) |
| 17 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate); | 17 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate); |
| 18 | 18 |
| 19 return audioBuffer; | 19 return audioBuffer; |
| 20 } | 20 } |
| 21 | 21 |
| 22 function checkDelayedResult(toneBuffer) { | 22 function checkDelayedResult(renderedBuffer, toneBuffer, should) { |
| 23 return function(event) { | 23 var sourceData = toneBuffer.getChannelData(0); |
| 24 var renderedBuffer = event.renderedBuffer; | 24 var renderedData = renderedBuffer.getChannelData(0); |
| 25 | 25 |
| 26 var sourceData = toneBuffer.getChannelData(0); | 26 var delayTimeFrames = delayTimeSeconds * sampleRate; |
| 27 var renderedData = renderedBuffer.getChannelData(0); | 27 var toneLengthFrames = toneLengthSeconds * sampleRate; |
| 28 | |
| 29 var delayTimeFrames = delayTimeSeconds * sampleRate; | |
| 30 var toneLengthFrames = toneLengthSeconds * sampleRate; | |
| 31 | 28 |
| 32 var success = true; | 29 var success = true; |
| 33 | 30 |
| 34 var n = renderedBuffer.length; | 31 var n = renderedBuffer.length; |
| 35 | 32 |
| 36 for (var i = 0; i < n; ++i) { | 33 for (var i = 0; i < n; ++i) { |
| 37 if (i < delayTimeFrames) { | 34 if (i < delayTimeFrames) { |
| 38 // Check that initial portion is 0 (since signal is delayed). | 35 // Check that initial portion is 0 (since signal is delayed). |
| 39 if (renderedData[i] != 0) { | 36 if (renderedData[i] != 0) { |
| 40 testFailed("Initial portion is not 0 at frame " + i); | 37 should(renderedData[i], |
| 41 success = false; | 38 "Initial portion expected to be 0 at frame " + i) |
| 42 break; | 39 .beEqualTo(0); |
| 43 } | 40 success = false; |
| 44 } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthF
rames) { | 41 break; |
| 45 // Make sure that the tone data is delayed by exactly the expect
ed number of frames. | 42 } |
| 46 var j = i - delayTimeFrames; | 43 } else if (i >= delayTimeFrames && i < delayTimeFrames + |
| 47 if (renderedData[i] != sourceData[j]) { | 44 toneLengthFrames) { |
| 48 testFailed("Actual data does not match expected data at fram
e " + i); | 45 // Make sure that the tone data is delayed by exactly the expected n
umber of frames. |
| 49 success = false; | 46 var j = i - delayTimeFrames; |
| 50 break; | 47 if (renderedData[i] != sourceData[j]) { |
| 51 } | 48 should(renderedData[i], |
| 52 } else { | 49 "Actual data at frame " + i) |
| 53 // Make sure we have silence after the delayed tone. | 50 .beEqualTo(sourceData[j]); |
| 54 if (renderedData[i] != 0) { | 51 success = false; |
| 55 testFailed("Final portion is not 0 at frame " + i); | 52 break; |
| 56 success = false; | 53 } |
| 57 break; | 54 } else { |
| 58 } | 55 // Make sure we have silence after the delayed tone. |
| 59 } | 56 if (renderedData[i] != 0) { |
| 57 should(renderedData[j], |
| 58 "Final portion at frame " + i) |
| 59 .beEqualTo(0); |
| 60 success = false; |
| 61 break; |
| 62 } |
| 60 } | 63 } |
| 64 } |
| 61 | 65 |
| 62 if (success) { | 66 should(success, "Delaying test signal by " + delayTimeSeconds + " sec was do
ne") |
| 63 testPassed("Test signal was correctly delayed by " + delayTimeSecond
s + " sec."); | 67 .message("correctly", "incorrectly") |
| 64 } else { | |
| 65 testFailed("Test signal was not correctly delayed by " + delayTimeSe
conds + " sec."); | |
| 66 } | |
| 67 | |
| 68 finishJSTest(); | |
| 69 } | |
| 70 } | 68 } |
| OLD | NEW |