diff --git a/packages/react-native-audio-api/common/cpp/test/RunCoverage.sh b/packages/react-native-audio-api/common/cpp/test/RunCoverage.sh index e7b50aeca..cd9da290c 100755 --- a/packages/react-native-audio-api/common/cpp/test/RunCoverage.sh +++ b/packages/react-native-audio-api/common/cpp/test/RunCoverage.sh @@ -76,7 +76,7 @@ coverage_report="$("$LLVM_COV" report \ --instr-profile="$PROFDATA_FILE" \ --ignore-filename-regex="$IGNORE_FILENAME_REGEX")" -echo "$coverage_report" +echo "$coverage_report" | tee "$BUILD_DIR/llvm-cov-report.txt" if [[ -n "${GITHUB_STEP_SUMMARY:-}" ]]; then { diff --git a/packages/react-native-audio-api/common/cpp/test/src/core/analysis/AnalyserNodeTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/core/analysis/AnalyserNodeTest.cpp new file mode 100644 index 000000000..4cff5f421 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/core/analysis/AnalyserNodeTest.cpp @@ -0,0 +1,20 @@ +#include +#include +#include +#include +#include + +#include + +namespace audioapi::test { + +TEST(AnalyserNodeTest, TrivialConstruct) { + auto registry = std::make_shared(); + constexpr size_t LENGTH = 128; + constexpr float SAMPLE_RATE = 44100.0f; + auto context = std::make_shared(2, LENGTH, SAMPLE_RATE, registry); + AnalyserNode analyser(context, AnalyserOptions{}); + EXPECT_EQ(analyser.getFFTSize(), AnalyserOptions::kDefaultFftSize); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/core/sources/RecorderAdapterNodeTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/core/sources/RecorderAdapterNodeTest.cpp new file mode 100644 index 000000000..eae9b5df5 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/core/sources/RecorderAdapterNodeTest.cpp @@ -0,0 +1,18 @@ +#include +#include +#include +#include + +#include + +namespace audioapi::test { + +TEST(RecorderAdapterNodeTest, TrivialConstructAndInit) { + auto registry = std::make_shared(); + auto context = std::make_shared(2, 128, 44100.0f, registry); + RecorderAdapterNode adapter(context); + adapter.init(256, 1, 44100.0f); + adapter.adapterCleanup(); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/core/utils/RotatingFileWriterTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/core/utils/RotatingFileWriterTest.cpp new file mode 100644 index 000000000..ac0cfa457 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/core/utils/RotatingFileWriterTest.cpp @@ -0,0 +1,13 @@ +#include +#include + +#include + +namespace audioapi::test { + +TEST(RotatingFileWriterTest, TrivialConstruct) { + RotatingFileWriter writer(1024, [](const auto &) { return nullptr; }, [](const std::string &) {}); + SUCCEED(); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/core/utils/param/ParamControlQueueTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/core/utils/param/ParamControlQueueTest.cpp new file mode 100644 index 000000000..874ca341f --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/core/utils/param/ParamControlQueueTest.cpp @@ -0,0 +1,15 @@ +#include +#include +#include +#include + +namespace audioapi::test { + +TEST(ParamControlQueueTest, TrivialConstructAndPurge) { + ParamControlQueue queue; + ParamEvent event(ParamEventType::SET_VALUE, 0.0); + EXPECT_TRUE(queue.checkCurveExclusion(event).is_ok()); + queue.purge(0.0); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/graph/HostNodeTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/graph/HostNodeTest.cpp new file mode 100644 index 000000000..c7060d851 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/graph/HostNodeTest.cpp @@ -0,0 +1,17 @@ +#include +#include +#include +#include + +#include + +namespace audioapi::test { + +TEST(HostNodeTest, TrivialConstruct) { + utils::DisposerImpl disposer{64}; + auto graph = std::make_shared(64, &disposer); + utils::graph::MockHostNode node(graph); + EXPECT_NE(node.rawNode(), nullptr); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/utils/CircularOverflowableAudioArrayTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/utils/CircularOverflowableAudioArrayTest.cpp new file mode 100644 index 000000000..8cb2310c8 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/utils/CircularOverflowableAudioArrayTest.cpp @@ -0,0 +1,22 @@ +#include +#include + +#include + +namespace audioapi::test { + +TEST(CircularOverflowableAudioArrayTest, WriteThenReadRoundTrips) { + constexpr size_t kCapacity = 8; + constexpr size_t kFrames = 4; + + CircularOverflowableAudioArray buffer(kCapacity); + const std::array input = {1.0f, 2.0f, 3.0f, 4.0f}; + + buffer.write(input.data(), kFrames); + + std::array output = {}; + EXPECT_EQ(buffer.read(output.data(), kFrames), kFrames); + EXPECT_EQ(output, input); +} + +} // namespace audioapi::test diff --git a/packages/react-native-audio-api/common/cpp/test/src/utils/ThreadPoolTest.cpp b/packages/react-native-audio-api/common/cpp/test/src/utils/ThreadPoolTest.cpp new file mode 100644 index 000000000..c63b0a6f5 --- /dev/null +++ b/packages/react-native-audio-api/common/cpp/test/src/utils/ThreadPoolTest.cpp @@ -0,0 +1,18 @@ +#include +#include + +#include + +namespace audioapi::test { + +TEST(ThreadPoolTest, ScheduleRunsTaskAndWaitReturns) { + std::atomic counter{0}; + ThreadPool pool(2, 8, 8); + + pool.schedule([&counter]() { counter.fetch_add(1, std::memory_order_relaxed); }); + pool.wait(); + + EXPECT_EQ(counter.load(std::memory_order_relaxed), 1); +} + +} // namespace audioapi::test