cord_data_edge_test.cc
Go to the documentation of this file.
1 // Copyright 2022 The Abseil Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
16 
17 #include "gmock/gmock.h"
18 #include "gtest/gtest.h"
19 #include "absl/strings/internal/cord_internal.h"
21 
22 namespace absl {
24 namespace cord_internal {
25 namespace {
26 
30 
31 TEST(CordDataEdgeTest, IsDataEdgeOnFlat) {
32  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
35 }
36 
37 TEST(CordDataEdgeTest, IsDataEdgeOnExternal) {
38  CordRep* rep = MakeExternal("Lorem ipsum dolor sit amet, consectetur ...");
41 }
42 
43 TEST(CordDataEdgeTest, IsDataEdgeOnSubstringOfFlat) {
44  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
45  CordRep* substr = MakeSubstring(1, 20, rep);
46  EXPECT_TRUE(IsDataEdge(substr));
47  CordRep::Unref(substr);
48 }
49 
50 TEST(CordDataEdgeTest, IsDataEdgeOnSubstringOfExternal) {
51  CordRep* rep = MakeExternal("Lorem ipsum dolor sit amet, consectetur ...");
52  CordRep* substr = MakeSubstring(1, 20, rep);
53  EXPECT_TRUE(IsDataEdge(substr));
54  CordRep::Unref(substr);
55 }
56 
57 TEST(CordDataEdgeTest, IsDataEdgeOnBtree) {
58  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
59  CordRepBtree* tree = CordRepBtree::New(rep);
60  EXPECT_FALSE(IsDataEdge(tree));
61  CordRep::Unref(tree);
62 }
63 
64 TEST(CordDataEdgeTest, IsDataEdgeOnBadSubstr) {
65  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
66  CordRep* substr = MakeSubstring(1, 18, MakeSubstring(1, 20, rep));
67  EXPECT_FALSE(IsDataEdge(substr));
68  CordRep::Unref(substr);
69 }
70 
71 TEST(CordDataEdgeTest, EdgeDataOnFlat) {
72  absl::string_view value = "Lorem ipsum dolor sit amet, consectetur ...";
73  CordRep* rep = MakeFlat(value);
76 }
77 
78 TEST(CordDataEdgeTest, EdgeDataOnExternal) {
79  absl::string_view value = "Lorem ipsum dolor sit amet, consectetur ...";
80  CordRep* rep = MakeExternal(value);
83 }
84 
85 TEST(CordDataEdgeTest, EdgeDataOnSubstringOfFlat) {
86  absl::string_view value = "Lorem ipsum dolor sit amet, consectetur ...";
87  CordRep* rep = MakeFlat(value);
88  CordRep* substr = MakeSubstring(1, 20, rep);
89  EXPECT_EQ(EdgeData(substr), value.substr(1, 20));
90  CordRep::Unref(substr);
91 }
92 
93 TEST(CordDataEdgeTest, EdgeDataOnSubstringOfExternal) {
94  absl::string_view value = "Lorem ipsum dolor sit amet, consectetur ...";
95  CordRep* rep = MakeExternal(value);
96  CordRep* substr = MakeSubstring(1, 20, rep);
97  EXPECT_EQ(EdgeData(substr), value.substr(1, 20));
98  CordRep::Unref(substr);
99 }
100 
101 #if defined(GTEST_HAS_DEATH_TEST) && !defined(NDEBUG)
102 
103 TEST(CordDataEdgeTest, IsDataEdgeOnNullPtr) {
104  EXPECT_DEATH(IsDataEdge(nullptr), ".*");
105 }
106 
107 TEST(CordDataEdgeTest, EdgeDataOnNullPtr) {
108  EXPECT_DEATH(EdgeData(nullptr), ".*");
109 }
110 
111 TEST(CordDataEdgeTest, EdgeDataOnBtree) {
112  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
113  CordRepBtree* tree = CordRepBtree::New(rep);
114  EXPECT_DEATH(EdgeData(tree), ".*");
115  CordRep::Unref(tree);
116 }
117 
118 TEST(CordDataEdgeTest, EdgeDataOnBadSubstr) {
119  CordRep* rep = MakeFlat("Lorem ipsum dolor sit amet, consectetur ...");
120  CordRep* substr = MakeSubstring(1, 18, MakeSubstring(1, 20, rep));
121  EXPECT_DEATH(EdgeData(substr), ".*");
122  CordRep::Unref(substr);
123 }
124 
125 #endif // GTEST_HAS_DEATH_TEST && !NDEBUG
126 
127 } // namespace
128 } // namespace cord_internal
130 } // namespace absl
EXPECT_FALSE
#define EXPECT_FALSE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1970
absl::ABSL_NAMESPACE_BEGIN::MakeSubstring
CordRepSubstring * MakeSubstring(size_t start, size_t len, CordRep *rep)
Definition: abseil-cpp/absl/strings/cord_ring_test.cc:245
cord_data_edge.h
absl::cord_internal::EdgeData
absl::string_view EdgeData(const CordRep *edge)
Definition: cord_data_edge.h:45
absl::cord_internal::CordRep::Unref
static void Unref(CordRep *rep)
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:642
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
absl::TEST
TEST(NotificationTest, SanityTest)
Definition: abseil-cpp/absl/synchronization/notification_test.cc:126
ABSL_NAMESPACE_END
#define ABSL_NAMESPACE_END
Definition: third_party/abseil-cpp/absl/base/config.h:171
EXPECT_EQ
#define EXPECT_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:27
absl::cord_internal::CordRepBtree::New
static CordRepBtree * New(int height=0)
Definition: cord_rep_btree.h:633
ABSL_NAMESPACE_BEGIN
#define ABSL_NAMESPACE_BEGIN
Definition: third_party/abseil-cpp/absl/base/config.h:170
absl::ABSL_NAMESPACE_BEGIN::MakeFlat
CordRep * MakeFlat(absl::string_view s, size_t extra=0)
Definition: abseil-cpp/absl/strings/cord_ring_test.cc:197
value
const char * value
Definition: hpack_parser_table.cc:165
rep
const CordRep * rep
Definition: cord_analysis.cc:53
EXPECT_TRUE
#define EXPECT_TRUE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1967
absl::cord_internal::IsDataEdge
bool IsDataEdge(const CordRep *edge)
Definition: cord_data_edge.h:32
absl
Definition: abseil-cpp/absl/algorithm/algorithm.h:31
absl::ABSL_NAMESPACE_BEGIN::MakeExternal
CordRepExternal * MakeExternal(absl::string_view s)
Definition: abseil-cpp/absl/strings/cord_ring_test.cc:205
cord_rep_test_util.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:03