Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
miniaudio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
miniaudio
Commits
e04da509
Commit
e04da509
authored
Feb 22, 2020
by
David Reid
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add generation tests.
parent
619b94c3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
462 additions
and
0 deletions
+462
-0
tests/_build/bin/output/DO_NOT_DELETE
tests/_build/bin/output/DO_NOT_DELETE
+0
-0
tests/test_generation/ma_test_generation.c
tests/test_generation/ma_test_generation.c
+97
-0
tests/test_generation/ma_test_generation_noise.c
tests/test_generation/ma_test_generation_noise.c
+121
-0
tests/test_generation/ma_test_generation_waveform.c
tests/test_generation/ma_test_generation_waveform.c
+244
-0
No files found.
tests/_build/bin/output/DO_NOT_DELETE
0 → 100644
View file @
e04da509
tests/test_generation/ma_test_generation.c
0 → 100644
View file @
e04da509
#define MINIAUDIO_IMPLEMENTATION
#include "../../miniaudio.h"
#define DR_WAV_IMPLEMENTATION
#include "../../extras/dr_wav.h"
#include <stdio.h>
static
drwav_data_format
drwav_data_format_from_minaudio_format
(
ma_format
format
,
ma_uint32
channels
,
ma_uint32
sampleRate
)
{
drwav_data_format
wavFormat
;
wavFormat
.
container
=
drwav_container_riff
;
wavFormat
.
channels
=
channels
;
wavFormat
.
sampleRate
=
sampleRate
;
wavFormat
.
bitsPerSample
=
ma_get_bytes_per_sample
(
format
)
*
8
;
if
(
format
==
ma_format_f32
)
{
wavFormat
.
format
=
DR_WAVE_FORMAT_IEEE_FLOAT
;
}
else
{
wavFormat
.
format
=
DR_WAVE_FORMAT_PCM
;
}
return
wavFormat
;
}
#include "ma_test_generation_noise.c"
#include "ma_test_generation_waveform.c"
#define MAX_TESTS 64
typedef
int
(
*
ma_test_entry_proc
)(
int
argc
,
char
**
argv
);
typedef
struct
{
const
char
*
pName
;
ma_test_entry_proc
onEntry
;
}
ma_test
;
struct
{
ma_test
pTests
[
MAX_TESTS
];
size_t
count
;
}
g_Tests
;
ma_result
ma_register_test
(
const
char
*
pName
,
ma_test_entry_proc
onEntry
)
{
MA_ASSERT
(
pName
!=
NULL
);
MA_ASSERT
(
onEntry
!=
NULL
);
if
(
g_Tests
.
count
>=
MAX_TESTS
)
{
printf
(
"Failed to register test %s because there are too many tests already registered. Increase the value of MAX_TESTS
\n
"
,
pName
);
return
MA_INVALID_OPERATION
;
}
g_Tests
.
pTests
[
g_Tests
.
count
].
pName
=
pName
;
g_Tests
.
pTests
[
g_Tests
.
count
].
onEntry
=
onEntry
;
g_Tests
.
count
+=
1
;
return
MA_SUCCESS
;
}
int
main
(
int
argc
,
char
**
argv
)
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
size_t
iTest
;
(
void
)
argc
;
(
void
)
argv
;
result
=
ma_register_test
(
"Noise"
,
test_entry__noise
);
if
(
result
!=
MA_SUCCESS
)
{
return
result
;
}
result
=
ma_register_test
(
"Waveform"
,
test_entry__waveform
);
if
(
result
!=
MA_SUCCESS
)
{
return
result
;
}
for
(
iTest
=
0
;
iTest
<
g_Tests
.
count
;
iTest
+=
1
)
{
printf
(
"=== BEGIN %s ===
\n
"
,
g_Tests
.
pTests
[
iTest
].
pName
);
result
=
g_Tests
.
pTests
[
iTest
].
onEntry
(
argc
,
argv
);
printf
(
"=== END %s : %s ===
\n
"
,
g_Tests
.
pTests
[
iTest
].
pName
,
(
result
==
0
)
?
"PASSED"
:
"FAILED"
);
if
(
result
!=
0
)
{
hasError
=
MA_TRUE
;
}
}
if
(
hasError
)
{
return
-
1
;
/* Something failed. */
}
else
{
return
0
;
/* Everything passed. */
}
}
tests/test_generation/ma_test_generation_noise.c
0 → 100644
View file @
e04da509
static
drwav_data_format
drwav_data_format_from_noise_config
(
const
ma_noise_config
*
pNoiseConfig
)
{
MA_ASSERT
(
pNoiseConfig
!=
NULL
);
return
drwav_data_format_from_minaudio_format
(
pNoiseConfig
->
format
,
pNoiseConfig
->
channels
,
48000
);
}
ma_result
test_noise__by_format_and_type
(
ma_format
format
,
ma_waveform_type
type
,
const
char
*
pFileName
)
{
ma_result
result
;
ma_noise_config
noiseConfig
;
ma_noise
noise
;
drwav_data_format
wavFormat
;
drwav
wav
;
ma_uint32
iFrame
;
printf
(
" %s
\n
"
,
pFileName
);
noiseConfig
=
ma_noise_config_init
(
format
,
2
,
type
,
0
,
0
.
1
);
result
=
ma_noise_init
(
&
noiseConfig
,
&
noise
);
if
(
result
!=
MA_SUCCESS
)
{
return
result
;
}
wavFormat
=
drwav_data_format_from_noise_config
(
&
noiseConfig
);
if
(
!
drwav_init_file_write
(
&
wav
,
pFileName
,
&
wavFormat
,
NULL
))
{
return
MA_ERROR
;
/* Could not open file for writing. */
}
/* We'll do a few seconds of data. */
for
(
iFrame
=
0
;
iFrame
<
wavFormat
.
sampleRate
*
10
;
iFrame
+=
1
)
{
ma_uint8
temp
[
1024
];
ma_noise_read_pcm_frames
(
&
noise
,
temp
,
1
);
drwav_write_pcm_frames
(
&
wav
,
1
,
temp
);
}
drwav_uninit
(
&
wav
);
return
MA_SUCCESS
;
}
ma_result
test_noise__f32
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
result
=
test_noise__by_format_and_type
(
ma_format_f32
,
ma_noise_type_white
,
"output/noise_f32_white.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
ma_result
test_noise__s16
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
result
=
test_noise__by_format_and_type
(
ma_format_s16
,
ma_noise_type_white
,
"output/noise_s16_white.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
ma_result
test_noise__u8
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
result
=
test_noise__by_format_and_type
(
ma_format_u8
,
ma_noise_type_white
,
"output/noise_u8_white.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
int
test_entry__noise
(
int
argc
,
char
**
argv
)
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
(
void
)
argc
;
(
void
)
argv
;
result
=
test_noise__f32
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_noise__s16
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_noise__u8
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
-
1
;
}
else
{
return
0
;
}
}
tests/test_generation/ma_test_generation_waveform.c
0 → 100644
View file @
e04da509
static
drwav_data_format
drwav_data_format_from_waveform_config
(
const
ma_waveform_config
*
pWaveformConfig
)
{
MA_ASSERT
(
pWaveformConfig
!=
NULL
);
return
drwav_data_format_from_minaudio_format
(
pWaveformConfig
->
format
,
pWaveformConfig
->
channels
,
pWaveformConfig
->
sampleRate
);
}
ma_result
test_waveform__by_format_and_type
(
ma_format
format
,
ma_waveform_type
type
,
double
amplitude
,
const
char
*
pFileName
)
{
ma_result
result
;
ma_waveform_config
waveformConfig
;
ma_waveform
waveform
;
drwav_data_format
wavFormat
;
drwav
wav
;
ma_uint32
iFrame
;
printf
(
" %s
\n
"
,
pFileName
);
waveformConfig
=
ma_waveform_config_init
(
format
,
2
,
48000
,
type
,
amplitude
,
220
);
result
=
ma_waveform_init
(
&
waveformConfig
,
&
waveform
);
if
(
result
!=
MA_SUCCESS
)
{
return
result
;
}
wavFormat
=
drwav_data_format_from_waveform_config
(
&
waveformConfig
);
if
(
!
drwav_init_file_write
(
&
wav
,
pFileName
,
&
wavFormat
,
NULL
))
{
return
MA_ERROR
;
/* Could not open file for writing. */
}
/* We'll do a few seconds of data. */
for
(
iFrame
=
0
;
iFrame
<
wavFormat
.
sampleRate
*
10
;
iFrame
+=
1
)
{
float
temp
[
MA_MAX_CHANNELS
];
ma_waveform_read_pcm_frames
(
&
waveform
,
temp
,
1
);
drwav_write_pcm_frames
(
&
wav
,
1
,
temp
);
}
drwav_uninit
(
&
wav
);
return
MA_SUCCESS
;
}
ma_result
test_waveform__f32
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
double
amplitude
=
0
.
2
;
/* Sine */
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_sine
,
+
amplitude
,
"output/waveform_f32_sine.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_sine
,
-
amplitude
,
"output/waveform_f32_sine_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Square */
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_square
,
+
amplitude
,
"output/waveform_f32_square.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_square
,
-
amplitude
,
"output/waveform_f32_square_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Triangle */
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_triangle
,
+
amplitude
,
"output/waveform_f32_triangle.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_triangle
,
-
amplitude
,
"output/waveform_f32_triangle_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Sawtooth */
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_sawtooth
,
+
amplitude
,
"output/waveform_f32_sawtooth.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_f32
,
ma_waveform_type_sawtooth
,
-
amplitude
,
"output/waveform_f32_sawtooth_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
ma_result
test_waveform__s16
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
double
amplitude
=
0
.
2
;
/* Sine */
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_sine
,
+
amplitude
,
"output/waveform_s16_sine.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_sine
,
-
amplitude
,
"output/waveform_s16_sine_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Square */
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_square
,
+
amplitude
,
"output/waveform_s16_square.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_square
,
-
amplitude
,
"output/waveform_s16_square_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Triangle */
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_triangle
,
+
amplitude
,
"output/waveform_s16_triangle.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_triangle
,
-
amplitude
,
"output/waveform_s16_triangle_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Sawtooth */
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_sawtooth
,
+
amplitude
,
"output/waveform_s16_sawtooth.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_s16
,
ma_waveform_type_sawtooth
,
-
amplitude
,
"output/waveform_s16_sawtooth_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
ma_result
test_waveform__u8
()
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
double
amplitude
=
0
.
2
;
/* Sine */
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_sine
,
+
amplitude
,
"output/waveform_u8_sine.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_sine
,
-
amplitude
,
"output/waveform_u8_sine_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Square */
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_square
,
+
amplitude
,
"output/waveform_u8_square.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_square
,
-
amplitude
,
"output/waveform_u8_square_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Triangle */
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_triangle
,
+
amplitude
,
"output/waveform_u8_triangle.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_triangle
,
-
amplitude
,
"output/waveform_u8_triangle_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
/* Sawtooth */
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_sawtooth
,
+
amplitude
,
"output/waveform_u8_sawtooth.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__by_format_and_type
(
ma_format_u8
,
ma_waveform_type_sawtooth
,
-
amplitude
,
"output/waveform_u8_sawtooth_neg.wav"
);
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
MA_ERROR
;
}
else
{
return
MA_SUCCESS
;
}
}
int
test_entry__waveform
(
int
argc
,
char
**
argv
)
{
ma_result
result
;
ma_bool32
hasError
=
MA_FALSE
;
(
void
)
argc
;
(
void
)
argv
;
result
=
test_waveform__f32
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__s16
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
result
=
test_waveform__u8
();
if
(
result
!=
MA_SUCCESS
)
{
hasError
=
MA_TRUE
;
}
if
(
hasError
)
{
return
-
1
;
}
else
{
return
0
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment