22 #include "gmock/gmock.h"
23 #include "gtest/gtest.h"
24 #include "absl/base/config.h"
25 #include "absl/base/internal/raw_logging.h"
26 #include "absl/strings/cord.h"
27 #include "absl/strings/internal/cord_internal.h"
30 #include "absl/strings/string_view.h"
34 namespace cord_internal {
51 constexpr
size_t kChars = 3;
53 int counts[] = {1, 2, cap, cap * cap, cap * cap + 1, cap * cap * 2 + 17};
55 for (
int count : counts) {
61 size_t remaining =
data.length();
65 remaining -= chunk.
length();
68 while (remaining > 0) {
69 const size_t offset =
data.length() - remaining;
73 remaining -= chunk.
length();
87 constexpr
size_t kChars = 3;
89 int counts[] = {1, 2, cap, cap * cap, cap * cap + 1, cap * cap * 2 + 17};
91 for (
int count : counts) {
96 for (
size_t skip1 = 0; skip1 <
data.length() - kChars; ++skip1) {
97 for (
size_t skip2 = 0; skip2 <
data.length() - kChars; ++skip2) {
99 size_t remaining =
data.length();
101 remaining -= chunk.
length();
103 chunk =
reader.Skip(skip1);
106 remaining -= chunk.
length() + skip1;
109 if (remaining == 0)
continue;
122 TEST(CordRepBtreeReaderTest, SkipBeyondLength) {
125 CordRepBtreeReader
reader;
132 TEST(CordRepBtreeReaderTest, Seek) {
133 constexpr
size_t kChars = 3;
135 int counts[] = {1, 2, cap, cap * cap, cap * cap + 1, cap * cap * 2 + 17};
137 for (
int count : counts) {
142 for (
size_t seek = 0; seek <
data.length() - 1; ++seek) {
143 CordRepBtreeReader
reader;
156 TEST(CordRepBtreeReaderTest, SeekBeyondLength) {
159 CordRepBtreeReader
reader;
168 TEST(CordRepBtreeReaderTest,
Read) {
174 CordRepBtreeReader
reader;
178 chunk =
reader.Init(node);
186 chunk =
reader.Init(node);
195 chunk =
reader.Init(node);
205 chunk =
reader.Init(node);
215 chunk =
reader.Init(node);
216 chunk =
reader.Read(3, 0, tree);
225 chunk =
reader.Init(node);
234 chunk =
reader.Init(node);
245 TEST(CordRepBtreeReaderTest, ReadExhaustive) {
246 constexpr
size_t kChars = 3;
248 int counts[] = {1, 2, cap, cap * cap + 1, cap * cap * cap * 2 + 17};
250 for (
int count : counts) {
255 for (
size_t read_size : {kChars - 1, kChars, kChars + 7, cap * cap}) {
256 CordRepBtreeReader
reader;
262 size_t remaining =
data.length();
263 while (remaining > 0) {