Skip to content

Commit 70a6006

Browse files
singalsulgirdwood
authored andcommitted
Test: Cmocka: Add unit test for A-law encode and decode
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent b98dbaf commit 70a6006

6 files changed

Lines changed: 2174 additions & 0 deletions

File tree

test/cmocka/src/math/arithmetic/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,13 @@ cmocka_test(base_e_logarithm
3131
${PROJECT_SOURCE_DIR}/src/math/log_e.c
3232
${PROJECT_SOURCE_DIR}/src/math/base2log.c
3333
)
34+
35+
cmocka_test(a_law_codec
36+
a_law_codec.c
37+
${PROJECT_SOURCE_DIR}/src/math/a_law.c
38+
)
39+
40+
cmocka_test(mu_law_codec
41+
mu_law_codec.c
42+
${PROJECT_SOURCE_DIR}/src/math/mu_law.c
43+
)
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// SPDX-License-Identifier: BSD-3-Clause
2+
//
3+
// Copyright(c) 2025 Intel Corporation.
4+
5+
#include <stdio.h>
6+
#include <stdint.h>
7+
#include <setjmp.h>
8+
#include <stdbool.h>
9+
#include <cmocka.h>
10+
#include <sof/math/a_law.h>
11+
12+
#include "ref_chirp_mono_8k_s16.h"
13+
#include "a_law_codec.h"
14+
15+
static void test_a_law_encode(void **state)
16+
{
17+
(void)state;
18+
19+
uint8_t a_law_sample, a_law_ref;
20+
int i;
21+
22+
for (i = 0; i < REF_DATA_SAMPLE_COUNT; i++) {
23+
a_law_sample = sofm_a_law_encode(chirp_mono_8k_s16[i]);
24+
a_law_ref = ref_alaw_enc_data[i];
25+
26+
if (a_law_sample != a_law_ref) {
27+
printf("%s: difference found at %d, encoded %d, ref %d, lin %d\n",
28+
__func__, i, a_law_sample, a_law_ref, chirp_mono_8k_s16[i]);
29+
assert_true(false);
30+
}
31+
}
32+
}
33+
34+
static void test_a_law_decode(void **state)
35+
{
36+
(void)state;
37+
38+
int16_t s16_sample, s16_ref;
39+
int i;
40+
41+
for (i = 0; i < REF_DATA_SAMPLE_COUNT; i++) {
42+
s16_sample = sofm_a_law_decode(ref_alaw_enc_data[i]);
43+
s16_ref = ref_alaw_dec_data[i];
44+
if (s16_sample != s16_ref) {
45+
printf("%s: difference found at %d, decoded %d, ref %d\n",
46+
__func__, i, s16_sample, s16_ref);
47+
assert_true(false);
48+
}
49+
}
50+
}
51+
52+
int main(void)
53+
{
54+
const struct CMUnitTest tests[] = {
55+
cmocka_unit_test(test_a_law_encode),
56+
cmocka_unit_test(test_a_law_decode),
57+
};
58+
59+
cmocka_set_message_output(CM_OUTPUT_TAP);
60+
61+
return cmocka_run_group_tests(tests, NULL, NULL);
62+
}

0 commit comments

Comments
 (0)