Index: third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js |
diff --git a/third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js b/third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js |
index 8f93c9edfaf32a128cfadd01fc716513db901642..f19d57e245062dcecda99f33316fecd8819f1a5a 100644 |
--- a/third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js |
+++ b/third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js |
@@ -1,30 +1,30 @@ |
-var sampleRate = 44100.0; |
+let sampleRate = 44100.0; |
// HRTF extra frames. This is a magic constant currently in |
// AudioBufferSourceNode::process that always extends the |
// duration by this number of samples. See bug 77224 |
// (https://bugs.webkit.org/show_bug.cgi?id=77224). |
-var extraFramesHRTF = 512; |
+let extraFramesHRTF = 512; |
// How many grains to play. |
-var numberOfTests = 100; |
+let numberOfTests = 100; |
// Duration of each grain to be played |
-var duration = 0.01; |
+let duration = 0.01; |
// Time step between the start of each grain. We need to add a little |
// bit of silence so we can detect grain boundaries and also account |
// for the extra frames for HRTF. |
-var timeStep = duration + .005 + extraFramesHRTF / sampleRate; |
+let timeStep = duration + .005 + extraFramesHRTF / sampleRate; |
// Time step between the start for each grain. |
-var grainOffsetStep = 0.001; |
+let grainOffsetStep = 0.001; |
// How long to render to cover all of the grains. |
-var renderTime = (numberOfTests + 1) * timeStep; |
+let renderTime = (numberOfTests + 1) * timeStep; |
-var context; |
-var renderedData; |
+let context; |
+let renderedData; |
// Create a buffer containing the data that we want. The function f |
// returns the desired value at sample frame k. |
@@ -33,13 +33,15 @@ function createSignalBuffer(context, f) { |
// Make sure the buffer has enough data for all of the possible |
// grain offsets and durations. Need to include the extra frames |
// for HRTF. The additional 1 is for any round-off errors. |
- var signalLength = Math.floor(1 + extraFramesHRTF + sampleRate * (numberOfTests * grainOffsetStep + duration)); |
+ let signalLength = Math.floor( |
+ 1 + extraFramesHRTF + |
+ sampleRate * (numberOfTests * grainOffsetStep + duration)); |
- var buffer = context.createBuffer(2, signalLength, sampleRate); |
- var data = buffer.getChannelData(0); |
+ let buffer = context.createBuffer(2, signalLength, sampleRate); |
+ let data = buffer.getChannelData(0); |
- for (var k = 0; k < signalLength; ++k) { |
- data[k] = f(k); |
+ for (let k = 0; k < signalLength; ++k) { |
+ data[k] = f(k); |
} |
return buffer; |
@@ -49,56 +51,56 @@ function createSignalBuffer(context, f) { |
// grain. This depends on the data having 0's between grain, and |
// that the grain is always strictly non-zero. |
function findStartAndEndSamples(data) { |
- var nSamples = data.length; |
- |
- var startTime = []; |
- var endTime = []; |
- var lookForStart = true; |
- |
- // Look through the rendered data to find the start and stop |
- // times of each grain. |
- for (var k = 0; k < nSamples; ++k) { |
- if (lookForStart) { |
- // Find a non-zero point and record the start. We're not |
- // concerned with the value in this test, only that the |
- // grain started here. |
- if (renderedData[k]) { |
- startTime.push(k); |
- lookForStart = false; |
- } |
- } else { |
- // Find a zero and record the end of the grain. |
- if (!renderedData[k]) { |
- endTime.push(k); |
- lookForStart = true; |
- } |
- } |
+ let nSamples = data.length; |
+ |
+ let startTime = []; |
+ let endTime = []; |
+ let lookForStart = true; |
+ |
+ // Look through the rendered data to find the start and stop |
+ // times of each grain. |
+ for (let k = 0; k < nSamples; ++k) { |
+ if (lookForStart) { |
+ // Find a non-zero point and record the start. We're not |
+ // concerned with the value in this test, only that the |
+ // grain started here. |
+ if (renderedData[k]) { |
+ startTime.push(k); |
+ lookForStart = false; |
+ } |
+ } else { |
+ // Find a zero and record the end of the grain. |
+ if (!renderedData[k]) { |
+ endTime.push(k); |
+ lookForStart = true; |
+ } |
+ } |
} |
return {start : startTime, end : endTime}; |
} |
function playGrain(context, source, time, offset, duration) { |
- var bufferSource = context.createBufferSource(); |
+ let bufferSource = context.createBufferSource(); |
- bufferSource.buffer = source; |
- bufferSource.connect(context.destination); |
- bufferSource.start(time, offset, duration); |
+ bufferSource.buffer = source; |
+ bufferSource.connect(context.destination); |
+ bufferSource.start(time, offset, duration); |
} |
// Play out all grains. Returns a object containing two arrays, one |
// for the start time and one for the grain offset time. |
function playAllGrains(context, source, numberOfNotes) { |
- var startTimes = new Array(numberOfNotes); |
- var offsets = new Array(numberOfNotes); |
+ let startTimes = new Array(numberOfNotes); |
+ let offsets = new Array(numberOfNotes); |
- for (var k = 0; k < numberOfNotes; ++k) { |
- var timeOffset = k * timeStep; |
- var grainOffset = k * grainOffsetStep; |
+ for (let k = 0; k < numberOfNotes; ++k) { |
+ let timeOffset = k * timeStep; |
+ let grainOffset = k * grainOffsetStep; |
- playGrain(context, source, timeOffset, grainOffset, duration); |
- startTimes[k] = timeOffset; |
- offsets[k] = grainOffset; |
+ playGrain(context, source, timeOffset, grainOffset, duration); |
+ startTimes[k] = timeOffset; |
+ offsets[k] = grainOffset; |
} |
return { startTimes : startTimes, grainOffsetTimes : offsets }; |
@@ -106,74 +108,60 @@ function playAllGrains(context, source, numberOfNotes) { |
// Verify that the start and end frames for each grain match our |
// expected start and end frames. |
-function verifyStartAndEndFrames(startEndFrames) { |
- var startFrames = startEndFrames.start; |
- var endFrames = startEndFrames.end; |
- |
- var success = true; |
- |
- // Count of how many grains started at the incorrect time. |
- var errorCountStart = 0; |
- |
- // Count of how many grains ended at the incorrect time. |
- var errorCountEnd = 0; |
- |
- if (startFrames.length != endFrames.length) { |
- testFailed("Could not find the beginning or end of a grain."); |
- success = false; |
- } |
- |
- if (startFrames.length == numberOfTests && endFrames.length == numberOfTests) { |
- testPassed("Found all " + numberOfTests + " grains."); |
- } else { |
- testFailed("Did not find all " + numberOfTests + " grains."); |
- } |
- |
- // Examine the start and stop times to see if they match our |
- // expectations. |
- for (var k = 0; k < startFrames.length; ++k) { |
- var expectedStart = timeToSampleFrame(k * timeStep, sampleRate); |
- // The end point is the duration, plus the extra frames |
- // for HRTF. |
- var expectedEnd = extraFramesHRTF + expectedStart + grainLengthInSampleFrames(k * grainOffsetStep, duration, sampleRate); |
- |
- if (startFrames[k] != expectedStart) { |
- testFailed("Pulse " + k + " started at " + startFrames[k] + " but expected at " + expectedStart); |
- ++errorCountStart; |
- success = false; |
- } |
- |
- if (endFrames[k] != expectedEnd) { |
- testFailed("Pulse " + k + " ended at " + endFrames[k] + " but expected at " + expectedEnd); |
- ++errorCountEnd; |
- success = false; |
- } |
- } |
- |
- // Check that all the grains started or ended at the correct time. |
- if (!errorCountStart) { |
- if (startFrames.length == numberOfTests) { |
- testPassed("All " + numberOfTests + " grains started at the correct time."); |
- } else { |
- testFailed("All grains started at the correct time, but only " + startFrames.length + " grains found."); |
- success = false; |
- } |
- } else { |
- testFailed(errorCountStart + " out of " + numberOfTests + " grains started at the wrong time."); |
- success = false; |
- } |
- |
- if (!errorCountEnd) { |
- if (endFrames.length == numberOfTests) { |
- testPassed("All " + numberOfTests + " grains ended at the correct time."); |
- } else { |
- testFailed("All grains ended at the correct time, but only " + endFrames.length + " grains found."); |
- success = false; |
- } |
- } else { |
- testFailed(errorCountEnd + " out of " + numberOfTests + " grains ended at the wrong time."); |
- success = false; |
- } |
- |
- return success; |
+function verifyStartAndEndFrames(startEndFrames, should) { |
+ let startFrames = startEndFrames.start; |
+ let endFrames = startEndFrames.end; |
+ |
+ // Count of how many grains started at the incorrect time. |
+ let errorCountStart = 0; |
+ |
+ // Count of how many grains ended at the incorrect time. |
+ let errorCountEnd = 0; |
+ |
+ should( |
+ startFrames.length == endFrames.length, 'Found all grain starts and ends') |
+ .beTrue(); |
+ |
+ should(startFrames.length, 'Number of start frames').beEqualTo(numberOfTests); |
+ should(endFrames.length, 'Number of end frames').beEqualTo(numberOfTests); |
+ |
+ // Examine the start and stop times to see if they match our |
+ // expectations. |
+ for (let k = 0; k < startFrames.length; ++k) { |
+ let expectedStart = timeToSampleFrame(k * timeStep, sampleRate); |
+ // The end point is the duration, plus the extra frames |
+ // for HRTF. |
+ let expectedEnd = extraFramesHRTF + expectedStart + |
+ grainLengthInSampleFrames(k * grainOffsetStep, duration, sampleRate); |
+ |
+ if (startFrames[k] != expectedStart) |
+ ++errorCountStart; |
+ if (endFrames[k] != expectedEnd) |
+ ++errorCountEnd; |
+ |
+ should([startFrames[k], endFrames[k]], 'Pulse ' + k + ' boundary') |
+ .beEqualToArray([expectedStart, expectedEnd]); |
+ } |
+ |
+ // Check that all the grains started or ended at the correct time. |
+ if (!errorCountStart) { |
+ should( |
+ startFrames.length, 'Number of grains that started at the correct time') |
+ .beEqualTo(numberOfTests); |
+ } else { |
+ should( |
+ errorCountStart, 'Number of grains out of ' + numberOfTests + |
+ 'that started at the wrong time') |
+ .beEqualTo(0); |
+ } |
+ |
+ if (!errorCountEnd) { |
+ should(endFrames.length, 'Number of grains that ended at the correct time') |
+ .beEqualTo(numberOfTests); |
+ } else { |
+ should( |
+ errorCountEnd, 'Number of grains out of ' + numberOfTests + |
+ ' that ended at the wrong time') |
+ .beEqualTo(0); |
+ } |
} |