@@ -445,30 +445,31 @@ TEST(ChannelTest, TransformAndAccumulate)
445445 msd::channel<int > input_chan{10 };
446446 msd::channel<int > output_chan{10 };
447447
448- // Producer: fill input channel with 1..5
448+ // Producer: fill input channel with 1..101
449449 const auto producer = [&input_chan]() {
450- for (int i = 1 ; i <= 5 ; ++i) {
450+ for (int i = 1 ; i <= 101 ; ++i) {
451451 input_chan.write (i);
452452 }
453453 input_chan.close ();
454454 };
455455
456- // Transformer: double the values using std::transform with blocking iterators
457- const auto transformer = [&input_chan, &output_chan]() {
458- std::transform (input_chan.begin (), input_chan.end (), msd::back_inserter (output_chan),
459- [](int v) { return v * 2 ; });
456+ // Filter: take even numbers
457+ const auto filter = [&input_chan, &output_chan]() {
458+ std::copy_if (input_chan.begin (), input_chan.end (), msd::back_inserter (output_chan),
459+ [](int v) { return v % 2 == 0 ; });
460460 output_chan.close ();
461461 };
462462
463463 const auto producer_task = std::async (std::launch::async, producer);
464- const auto transformer_task = std::async (std::launch::async, transformer);
465-
466- producer_task.wait ();
467- transformer_task.wait ();
464+ const auto filter_task = std::async (std::launch::async, filter);
468465
469466 // Consumer: accumulate output channel values
470467 const int sum = std::accumulate (output_chan.begin (), output_chan.end (), 0 );
471- EXPECT_EQ (sum, 30 );
468+
469+ producer_task.wait ();
470+ filter_task.wait ();
471+
472+ EXPECT_EQ (sum, 2550 );
472473}
473474
474475TEST (ChannelTest, CopyToVector)
@@ -486,7 +487,7 @@ TEST(ChannelTest, CopyToVector)
486487
487488 producer ();
488489
489- // Use std::copy to copy from channel to vector using channel's blocking iterator
490+ // Copy from channel to vector
490491 std::copy (chan.begin (), chan.end (), std::back_inserter (results));
491492
492493 EXPECT_EQ (results, std::vector<int >({1 , 2 , 3 , 4 }));
0 commit comments