summaryrefslogtreecommitdiff
path: root/test/buffer.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-09-10 22:12:22 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-09-10 22:12:22 +0200
commit32e14551a90e85000e41b3f0445d34d58a1431e4 (patch)
tree912c1e50b93b501446b1b179ee2a3e93586fb854 /test/buffer.cc
parentcf99d0c865474105c14b2348fdbd1c83d87d5a29 (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/buffer.cc')
-rw-r--r--test/buffer.cc65
1 files changed, 65 insertions, 0 deletions
diff --git a/test/buffer.cc b/test/buffer.cc
new file mode 100644
index 0000000..869e781
--- /dev/null
+++ b/test/buffer.cc
@@ -0,0 +1,65 @@
+#include <gtest/gtest.h>
+
+#include "buffer.hh"
+
+#include <cstring>
+
+TEST(buffer_fixed, empty) {
+ auto buffer = Buffer::fixed(10);
+ EXPECT_TRUE(buffer->empty());
+ EXPECT_FALSE(buffer->full());
+ size_t avail;
+ buffer->rptr(avail);
+ EXPECT_EQ(0, avail);
+ buffer->wptr(avail);
+ EXPECT_EQ(10, avail);
+}
+
+TEST(buffer_dynamic, empty) {
+ auto buffer = Buffer::dynamic(10, 100);
+ EXPECT_TRUE(buffer->empty());
+ EXPECT_FALSE(buffer->full());
+ size_t avail;
+ buffer->rptr(avail);
+ EXPECT_EQ(0, avail);
+ buffer->wptr(avail);
+ EXPECT_EQ(10, avail);
+}
+
+TEST(buffer_fixed, write_read) {
+ auto buffer = Buffer::fixed(10);
+ size_t avail;
+ auto* wptr = buffer->wptr(avail);
+ EXPECT_EQ(10, avail);
+ memcpy(wptr, "Hello", 6);
+ buffer->commit(6);
+ EXPECT_FALSE(buffer->empty());
+ auto* rptr = buffer->rptr(avail);
+ EXPECT_EQ(6, avail);
+ EXPECT_STREQ("Hello", reinterpret_cast<const char*>(rptr));
+ buffer->consume(3);
+ rptr = buffer->rptr(avail);
+ EXPECT_EQ(3, avail);
+ EXPECT_STREQ("lo", reinterpret_cast<const char*>(rptr));
+ buffer->consume(3);
+ EXPECT_TRUE(buffer->empty());
+}
+
+TEST(buffer_dynamic, write_read) {
+ auto buffer = Buffer::dynamic(10, 100);
+ size_t avail;
+ auto* wptr = buffer->wptr(avail);
+ EXPECT_EQ(10, avail);
+ memcpy(wptr, "Hello", 6);
+ buffer->commit(6);
+ EXPECT_FALSE(buffer->empty());
+ auto* rptr = buffer->rptr(avail);
+ EXPECT_EQ(6, avail);
+ EXPECT_STREQ("Hello", reinterpret_cast<const char*>(rptr));
+ buffer->consume(3);
+ rptr = buffer->rptr(avail);
+ EXPECT_EQ(3, avail);
+ EXPECT_STREQ("lo", reinterpret_cast<const char*>(rptr));
+ buffer->consume(3);
+ EXPECT_TRUE(buffer->empty());
+}