@@ -49,40 +49,40 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
4949 CppUtils::Type::Pair<"Signed integer"_token, &FileObject::d>,
5050 CppUtils::Type::Pair<"Floating point"_token, &FileObject::e>>;
5151
52+ namespace Conversion
53+ {
54+ constexpr auto doubleValue = [](std::size_t& member, std::string_view value) {
55+ std::from_chars(std::data(value), std::data(value) + std::size(value), member);
56+ member *= 2;
57+ };
58+ }
59+
5260 struct ObjectMapping final
5361 {
5462 using CSVMapping = UnitTest::Language::CSV::Mapping::CSVMapping;
5563 using StructMapping = UnitTest::Language::CSV::Mapping::StructMapping;
56- using FunctionMapping = CppUtils::Type::Mapping<>;
5764 };
5865
5966 struct FileObjectMapping final
6067 {
6168 using CSVMapping = UnitTest::Language::CSV::Mapping::CSVMapping;
6269 using StructMapping = UnitTest::Language::CSV::Mapping::FileStructMapping;
63- using FunctionMapping = CppUtils::Type::Mapping<>;
6470 };
6571
6672 struct ObjectFunctionMapping final
6773 {
6874 using CSVMapping = UnitTest::Language::CSV::Mapping::CSVMapping;
6975 using StructMapping = UnitTest::Language::CSV::Mapping::StructMapping;
7076 using FunctionMapping = CppUtils::Type::Mapping<
71- CppUtils::Type::Pair<"Unsigned integer"_token, [](std::size_t& member, std::string_view value) {
72- std::from_chars(std::data(value), std::data(value) + std::size(value), member);
73- member *= 2;
74- }>>;
77+ CppUtils::Type::Pair<"Unsigned integer"_token, Conversion::doubleValue>>;
7578 };
7679
7780 struct ObjectLambdaMapping final
7881 {
7982 using CSVMapping = UnitTest::Language::CSV::Mapping::CSVMapping;
8083 using StructMapping = UnitTest::Language::CSV::Mapping::StructMapping;
8184 using FunctionMapping = CppUtils::Type::Mapping<
82- CppUtils::Type::Pair<"Unsigned integer"_token, [](std::size_t& member, std::string_view value) {
83- std::from_chars(std::data(value), std::data(value) + std::size(value), member);
84- member *= 2;
85- }>>;
85+ CppUtils::Type::Pair<"Unsigned integer"_token, Conversion::doubleValue>>;
8686 };
8787
8888 struct ObjectFunctorMapping final
@@ -105,22 +105,22 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
105105
106106 auto _ = TestSuite{"Language/CSV/Mapping", {}, [](TestSuite& suite) {
107107 using namespace std::literals;
108+ using namespace CppUtils::Language::CSV::Literals;
108109
109110 suite.addTest("CSV line to Struct", [&] {
110- constexpr auto csvLine = "foo;bar;42;-1;3.14"sv ;
111+ const auto csvLine = "foo;bar;42;-1;3.14"_csv[0] ;
111112
112113 const auto object = CppUtils::Language::CSV::toStruct<Object, ObjectMapping>(csvLine);
113114
114115 suite.expectEqual(object, Object{"foo", "bar", 42, -1, 3.14f});
115116 });
116117
117118 suite.addTest("CSV to Structs", [&] {
118- constexpr auto csv = R"(
119+ const auto objects = CppUtils::Language::CSV::toStructs<Object, ObjectMapping>( R"(
119120 a;b;c;d;e
120121 foo;bar;42;-1;3.14
121- )"sv;
122-
123- const auto objects = CppUtils::Language::CSV::toStructs<Object, ObjectMapping>(csv, ";", "\n", 2uz);
122+ )"_csv,
123+ 2uz);
124124
125125 suite.expectEqual(objects, std::vector<Object>{{"foo", "bar", 42, -1, 3.14f}});
126126 });
@@ -148,7 +148,7 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
148148 const auto filePath = directory / "test.csv";
149149 CppUtils::FileSystem::String::write(filePath, "a;b;c;d;e\nfoo;bar;42;-1;3.14\n"sv);
150150
151- const auto objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, ";", "\n", 1uz);
151+ const auto objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, 1uz);
152152
153153 suite.expectEqual(objects, std::vector<FileObject>{{"foo", "bar", 42, -1, 3.14f}});
154154 }};
@@ -159,7 +159,7 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
159159 const auto filePath = directory / "test_crlf.csv";
160160 CppUtils::FileSystem::String::write(filePath, "a;b;c;d;e\r\nfoo;bar;42;-1;3.14\r\n"sv);
161161
162- const auto objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, ";", "\n", 1uz);
162+ const auto objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, 1uz);
163163
164164 suite.expectEqual(objects, std::vector<FileObject>{{"foo", "bar", 42, -1, 3.14f}});
165165 }};
@@ -170,7 +170,7 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
170170 CppUtils::FileSystem::String::write(directory / "test1.csv", "a;b;c;d;e\nfoo;bar;1;-10;1.1\n"sv);
171171 CppUtils::FileSystem::String::write(directory / "test2.csv", "a;b;c;d;e\nhello;world;2;-20;2.2\n"sv);
172172
173- auto objects = CppUtils::Language::CSV::loadDirectory<FileObject, FileObjectMapping>(directory, ";", "\n", 1uz);
173+ auto objects = CppUtils::Language::CSV::loadDirectory<FileObject, FileObjectMapping>(directory, 1uz);
174174 std::ranges::sort(objects, {}, &FileObject::b);
175175
176176 const auto expected = std::vector<FileObject>{
@@ -187,7 +187,7 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
187187 CppUtils::FileSystem::String::write(filePath, "a;b;c;d;e\nfoo;bar;42;-1;3.14\n"sv);
188188
189189 auto objects = std::vector<FileObject>{{"existing", "object", 0, 0, 0.0f}};
190- objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, ";", "\n", 1uz , std::move(objects));
190+ objects = CppUtils::Language::CSV::loadFile<FileObject, FileObjectMapping>(filePath, 1uz, ";", "\n", std::move(objects));
191191
192192 const auto expected = std::vector<FileObject>{
193193 {"existing", "object", 0, 0, 0.0f},
@@ -198,23 +198,23 @@ namespace CppUtils::UnitTest::Language::CSV::Mapping
198198 });
199199
200200 suite.addTest("FunctionMapping", [&] {
201- constexpr auto csvLine = "foo;bar;21;-1;3.14"sv ;
201+ const auto csvLine = "foo;bar;21;-1;3.14"_csv[0] ;
202202
203203 const auto object = CppUtils::Language::CSV::toStruct<Object, ObjectFunctionMapping>(csvLine);
204204
205205 suite.expectEqual(object, Object{"foo", "bar", 42, -1, 3.14f});
206206 });
207207
208208 suite.addTest("LambdaMapping", [&] {
209- constexpr auto csvLine = "foo;bar;21;-1;3.14"sv ;
209+ const auto csvLine = "foo;bar;21;-1;3.14"_csv[0] ;
210210
211211 const auto object = CppUtils::Language::CSV::toStruct<Object, ObjectLambdaMapping>(csvLine);
212212
213213 suite.expectEqual(object, Object{"foo", "bar", 42, -1, 3.14f});
214214 });
215215
216216 suite.addTest("FunctorMapping (lambda with capture substitute)", [&] {
217- constexpr auto csvLine = "foo;bar;10;-1;3.14"sv ;
217+ const auto csvLine = "foo;bar;10;-1;3.14"_csv[0] ;
218218
219219 const auto object = CppUtils::Language::CSV::toStruct<Object, ObjectFunctorMapping>(csvLine);
220220
0 commit comments