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

@@ -64,6 +64,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (GGWAVE_ALL_WARNINGS)
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
else()
# todo : windows

View File

@@ -30,8 +30,8 @@ ggwave_Instance ggwave_init(const ggwave_Parameters parameters) {
parameters.sampleRateIn,
parameters.sampleRateOut,
parameters.samplesPerFrame,
GGWAVE_SAMPLE_FORMAT_F32,
GGWAVE_SAMPLE_FORMAT_I16});
parameters.sampleFormatIn,
parameters.sampleFormatOut});
return curId++;
}
@@ -92,6 +92,7 @@ int ggwave_decode(
std::copy(dataBuffer, dataBuffer + nCopied, (char *) data);
dataSize -= nCopied;
dataBuffer += nCopied;
return nCopied;
};

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;
}