| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> |
| offlineaudiocontext-constructor.html |
| </title> |
| <script src="../../imported/w3c/web-platform-tests/resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../resources/audit.js"></script> |
| </head> |
| <body> |
| <script id="layout-test-code"> |
| let audit = Audit.createTaskRunner(); |
| |
| audit.define( |
| {label: 'test', description: 'OfflineAudioContext constructor'}, |
| (task, should) => { |
| let context; |
| // Make sure we don't crash when giving 0 as number of frames. |
| should( |
| () => new OfflineAudioContext(1, 0, 44100), |
| 'new OfflineAudioContext(1, 0, 44100)') |
| .throw(); |
| // Make sure we don't throw exceptions for supported ranges of |
| // sample rates for an OfflineAudioContext. |
| should( |
| () => context = new OfflineAudioContext(2, 512, 2999), |
| 'context0 = new OfflineAudioContext(2, 512, 2999)') |
| .throw(); |
| should( |
| () => context = new OfflineAudioContext(2, 512, 3000), |
| 'context1 = new OfflineAudioContext(2, 512, 3000)') |
| .notThrow(); |
| should(context.length, 'context1.length').beEqualTo(512); |
| should( |
| () => context = new OfflineAudioContext(2, 1024, 384000), |
| 'context2 = new OfflineAudioContext(2, 1024, 384000)') |
| .notThrow(); |
| should(context.length, 'context2.length').beEqualTo(1024); |
| should( |
| () => context = new OfflineAudioContext(2, 1024, 384001), |
| 'context3 = new OfflineAudioContext(2, 1024, 384001)') |
| .throw(); |
| should( |
| () => context = new OfflineAudioContext(2, 2048, 8000), |
| 'context4 = new OfflineAudioContext(2, 2048, 8000)') |
| .notThrow(); |
| should(context.length, 'context4.length').beEqualTo(2048); |
| should( |
| () => context = new OfflineAudioContext(2, 4096, 11025), |
| 'context5 = new OfflineAudioContext(2, 4096, 11025)') |
| .notThrow(); |
| should(context.length, 'context5.length').beEqualTo(4096); |
| should( |
| () => context = new OfflineAudioContext(2, 512, 22050), |
| 'context6 = new OfflineAudioContext(2, 512, 22050)') |
| .notThrow(); |
| should(context.length, 'context6.length').beEqualTo(512); |
| should( |
| () => context = new OfflineAudioContext(2, 512, 44100), |
| 'context7 = new OfflineAudioContext(2, 512, 44100)') |
| .notThrow(); |
| should(context.length, 'context7.length').beEqualTo(512); |
| should( |
| () => context = new OfflineAudioContext(2, 512, 48000), |
| 'context8 = new OfflineAudioContext(2, 512, 48000)') |
| .notThrow(); |
| should(context.length, 'context8.length').beEqualTo(512); |
| |
| should( |
| () => context = new OfflineAudioContext(2, 512, 88200), |
| 'context9 = new OfflineAudioContext(2, 512, 88200)') |
| .notThrow(); |
| should(context.length, 'context9.length').beEqualTo(512); |
| |
| // Make sure length is read-only. |
| should(() => context.length = 99, 'context9.length = 99') |
| .notThrow(); |
| should(context.length, 'context9.length after illegal setter value') |
| .beEqualTo(512); |
| should( |
| () => context = new OfflineAudioContext(2, 512, 96000), |
| 'context10 = new OfflineAudioContext(2, 512, 96000)') |
| .notThrow(); |
| // Make sure we throw exceptions for non-finite sample rates. |
| should( |
| () => context = new OfflineAudioContext(1, 0, NaN), |
| 'context11 = new OfflineAudioContext(1, 0, NaN)') |
| .throw(); |
| should( |
| () => context = new OfflineAudioContext(1, 0, Infinity), |
| 'context12 = new OfflineAudioContext(1, 0, Infinity)') |
| .throw(); |
| // Verify channel counts and other destination attributes are set |
| // correctly. |
| should( |
| () => context = new OfflineAudioContext(7, 512, 48000), |
| 'context13 = new OfflineAudioContext(7, 512, 48000)') |
| .notThrow(); |
| should( |
| context.destination.channelCount, |
| 'context13.destination.channelCount') |
| .beEqualTo(7); |
| should( |
| context.destination.maxChannelCount, |
| 'context13.destination.maxChannelCount') |
| .beEqualTo(7); |
| should( |
| context.destination.channelCountMode, |
| 'context13.destination.channelCountMode') |
| .beEqualTo('explicit'); |
| should( |
| context.destination.channelInterpretation, |
| 'context13.destination.channelInterpretation') |
| .beEqualTo('speakers'); |
| |
| task.done(); |
| }); |
| |
| audit.run(); |
| </script> |
| </body> |
| </html> |