[wpiutil] Fix FileLogger behavior and performance (#7150)

Co-authored-by: Ryan Blue <ryanzblue@gmail.com>
This commit is contained in:
Gold856
2024-10-08 14:55:16 -04:00
committed by GitHub
parent f856c05a08
commit f150b36108
3 changed files with 47 additions and 42 deletions

View File

@@ -10,44 +10,50 @@
#include "wpi/FileLogger.h"
TEST(FileLoggerTest, LineBufferSingleLine) {
TEST(FileLoggerTest, BufferSingleLine) {
std::vector<std::string> buf;
auto func = wpi::FileLogger::LineBuffer(
auto func = wpi::FileLogger::Buffer(
[&buf](std::string_view line) { buf.emplace_back(line); });
func("qwertyuiop\n");
EXPECT_EQ(buf.front(), "qwertyuiop");
buf.clear();
EXPECT_EQ("qwertyuiop", buf[0]);
}
TEST(FileLoggerTest, LineBufferMultiLine) {
TEST(FileLoggerTest, BufferMultiLine) {
std::vector<std::string> buf;
auto func = wpi::FileLogger::LineBuffer(
auto func = wpi::FileLogger::Buffer(
[&buf](std::string_view line) { buf.emplace_back(line); });
func("line 1\nline 2\nline 3\n");
EXPECT_EQ("line 1", buf[0]);
EXPECT_EQ("line 2", buf[1]);
EXPECT_EQ("line 3", buf[2]);
EXPECT_EQ("line 1\nline 2\nline 3", buf[0]);
}
TEST(FileLoggerTest, LineBufferPartials) {
TEST(FileLoggerTest, BufferPartials) {
std::vector<std::string> buf;
auto func = wpi::FileLogger::LineBuffer(
auto func = wpi::FileLogger::Buffer(
[&buf](std::string_view line) { buf.emplace_back(line); });
func("part 1");
func("part 2\npart 3");
EXPECT_EQ("part 1part 2", buf.front());
buf.clear();
EXPECT_EQ("part 1part 2", buf[0]);
func("\n");
EXPECT_EQ("part 3", buf.front());
EXPECT_EQ("part 3", buf[1]);
}
TEST(FileLoggerTest, LineBufferMultiplePartials) {
TEST(FileLoggerTest, BufferMultiplePartials) {
std::vector<std::string> buf;
auto func = wpi::FileLogger::LineBuffer(
auto func = wpi::FileLogger::Buffer(
[&buf](std::string_view line) { buf.emplace_back(line); });
func("part 1");
func("part 2");
func("part 3");
func("part 4\n");
EXPECT_EQ("part 1part 2part 3part 4", buf.front());
EXPECT_EQ("part 1part 2part 3part 4", buf[0]);
}
TEST(FileLoggerTest, BufferMultipleMultiLinePartials) {
std::vector<std::string> buf;
auto func = wpi::FileLogger::Buffer(
[&buf](std::string_view line) { buf.emplace_back(line); });
func("part 1");
func("part 2\npart 3");
func("part 4\n");
EXPECT_EQ("part 1part 2", buf[0]);
EXPECT_EQ("part 3part 4", buf[1]);
}