Fri, 16 Jan 2015 04:50:19 +0100
Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Test repeating audio is not distorted</title>
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
6 <script type="text/javascript" src="webaudio.js"></script>
7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
8 </head>
9 <body>
10 <pre id="test">
11 <script class="testbody" type="text/javascript">
13 function gcd(a, b) {
14 if (b === 0) {
15 return a;
16 }
17 return gcd(b, a % b);
18 }
20 var SAMPLE_PLACEMENT = 128;
22 var gTest = {
23 length: 2048,
24 numberOfChannels: 1,
26 createGraph: function(context) {
27 var freq = Math.round(context.sampleRate / SAMPLE_PLACEMENT);
28 var dur = context.sampleRate / gcd(freq, context.sampleRate);
29 var buffer = context.createBuffer(1, dur, context.sampleRate);
31 for (var i = 0; i < context.sampleRate; ++i) {
32 buffer.getChannelData(0)[i] = Math.sin(freq * 2 * Math.PI * i / context.sampleRate);
33 }
35 var source = context.createBufferSource();
36 source.buffer = buffer;
37 source.loop = true;
38 source.playbackRate.setValueAtTime(0.5, SAMPLE_PLACEMENT / context.sampleRate);
39 source.start(0);
41 return source;
42 },
44 createExpectedBuffers: function(context) {
45 var freq = Math.round(context.sampleRate / SAMPLE_PLACEMENT);
46 var expectedBuffer = context.createBuffer(1, 2048, context.sampleRate);
47 var c = expectedBuffer.getChannelData(0);
48 for (var i = 0; i < c.length; ++i) {
49 if (i < SAMPLE_PLACEMENT) {
50 c[i] = Math.sin(freq * 2 * Math.PI * i / context.sampleRate);
51 } else {
52 c[i] = Math.sin(freq / 2 * 2 * Math.PI * (i + SAMPLE_PLACEMENT) / context.sampleRate);
53 }
54 }
56 return expectedBuffer;
57 },
58 };
60 runTest();
61 </script>
62 </pre>
63 </body>
64 </html>