diff --git a/CMakeLists.txt b/CMakeLists.txt index a3216d1..ba61d2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/src/ggwave.cpp b/src/ggwave.cpp index d9f55a2..68bb22d 100644 --- a/src/ggwave.cpp +++ b/src/ggwave.cpp @@ -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; }; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c5af84d..c540a8f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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 $) +add_test(NAME ${TEST_TARGET} COMMAND $) + +# +# 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 $) 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() diff --git a/tests/test-ggwave.c b/tests/test-ggwave.c new file mode 100644 index 0000000..f5521d8 --- /dev/null +++ b/tests/test-ggwave.c @@ -0,0 +1,39 @@ +#include "ggwave/ggwave.h" + +#include +#include +#include + +#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; +}