diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /media/libcubeb/test/test_ring_array.cpp | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'media/libcubeb/test/test_ring_array.cpp')
-rw-r--r-- | media/libcubeb/test/test_ring_array.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/media/libcubeb/test/test_ring_array.cpp b/media/libcubeb/test/test_ring_array.cpp new file mode 100644 index 0000000000..d258d50dbe --- /dev/null +++ b/media/libcubeb/test/test_ring_array.cpp @@ -0,0 +1,73 @@ +#include "gtest/gtest.h" +#ifdef __APPLE__ +#include <string.h> +#include <iostream> +#include <CoreAudio/CoreAudioTypes.h> +#include "cubeb/cubeb.h" +#include "cubeb_ring_array.h" + +TEST(cubeb, ring_array) +{ + ring_array ra; + + ASSERT_EQ(ring_array_init(&ra, 0, 0, 1, 1), CUBEB_ERROR_INVALID_PARAMETER); + ASSERT_EQ(ring_array_init(&ra, 1, 0, 0, 1), CUBEB_ERROR_INVALID_PARAMETER); + + unsigned int capacity = 8; + ring_array_init(&ra, capacity, sizeof(int), 1, 1); + int verify_data[capacity] ;// {1,2,3,4,5,6,7,8}; + AudioBuffer * p_data = NULL; + + for (unsigned int i = 0; i < capacity; ++i) { + verify_data[i] = i; // in case capacity change value + *(int*)ra.buffer_array[i].mData = i; + ASSERT_EQ(ra.buffer_array[i].mDataByteSize, sizeof(int)); + ASSERT_EQ(ra.buffer_array[i].mNumberChannels, 1u); + } + + /* Get store buffers*/ + for (unsigned int i = 0; i < capacity; ++i) { + p_data = ring_array_get_free_buffer(&ra); + ASSERT_NE(p_data, nullptr); + ASSERT_EQ(*(int*)p_data->mData, verify_data[i]); + } + /*Now array is full extra store should give NULL*/ + ASSERT_EQ(ring_array_get_free_buffer(&ra), nullptr); + /* Get fetch buffers*/ + for (unsigned int i = 0; i < capacity; ++i) { + p_data = ring_array_get_data_buffer(&ra); + ASSERT_NE(p_data, nullptr); + ASSERT_EQ(*(int*)p_data->mData, verify_data[i]); + } + /*Now array is empty extra fetch should give NULL*/ + ASSERT_EQ(ring_array_get_data_buffer(&ra), nullptr); + + p_data = NULL; + /* Repeated store fetch should can go for ever*/ + for (unsigned int i = 0; i < 2*capacity; ++i) { + p_data = ring_array_get_free_buffer(&ra); + ASSERT_NE(p_data, nullptr); + ASSERT_EQ(ring_array_get_data_buffer(&ra), p_data); + } + + p_data = NULL; + /* Verify/modify buffer data*/ + for (unsigned int i = 0; i < capacity; ++i) { + p_data = ring_array_get_free_buffer(&ra); + ASSERT_NE(p_data, nullptr); + ASSERT_EQ(*((int*)p_data->mData), verify_data[i]); + (*((int*)p_data->mData))++; // Modify data + } + for (unsigned int i = 0; i < capacity; ++i) { + p_data = ring_array_get_data_buffer(&ra); + ASSERT_NE(p_data, nullptr); + ASSERT_EQ(*((int*)p_data->mData), verify_data[i]+1); // Verify modified data + } + + ring_array_destroy(&ra); +} +#else +TEST(cubeb, DISABLED_ring_array) +{ +} +#endif |