blob: d3989ebfd2e7589457d752f8a86c501918be09c7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
Create an oscillator of each type and verify that the type is set correctly.
-->
<html>
<head>
<link rel="stylesheet" href="../fast/js/resources/js-test-style.css"/>
<script type="text/javascript" src="resources/audio-testing.js"></script>
<script type="text/javascript" src="../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description("Basic test of setting Oscillator node types.");
var sampleRate = 44100;
var renderLengthSeconds = 0.25;
var oscTypes = [{type: 0, name: "SINE"},
{type: 1, name: "SQUARE"},
{type: 2, name: "SAWTOOTH"},
{type: 3, name: "TRIANGLE"},
{type: 4, name: "CUSTOM"}];
function runTest()
{
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
window.jsTestIsAsync = true;
// Create offline audio context.
var context = new webkitAudioContext(2, sampleRate * renderLengthSeconds, sampleRate);
var osc = context.createOscillator();
// Set each possible oscillator type (except CUSTOM) and verify that the type is correct.
for (var k = 0; k < oscTypes.length - 1; ++k) {
osc.type = oscTypes[k].type
if (osc.type == oscTypes[k].type)
testPassed("Oscillator correctly set to " + oscTypes[k].name + " type.");
else
testFailed("Oscillator set to " + oscTypes[k].name + " type, but returns " + oscTypes[osc.type].name + " type.");
}
// Now set a custom oscillator
var coeffA = new Float32Array([0, 1, 0.5]);
var coeffB = new Float32Array([0, 0, 0]);
var wavetable = context.createWaveTable(coeffA, coeffB);
osc.setWaveTable(wavetable);
if (osc.type == osc.CUSTOM)
testPassed("Oscillator correctly set to CUSTOM type using setWaveTable.");
else
testFailed("Oscillator set to CUSTOM type, but returns " + oscTypes[osc.type].name + " type.");
// Try setting some invalid types
try {
osc.type = osc.CUSTOM;
testFailed("Directly setting oscillator type to CUSTOM did not throw exception.");
} catch (e) {
testPassed("Directly setting oscillator type to CUSTOM correctly throws exception.");
}
var oscType = osc.CUSTOM + 1;
try {
osc.type = oscType;
testFailed("Setting oscillator to invalid type " + oscType + " did not throw exception.");
} catch (e) {
testPassed("Setting oscillator to invalid type " + oscType + " correctly throws exception.");
}
finishJSTest();
}
runTest();
successfullyParsed = true;
</script>
<script src="../fast/js/resources/js-test-post.js"></script>
</body>
</html>