Skip to content

Commit 39db0d4

Browse files
committed
Test: Cmocka: Add unit test for A-law encode and decode
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent eb00f20 commit 39db0d4

3 files changed

Lines changed: 1283 additions & 0 deletions

File tree

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ 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+
)
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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 "a_law_codec.h"
13+
14+
static void test_a_law_encode(void **state)
15+
{
16+
(void)state;
17+
18+
uint8_t a_law_sample, a_law_ref;
19+
int i;
20+
21+
for (i = 0; i < A_LAW_SAMPLES_COUNT; i++) {
22+
a_law_sample = sofm_a_law_encode(chirp_8k_s16[i]);
23+
a_law_ref = chirp_8k_alaw[i];
24+
25+
if (a_law_sample != a_law_ref) {
26+
printf("%s: difference found at %d, encoded %d, ref %d\n",
27+
__func__, i, a_law_sample, a_law_ref);
28+
assert_true(false);
29+
}
30+
}
31+
}
32+
33+
static void test_a_law_decode(void **state)
34+
{
35+
(void)state;
36+
37+
int16_t s16_sample, s16_ref;
38+
int i;
39+
40+
for (i = 0; i < A_LAW_SAMPLES_COUNT; i++) {
41+
s16_sample = sofm_a_law_decode(chirp_8k_alaw[i]);
42+
s16_ref = chirp_8k_alaw_to_s16[i];
43+
if (s16_sample != s16_ref) {
44+
printf("%s: difference found at %d, decoded %d, ref %d\n",
45+
__func__, i, s16_sample, s16_ref);
46+
assert_true(false);
47+
}
48+
}
49+
}
50+
51+
int main(void)
52+
{
53+
const struct CMUnitTest tests[] = {
54+
cmocka_unit_test(test_a_law_encode),
55+
cmocka_unit_test(test_a_law_decode),
56+
};
57+
58+
cmocka_set_message_output(CM_OUTPUT_TAP);
59+
60+
return cmocka_run_group_tests(tests, NULL, NULL);
61+
}

0 commit comments

Comments
 (0)