Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html

Issue 2635223004: Convert AudioBufferSource sample-accurate-scheduling to testharness (Closed)
Patch Set: Address review comments Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html
diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html b/third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html
index 4dc1a7d0d9387e7997c33d78294dccfe0b283cbe..faa4f5b47e93be9a1c69b7dac741b1e8dc5f637e 100644
--- a/third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling.html
@@ -7,127 +7,106 @@ We use an impulse so we can tell exactly where the rendering is happening.
<html>
<head>
-<script src="../../resources/js-test.js"></script>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
-<script src="../resources/audio-testing.js"></script>
-<script type="text/javascript" src="../resources/buffer-loader.js"></script>
+<script src="../resources/audit.js"></script>
+<script src="../resources/buffer-loader.js"></script>
</head>
<body>
-<div id="description"></div>
-<div id="console"></div>
-
<script>
-description("Tests sample-accurate scheduling.");
+let audit = Audit.createTaskRunner();
-var sampleRate = 44100.0;
-var lengthInSeconds = 4;
+let sampleRate = 44100.0;
+let lengthInSeconds = 4;
-var context = 0;
-var bufferLoader = 0;
-var impulse;
+let context = 0;
+let bufferLoader = 0;
+let impulse;
// See if we can render at exactly these sample offsets.
-var sampleOffsets = [0, 3, 512, 517, 1000, 1005, 20000, 21234, 37590];
+let sampleOffsets = [0, 3, 512, 517, 1000, 1005, 20000, 21234, 37590];
function createImpulse() {
// An impulse has a value of 1 at time 0, and is otherwise 0.
impulse = context.createBuffer(2, 512, sampleRate);
- var sampleDataL = impulse.getChannelData(0);
- var sampleDataR = impulse.getChannelData(1);
+ let sampleDataL = impulse.getChannelData(0);
+ let sampleDataR = impulse.getChannelData(1);
sampleDataL[0] = 1.0;
sampleDataR[0] = 1.0;
}
function playNote(time) {
- var bufferSource = context.createBufferSource();
+ let bufferSource = context.createBufferSource();
bufferSource.buffer = impulse;
bufferSource.connect(context.destination);
bufferSource.start(time);
}
-function checkSampleAccuracy(event) {
- var buffer = event.renderedBuffer;
+function checkSampleAccuracy(buffer, should) {
+ let bufferDataL = buffer.getChannelData(0);
+ let bufferDataR = buffer.getChannelData(1);
- var bufferDataL = buffer.getChannelData(0);
- var bufferDataR = buffer.getChannelData(1);
+ let impulseCount = 0;
+ let badOffsetCount = 0;
- var success = true;
- var impulseCount = 0;
- var badOffsetCount = false;
-
- // Go through every sample and make sure it's 0, except at positions in sampleOffsets.
- for (var i = 0; i < buffer.length; ++i) {
- // Make sure left == right
- if (bufferDataL[i] != bufferDataR[i]) {
- testFailed("Rendered buffer left and right channels are not identical.");
- success = false;
- break;
- }
-
+ // Left and right channels must be the same.
+ should(bufferDataL, "Content of left and right channels match and")
+ .beEqualToArray(bufferDataR);
+
+ // Go through every sample and make sure it's 0, except at positions in
+ // sampleOffsets.
+ for (let i = 0; i < buffer.length; ++i) {
if (bufferDataL[i] != 0) {
// Make sure this index is in sampleOffsets
- var found = false;
- for (var j = 0; j < sampleOffsets.length; ++j) {
+ let found = false;
+ for (let j = 0; j < sampleOffsets.length; ++j) {
if (sampleOffsets[j] == i) {
found = true;
break;
}
}
++impulseCount;
+ should(found, "Non-zero sample found at sample offset " + i)
+ .beTrue();
if (!found) {
- testFailed("Non-zero sample found at sample offset " + i);
- success = false;
++badOffsetCount;
}
}
}
- if (impulseCount == sampleOffsets.length) {
- if (badOffsetCount == 0) {
- testPassed("Expected number of events found.");
- } else {
- testFailed("Expected number of events found, but " + badOffsetCount + " are at incorrect offsets.");
- success = false;
- }
- } else {
- testFailed("Expected " + sampleOffsets.length + " impulses but only found " + impulseCount);
- success = false;
- }
+ should(impulseCount, "Number of impulses found")
+ .beEqualTo(sampleOffsets.length);
- if (success) {
- testPassed("All events rendered with sample-accuracy.");
- } else {
- testFailed("Events NOT rendered with sample-accuracy.");
+ if (impulseCount == sampleOffsets.length) {
+ should(badOffsetCount, "bad offset")
+ .beEqualTo(0);
}
-
- finishJSTest();
}
-function runTest() {
- if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.waitUntilDone();
- }
-
- window.jsTestIsAsync = true;
-
+audit.define("test", function (task, should) {
+ task.describe("Test sample-accurate scheduling");
+
// Create offline audio context.
- context = new OfflineAudioContext(2, sampleRate * lengthInSeconds, sampleRate);
- createImpulse();
+ context = new OfflineAudioContext(2, sampleRate * lengthInSeconds,
+ sampleRate);
+ createImpulse();
- for (var i = 0; i < sampleOffsets.length; ++i) {
- var timeInSeconds = sampleOffsets[i] / sampleRate;
+ for (let i = 0; i < sampleOffsets.length; ++i) {
+ let timeInSeconds = sampleOffsets[i] / sampleRate;
playNote(timeInSeconds);
}
- context.oncomplete = checkSampleAccuracy;
- context.startRendering();
-}
-
-runTest();
-
+ context.startRendering()
+ .then(function (buffer) {
+ checkSampleAccuracy(buffer, should);
+ task.done();
+ });
+});
+
+audit.run();
</script>
</body>
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/AudioBufferSource/sample-accurate-scheduling-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698