Skip to content

Commit dad2512

Browse files
Test with copy_if
1 parent 51d0df9 commit dad2512

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

tests/channel_test.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

474475
TEST(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

Comments
 (0)