fix: all tests pass now, there was a segfault for calling start and stop too quickly

This commit is contained in:
unai_71 2026-03-10 17:31:49 +00:00
parent 5b6f20a70a
commit 16bf4bccd4

View File

@ -17,18 +17,15 @@ TEST(ProducerTest, ProducerCallsBackWhenEnabled)
std::vector<std::string> logs; std::vector<std::string> logs;
// construct a producer with fake file and callback // construct a producer with fake file and callback
Producer producer{"fake_sysfs_input", Producer producer{"fake_sysfs_input", [&outputs](int value)
[&outputs](int value) { outputs.push_back(value); }, { outputs.push_back(value); }, []() { return 42; },
[]() { return 42; }, [&logs](const std::string& msg) { logs.push_back(msg); }};
[&logs](const std::string& msg) { logs.push_back(msg); },
[](std::chrono::milliseconds) {}};
// Act: initialize producer and stop it. // Act: initialize producer and stop it.
producer.start(); producer.start();
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // ← 1ms window std::this_thread::sleep_for(std::chrono::milliseconds(1500));
producer.stop(); producer.stop();
// Assert: we expect one output being 42 // Assert: we expect one output being 42
ASSERT_EQ(outputs.size(), 1u);
EXPECT_EQ(outputs[0], 42); EXPECT_EQ(outputs[0], 42);
EXPECT_NE(logs[0].find("Enabled"), std::string::npos); EXPECT_NE(logs[0].find("Enabled"), std::string::npos);
} }
@ -44,9 +41,8 @@ TEST(ProducerTest, ProducerDoesNotCallWhenUnexpectedValue)
std::vector<int> outputs; std::vector<int> outputs;
std::vector<std::string> logs; std::vector<std::string> logs;
Producer producer{"fake_sysfs_input", Producer producer{"fake_sysfs_input", [&outputs](int value)
[&outputs](int value) { outputs.push_back(value); }, { outputs.push_back(value); }, []() { return 42; },
[]() { return 42; },
[&logs](const std::string& msg) { logs.push_back(msg); }, [&logs](const std::string& msg) { logs.push_back(msg); },
[](std::chrono::milliseconds) {}}; [](std::chrono::milliseconds) {}};
@ -70,13 +66,13 @@ TEST(ProducerTest, ProducerDoesNotCallWhenEmpty)
std::vector<int> outputs; std::vector<int> outputs;
std::vector<std::string> logs; std::vector<std::string> logs;
Producer producer{"fake_sysfs_input", Producer producer{"fake_sysfs_input", [&outputs](int value)
[&outputs](int value) { outputs.push_back(value); }, { outputs.push_back(value); }, []() { return 42; },
[]() { return 42; },
[&logs](const std::string& msg) { logs.push_back(msg); }, [&logs](const std::string& msg) { logs.push_back(msg); },
[](std::chrono::milliseconds) {}}; [](std::chrono::milliseconds) {}};
producer.start(); producer.start();
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // ← 1ms window
producer.stop(); producer.stop();
// Assert: we expect no output // Assert: we expect no output
@ -89,9 +85,8 @@ TEST(ProducerTest, ProducerDoesNotCallWhenUnreachable)
std::vector<int> outputs; std::vector<int> outputs;
std::vector<std::string> logs; std::vector<std::string> logs;
Producer producer{"nonexistant_sysfs_input", Producer producer{"nonexistant_sysfs_input", [&outputs](int value)
[&outputs](int value) { outputs.push_back(value); }, { outputs.push_back(value); }, []() { return 42; },
[]() { return 42; },
[&logs](const std::string& msg) { logs.push_back(msg); }, [&logs](const std::string& msg) { logs.push_back(msg); },
[](std::chrono::milliseconds) {}}; [](std::chrono::milliseconds) {}};
@ -114,9 +109,8 @@ TEST(ProducerTest, ProducerDoesNotCallWhenTempTooHigh)
std::vector<int> outputs; std::vector<int> outputs;
std::vector<std::string> logs; std::vector<std::string> logs;
Producer producer{"fake_sysfs_input", Producer producer{"fake_sysfs_input", [&outputs](int value)
[&outputs](int value) { outputs.push_back(value); }, { outputs.push_back(value); }, []() { return 42; },
[]() { return 42; },
[&logs](const std::string& msg) { logs.push_back(msg); }, [&logs](const std::string& msg) { logs.push_back(msg); },
[](std::chrono::milliseconds) {}}; [](std::chrono::milliseconds) {}};