(name: string)
| 108 | }); |
| 109 | |
| 110 | async function testVorbisFile(name: string) { |
| 111 | const data = await TestPlatform.loadFile(`test-data/audio/${name}.ogg`); |
| 112 | const vorbis = new VorbisFile(ByteBuffer.fromBuffer(data)); |
| 113 | |
| 114 | expect(vorbis.streams.length).toBe(1); |
| 115 | expect(vorbis.streams[0].audioChannels).toBe(2); |
| 116 | expect(vorbis.streams[0].audioSampleRate).toBe(44100); |
| 117 | expect(vorbis.streams[0].samples.length).toBeGreaterThan(44100 * 0.05); |
| 118 | |
| 119 | const generated = vorbis.streams[0].samples; |
| 120 | const reference = new DataView((await TestPlatform.loadFile(`test-data/audio/${name}_alphaTab.pcm`)).buffer); |
| 121 | try { |
| 122 | expect(generated.length).toBe(reference.buffer.byteLength / 4); |
| 123 | |
| 124 | for (let i = 0; i < generated.length; i++) { |
| 125 | expect(generated[i], `Difference at index ${i}`).toBe(reference.getFloat32(i * 4, true)); |
| 126 | } |
| 127 | } catch (e) { |
| 128 | await TestPlatform.saveFile( |
| 129 | `test-data/audio/${name}_alphaTab_new.pcm`, |
| 130 | new Uint8Array(vorbis.streams[0].samples.buffer) |
| 131 | ); |
| 132 | |
| 133 | throw e; |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | it('ogg-vorbis-short', async () => { |
| 138 | await testVorbisFile('Short'); |
no test coverage detected