mirror of
https://github.com/ggerganov/ggwave.git
synced 2026-02-06 16:47:59 +08:00
tests : add C test
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
39
tests/test-ggwave.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user