@@ -19,7 +19,9 @@ bool wait_until_no_consumers(lsl::stream_outlet &outlet, double timeout_sec) {
1919TEST_CASE (" have_consumers becomes false after idle inlet disconnects" , " [outlet][basic]" ) {
2020 lsl::stream_info info (" have_consumers_idle" , " Markers" , 1 , lsl::IRREGULAR_RATE , lsl::cf_int32,
2121 " have_consumers_idle" );
22- lsl::stream_outlet outlet (info);
22+ const auto transport = GENERATE (transp_default, transp_sync_blocking);
23+ CAPTURE (transport);
24+ lsl::stream_outlet outlet (info, 0 , 360 , transport);
2325 auto found = lsl::resolve_stream (" name" , info.name (), 1 , 2.0 );
2426 REQUIRE (found.size () == 1 );
2527
@@ -31,13 +33,23 @@ TEST_CASE("have_consumers becomes false after idle inlet disconnects", "[outlet]
3133 // Intentionally do not push samples; disconnect must still be detected (#267).
3234 }
3335
34- CHECK (wait_until_no_consumers (outlet, 2.0 ));
36+ SECTION (" have_consumers detects the disconnect" ) {
37+ CHECK (wait_until_no_consumers (outlet, 2.0 ));
38+ }
39+ SECTION (" wait_for_consumers does not accept the stale connection" ) {
40+ auto deadline = std::chrono::steady_clock::now () + std::chrono::seconds (2 );
41+ while (outlet.wait_for_consumers (0.0 ) && std::chrono::steady_clock::now () < deadline)
42+ std::this_thread::sleep_for (std::chrono::milliseconds (10 ));
43+ CHECK_FALSE (outlet.wait_for_consumers (0.05 ));
44+ }
3545}
3646
3747TEST_CASE (" have_consumers becomes false after disconnect during push" , " [outlet][basic]" ) {
3848 lsl::stream_info info (" have_consumers_busy" , " Markers" , 1 , lsl::IRREGULAR_RATE , lsl::cf_int32,
3949 " have_consumers_busy" );
40- lsl::stream_outlet outlet (info);
50+ const auto transport = GENERATE (transp_default, transp_sync_blocking);
51+ CAPTURE (transport);
52+ lsl::stream_outlet outlet (info, 0 , 360 , transport);
4153 auto found = lsl::resolve_stream (" name" , info.name (), 1 , 2.0 );
4254 REQUIRE (found.size () == 1 );
4355
@@ -76,7 +88,9 @@ TEST_CASE("have_consumers becomes false after disconnect during push", "[outlet]
7688TEST_CASE (" have_consumers tracks explicit close and reopen" , " [outlet][basic]" ) {
7789 lsl::stream_info info (" have_consumers_reopen" , " Markers" , 1 , lsl::IRREGULAR_RATE ,
7890 lsl::cf_int32, " have_consumers_reopen" );
79- lsl::stream_outlet outlet (info);
91+ const auto transport = GENERATE (transp_default, transp_sync_blocking);
92+ CAPTURE (transport);
93+ lsl::stream_outlet outlet (info, 0 , 360 , transport);
8094 auto found = lsl::resolve_stream (" name" , info.name (), 1 , 2.0 );
8195 REQUIRE (found.size () == 1 );
8296
@@ -94,7 +108,9 @@ TEST_CASE("have_consumers tracks explicit close and reopen", "[outlet][basic]")
94108TEST_CASE (" have_consumers stays true when one of two inlets disconnects" , " [outlet][basic]" ) {
95109 lsl::stream_info info (" have_consumers_two" , " Markers" , 1 , lsl::IRREGULAR_RATE , lsl::cf_int32,
96110 " have_consumers_two" );
97- lsl::stream_outlet outlet (info);
111+ const auto transport = GENERATE (transp_default, transp_sync_blocking);
112+ CAPTURE (transport);
113+ lsl::stream_outlet outlet (info, 0 , 360 , transport);
98114 auto found = lsl::resolve_stream (" name" , info.name (), 1 , 2.0 );
99115 REQUIRE (found.size () == 1 );
100116
0 commit comments