diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-09-10 22:12:22 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-09-10 22:12:22 +0200 |
| commit | 32e14551a90e85000e41b3f0445d34d58a1431e4 (patch) | |
| tree | 912c1e50b93b501446b1b179ee2a3e93586fb854 /test/csv.cc | |
| parent | cf99d0c865474105c14b2348fdbd1c83d87d5a29 (diff) | |
Add unicode general category lookup
Generate the lookup tables from UnicodeData.txt, do to that,
add gen_ugc, which uses csv, buffers, line, io and other modules
to do the job.
Diffstat (limited to 'test/csv.cc')
| -rw-r--r-- | test/csv.cc | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/test/csv.cc b/test/csv.cc new file mode 100644 index 0000000..49fe540 --- /dev/null +++ b/test/csv.cc @@ -0,0 +1,90 @@ +#include <gtest/gtest.h> + +#include "csv.hh" + +TEST(csv, empty) { + auto csv = csv::open(io::memory("")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); +} + +TEST(csv, one_value) { + auto csv = csv::open(io::memory("foo")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(1, line.value().size()); + EXPECT_EQ("foo", line.value()[0]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); +} + +TEST(csv, two_value) { + auto csv = csv::open(io::memory("foo,bar")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(2, line.value().size()); + EXPECT_EQ("foo", line.value()[0]); + EXPECT_EQ("bar", line.value()[1]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); +} + +TEST(csv, empty_value) { + auto csv = csv::open(io::memory("foo,,bar,")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(4, line.value().size()); + EXPECT_EQ("foo", line.value()[0]); + EXPECT_EQ("", line.value()[1]); + EXPECT_EQ("bar", line.value()[2]); + EXPECT_EQ("", line.value()[3]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); +} + +TEST(csv, many_lines) { + auto csv = csv::open(io::memory("foo,bar\nfoobar\nf,o,o,")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(2, line.value().size()); + EXPECT_EQ("foo", line.value()[0]); + EXPECT_EQ("bar", line.value()[1]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(1, line.value().size()); + EXPECT_EQ("foobar", line.value()[0]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(4, line.value().size()); + EXPECT_EQ("f", line.value()[0]); + EXPECT_EQ("o", line.value()[1]); + EXPECT_EQ("o", line.value()[2]); + EXPECT_EQ("", line.value()[3]); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); +} + +TEST(csv, blank_lines) { + auto csv = csv::open(io::memory("foo,bar\n\nbar,foo\n\n")); + auto line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(2, line.value().size()); + EXPECT_EQ("foo", line.value()[0]); + EXPECT_EQ("bar", line.value()[1]); + EXPECT_EQ(1, csv->number()); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + ASSERT_EQ(2, line.value().size()); + EXPECT_EQ("bar", line.value()[0]); + EXPECT_EQ("foo", line.value()[1]); + EXPECT_EQ(3, csv->number()); + line = csv->read(); + ASSERT_TRUE(line.has_value()); + EXPECT_EQ(0, line.value().size()); + EXPECT_EQ(4, csv->number()); +} |
