@@ -31,29 +31,74 @@ BOOST_AUTO_TEST_CASE(test_get_audio) {
3131 client_to_mock_pipeline<AudioIn>(mock, [&](AudioIn& client) {
3232 std::vector<AudioIn::audio_chunk> received_chunks;
3333
34- // Test streaming for 1 second
3534 client.get_audio (
3635 " pcm16" ,
3736 [&](AudioIn::audio_chunk&& chunk) -> bool {
3837 received_chunks.push_back (std::move (chunk));
39- return received_chunks.size () < 3 ; // Stop stream after 3 chunks
38+ // Stop stream after 3 chunks
39+ return received_chunks.size () < 3 ;
4040 },
4141 1.0 , // 1 second duration
4242 0 // No previous timestamp
4343 );
4444
4545 BOOST_CHECK_EQUAL (received_chunks.size (), 3 );
4646
47- // Verify chunk properties
48- for (const auto & chunk : received_chunks) {
49- BOOST_CHECK_GT (chunk.audio_data .size (), 0 );
47+ // Check that request_id is consistent across all chunks
48+ BOOST_CHECK (!received_chunks[0 ].request_id .empty ());
49+ std::string first_request_id = received_chunks[0 ].request_id ;
50+
51+ for (size_t i = 0 ; i < received_chunks.size (); ++i) {
52+ const auto & chunk = received_chunks[i];
53+ BOOST_CHECK_EQUAL (chunk.audio_data .size (), 1024 );
5054 BOOST_CHECK_EQUAL (chunk.info .codec , " pcm16" );
5155 BOOST_CHECK_EQUAL (chunk.info .sample_rate_hz , 48000 );
5256 BOOST_CHECK_EQUAL (chunk.info .num_channels , 1 );
57+ BOOST_CHECK_EQUAL (chunk.request_id , first_request_id);
58+ BOOST_CHECK_EQUAL (chunk.sequence , static_cast <int >(i));
59+ BOOST_CHECK_GE (chunk.start_timestamp_ns , 0 );
60+ BOOST_CHECK_GE (chunk.end_timestamp_ns , 0 );
5361 }
5462 });
5563}
5664
65+ BOOST_AUTO_TEST_CASE (test_get_audio_request_ids_differ_across_calls) {
66+ std::shared_ptr<MockAudioIn> mock = MockAudioIn::get_mock_audio_in ();
67+
68+ client_to_mock_pipeline<AudioIn>(mock, [&](AudioIn& client) {
69+ std::string first_request_id;
70+ std::string second_request_id;
71+
72+ // First call
73+ client.get_audio (
74+ " pcm16" ,
75+ [&](AudioIn::audio_chunk&& chunk) -> bool {
76+ first_request_id = chunk.request_id ;
77+ return false ; // Stop after first chunk
78+ },
79+ 1.0 ,
80+ 0
81+ );
82+
83+ // Second call
84+ client.get_audio (
85+ " pcm16" ,
86+ [&](AudioIn::audio_chunk&& chunk) -> bool {
87+ second_request_id = chunk.request_id ;
88+ return false ; // Stop after first chunk
89+ },
90+ 1.0 ,
91+ 0
92+ );
93+
94+ // Request IDs should be different across separate calls
95+ BOOST_CHECK (!first_request_id.empty ());
96+ BOOST_CHECK (!second_request_id.empty ());
97+ BOOST_CHECK_NE (first_request_id, second_request_id);
98+ });
99+ }
100+
101+
57102BOOST_AUTO_TEST_CASE (test_do_command) {
58103 std::shared_ptr<MockAudioIn> mock = MockAudioIn::get_mock_audio_in ();
59104 client_to_mock_pipeline<AudioIn>(mock, [](AudioIn& client) {
0 commit comments