Skip to content

Commit 2a7716b

Browse files
committed
Add more file loading tests
1 parent 0353689 commit 2a7716b

File tree

2 files changed

+28
-209
lines changed

2 files changed

+28
-209
lines changed

AudioFile.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,7 +1470,7 @@ int16_t AudioSampleConverter<T>::sampleToSixteenBitInt (T sample)
14701470
template <class T>
14711471
uint8_t AudioSampleConverter<T>::sampleToUnsignedByte (T sample)
14721472
{
1473-
if (std::is_floating_point<T>::value)
1473+
if constexpr (std::is_floating_point<T>::value)
14741474
{
14751475
sample = clamp (sample, -1., 1.);
14761476
sample = (sample + 1.) / 2.;
@@ -1507,7 +1507,7 @@ int8_t AudioSampleConverter<T>::sampleToSignedByte (T sample)
15071507
template <class T>
15081508
T AudioSampleConverter<T>::unsignedByteToSample (uint8_t sample)
15091509
{
1510-
if (std::is_floating_point<T>::value)
1510+
if constexpr (std::is_floating_point<T>::value)
15111511
{
15121512
return static_cast<T> (sample - 128) / static_cast<T> (127.);
15131513
}

tests/WavLoadingTests.cpp

Lines changed: 26 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,10 @@ TEST_SUITE ("WavLoadingTests - Floating Point Types - 32-bit File")
288288
TEST_SUITE ("WavLoadingTests - Integer Types - 8-bit file")
289289
{
290290
//=============================================================
291-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_int8_t")
291+
template <typename T>
292+
void test8Bit44100WithInteger()
292293
{
293-
AudioFile<int8_t> audioFile;
294+
AudioFile<T> audioFile;
294295
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
295296

296297
CHECK (loadedOK);
@@ -299,149 +300,38 @@ TEST_SUITE ("WavLoadingTests - Integer Types - 8-bit file")
299300
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
300301
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
301302

302-
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
303-
{
304-
for (int k = 0; k < audioFile.getNumChannels(); k++)
305-
{
306-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127).epsilon (0.01));
307-
}
308-
}
309-
}
310-
311-
//=============================================================
312-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_uint8_t")
313-
{
314-
AudioFile<uint8_t> audioFile;
315-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
316-
317-
CHECK (loadedOK);
318-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_8bit_44100::numSamplesPerChannel);
319-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_8bit_44100::bitDepth);
320-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
321-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
322-
323-
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
324-
{
325-
for (int k = 0; k < audioFile.getNumChannels(); k++)
326-
{
327-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127 + 128).epsilon (0.01));
328-
}
329-
}
330-
}
331-
332-
//=============================================================
333-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_int16_t")
334-
{
335-
AudioFile<int16_t> audioFile;
336-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
337-
338-
CHECK (loadedOK);
339-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_8bit_44100::numSamplesPerChannel);
340-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_8bit_44100::bitDepth);
341-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
342-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
343-
344-
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
345-
{
346-
for (int k = 0; k < audioFile.getNumChannels(); k++)
347-
{
348-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127).epsilon (0.01));
349-
}
350-
}
351-
}
352-
353-
//=============================================================
354-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_uint16_t")
355-
{
356-
AudioFile<uint16_t> audioFile;
357-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
358-
359-
CHECK (loadedOK);
360-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_8bit_44100::numSamplesPerChannel);
361-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_8bit_44100::bitDepth);
362-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
363-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
364-
365-
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
366-
{
367-
for (int k = 0; k < audioFile.getNumChannels(); k++)
368-
{
369-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127 + 128).epsilon (0.01));
370-
}
371-
}
372-
}
373-
374-
//=============================================================
375-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_int32_t")
376-
{
377-
AudioFile<int32_t> audioFile;
378-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
379-
380-
CHECK (loadedOK);
381-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_8bit_44100::numSamplesPerChannel);
382-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_8bit_44100::bitDepth);
383-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
384-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
303+
int offset = std::is_signed_v<T> ? 0 : 128;
385304

386305
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
387306
{
388307
for (int k = 0; k < audioFile.getNumChannels(); k++)
389308
{
390-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127).epsilon (0.01));
309+
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127 + offset).epsilon (0.01));
391310
}
392311
}
393312
}
394-
395313
//=============================================================
396-
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_uint32_t")
314+
TEST_CASE ("WavLoadingTests_Stereo_8bit_44100_integers")
397315
{
398-
AudioFile<uint32_t> audioFile;
399-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_8bit_44100.wav");
400-
401-
CHECK (loadedOK);
402-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_8bit_44100::numSamplesPerChannel);
403-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_8bit_44100::bitDepth);
404-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_8bit_44100::sampleRate);
405-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_8bit_44100::testBuffer.size()));
406-
407-
for (size_t i = 0; i < wav_stereo_8bit_44100::testBuffer[0].size(); i++)
408-
{
409-
for (int k = 0; k < audioFile.getNumChannels(); k++)
410-
{
411-
REQUIRE_EQ (audioFile.samples[k][i], doctest::Approx (wav_stereo_8bit_44100::testBuffer[k][i] * 127 + 128).epsilon (0.01));
412-
}
413-
}
316+
test8Bit44100WithInteger<int8_t>();
317+
test8Bit44100WithInteger<uint8_t>();
318+
test8Bit44100WithInteger<int16_t>();
319+
test8Bit44100WithInteger<uint16_t>();
320+
test8Bit44100WithInteger<int32_t>();
321+
test8Bit44100WithInteger<uint32_t>();
322+
test8Bit44100WithInteger<int64_t>();
323+
test8Bit44100WithInteger<uint64_t>();
414324
}
415325
}
416326

417327
//=============================================================
418328
TEST_SUITE ("WavLoadingTests - Integer Types - 16-bit file")
419329
{
420330
//=============================================================
421-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_int16_t")
331+
template <typename T>
332+
void test16Bit44100WithInteger()
422333
{
423-
AudioFile<int16_t> audioFile;
424-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
425-
426-
CHECK (loadedOK);
427-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_16bit_44100::numSamplesPerChannel);
428-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_16bit_44100::bitDepth);
429-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
430-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
431-
432-
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
433-
{
434-
for (int k = 0; k < audioFile.getNumChannels(); k++)
435-
{
436-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767));
437-
}
438-
}
439-
}
440-
441-
//=============================================================
442-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_uint16_t")
443-
{
444-
AudioFile<uint16_t> audioFile;
334+
AudioFile<T> audioFile;
445335
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
446336

447337
CHECK (loadedOK);
@@ -450,97 +340,26 @@ TEST_SUITE ("WavLoadingTests - Integer Types - 16-bit file")
450340
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
451341
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
452342

453-
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
454-
{
455-
for (int k = 0; k < audioFile.getNumChannels(); k++)
456-
{
457-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767 + 32768));
458-
}
459-
}
460-
}
461-
462-
//=============================================================
463-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_int32_t")
464-
{
465-
AudioFile<int32_t> audioFile;
466-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
467-
468-
CHECK (loadedOK);
469-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_16bit_44100::numSamplesPerChannel);
470-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_16bit_44100::bitDepth);
471-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
472-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
343+
int offset = std::is_signed_v<T> ? 0 : 32768;
473344

474345
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
475346
{
476347
for (int k = 0; k < audioFile.getNumChannels(); k++)
477348
{
478-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767));
349+
REQUIRE_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767 + offset));
479350
}
480351
}
481352
}
482353

483354
//=============================================================
484-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_uint16_t")
355+
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_integers")
485356
{
486-
AudioFile<uint32_t> audioFile;
487-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
488-
489-
CHECK (loadedOK);
490-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_16bit_44100::numSamplesPerChannel);
491-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_16bit_44100::bitDepth);
492-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
493-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
494-
495-
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
496-
{
497-
for (int k = 0; k < audioFile.getNumChannels(); k++)
498-
{
499-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767 + 32768));
500-
}
501-
}
502-
}
503-
504-
//=============================================================
505-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_int64_t")
506-
{
507-
AudioFile<int64_t> audioFile;
508-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
509-
510-
CHECK (loadedOK);
511-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_16bit_44100::numSamplesPerChannel);
512-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_16bit_44100::bitDepth);
513-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
514-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
515-
516-
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
517-
{
518-
for (int k = 0; k < audioFile.getNumChannels(); k++)
519-
{
520-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767));
521-
}
522-
}
523-
}
524-
525-
//=============================================================
526-
TEST_CASE ("WavLoadingTests_Stereo_16bit_44100_uint64_t")
527-
{
528-
AudioFile<uint64_t> audioFile;
529-
bool loadedOK = audioFile.load (projectBuildDirectory + "/test-audio/wav_stereo_16bit_44100.wav");
530-
531-
CHECK (loadedOK);
532-
CHECK_EQ (audioFile.getNumSamplesPerChannel(), wav_stereo_16bit_44100::numSamplesPerChannel);
533-
CHECK_EQ (audioFile.getBitDepth(), wav_stereo_16bit_44100::bitDepth);
534-
CHECK_EQ (audioFile.getSampleRate(), wav_stereo_16bit_44100::sampleRate);
535-
CHECK_EQ (audioFile.getNumChannels(), static_cast<int> (wav_stereo_16bit_44100::testBuffer.size()));
536-
537-
for (size_t i = 0; i < wav_stereo_16bit_44100::testBuffer[0].size(); i++)
538-
{
539-
for (int k = 0; k < audioFile.getNumChannels(); k++)
540-
{
541-
CHECK_EQ (audioFile.samples[k][i], std::round (wav_stereo_16bit_44100::testBuffer[k][i] * 32767 + 32768));
542-
}
543-
}
357+
test16Bit44100WithInteger<int16_t>();
358+
test16Bit44100WithInteger<uint16_t>();
359+
test16Bit44100WithInteger<int32_t>();
360+
test16Bit44100WithInteger<uint32_t>();
361+
test16Bit44100WithInteger<int64_t>();
362+
test16Bit44100WithInteger<uint64_t>();
544363
}
545364
}
546365

0 commit comments

Comments
 (0)