/* * Copyright (c) 2025, Ben Eidson * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include TEST_CASE(drain_returns_all_and_clears) { Web::WebAudio::ControlMessageQueue queue; queue.enqueue(Web::WebAudio::StartSource { .when = 1.0 }); queue.enqueue(Web::WebAudio::StopSource { .when = 2.0 }); auto batch = queue.drain(); EXPECT_EQ(batch.size(), 2u); auto empty = queue.drain(); EXPECT_EQ(empty.size(), 0u); } TEST_CASE(drain_preserves_first_in_first_out) { Web::WebAudio::ControlMessageQueue queue; queue.enqueue(Web::WebAudio::StartSource { .when = 1.0 }); queue.enqueue(Web::WebAudio::StopSource { .when = 2.0 }); queue.enqueue(Web::WebAudio::StartSource { .when = 3.0 }); auto batch = queue.drain(); EXPECT_EQ(batch.size(), 3u); EXPECT(batch[0].has()); EXPECT_EQ(batch[0].get().when, 1.0); EXPECT(batch[1].has()); EXPECT_EQ(batch[1].get().when, 2.0); EXPECT(batch[2].has()); EXPECT_EQ(batch[2].get().when, 3.0); }