tests : add C test

This commit is contained in:
Georgi Gerganov
2021-01-23 14:25:18 +02:00
parent 3462383b07
commit f245b6e930
4 changed files with 70 additions and 7 deletions

View File

@@ -1,25 +1,47 @@
if (EMSCRIPTEN)
return()
endif()
#
# test-ggwave-c
set(TEST_TARGET test-ggwave)
set(TEST_TARGET test-ggwave-c)
add_executable(${TEST_TARGET}
${TEST_TARGET}.cpp
test-ggwave.c
)
target_link_libraries(${TEST_TARGET} PRIVATE
ggwave
)
add_test(NAME ${TEST_TARGET}-cpp COMMAND $<TARGET_FILE:${TEST_TARGET}>)
add_test(NAME ${TEST_TARGET} COMMAND $<TARGET_FILE:${TEST_TARGET}>)
#
# test-ggwave-cpp
set(TEST_TARGET test-ggwave-cpp)
add_executable(${TEST_TARGET}
test-ggwave.cpp
)
target_link_libraries(${TEST_TARGET} PRIVATE
ggwave
)
add_test(NAME ${TEST_TARGET} COMMAND $<TARGET_FILE:${TEST_TARGET}>)
if (GGWAVE_SUPPORT_PYTHON)
add_test(NAME ${TEST_TARGET}-py
#
# test-ggwave-py
set(TEST_TARGET test-ggwave-py)
add_test(NAME ${TEST_TARGET}
COMMAND python test-ggwave.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_tests_properties(${TEST_TARGET}-py
set_tests_properties(${TEST_TARGET}
PROPERTIES ENVIRONMENT "PYTHONPATH=${PROJECT_SOURCE_DIR}/bindings/python")
endif()

39
tests/test-ggwave.c Normal file
View File

@@ -0,0 +1,39 @@
#include "ggwave/ggwave.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHECK(cond) \
if (!(cond)) { \
fprintf(stderr, "[%s:%d] Check failed: %s\n", __FILE__, __LINE__, #cond); \
exit(1); \
}
#define CHECK_T(cond) CHECK(cond)
#define CHECK_F(cond) CHECK(!(cond))
int main() {
ggwave_Parameters parameters = ggwave_getDefaultParameters();
parameters.sampleFormatIn = GGWAVE_SAMPLE_FORMAT_I16;
parameters.sampleFormatOut = GGWAVE_SAMPLE_FORMAT_I16;
ggwave_Instance instance = ggwave_init(parameters);
int ret;
char waveform[1024*1024];
const char * payload = "test";
char decoded[256];
ret = ggwave_encode(instance, payload, 4, GGWAVE_TX_PROTOCOL_AUDIBLE_FAST, 50, waveform);
CHECK(ret > 0);
ret = ggwave_decode(instance, waveform, sizeof(int16_t)*ret, decoded);
CHECK(ret == 4);
CHECK(strcmp(decoded, payload) == 0);
ggwave_free(instance);
return 0;
}