15 #include "absl/status/status.h"
17 #include "gmock/gmock.h"
18 #include "gtest/gtest.h"
19 #include "absl/strings/str_cat.h"
30 std::ostringstream oss;
44 Classifier classifier;
47 constexpr ErrorTest kErrorTests[]{
76 for (
const auto&
test : kErrorTests) {
95 for (
const auto& other : kErrorTests) {
96 if (other.code !=
test.code) {
98 <<
" other.code = " << other.code;
134 const int kRawCode = 9999;
140 constexpr
char kUrl1[] =
"url.payload.1";
141 constexpr
char kUrl2[] =
"url.payload.2";
142 constexpr
char kUrl3[] =
"url.payload.3";
143 constexpr
char kUrl4[] =
"url.payload.xx";
145 constexpr
char kPayload1[] =
"aaaaa";
146 constexpr
char kPayload2[] =
"bbbbb";
147 constexpr
char kPayload3[] =
"ccccc";
149 using PayloadsVec = std::vector<std::pair<std::string, absl::Cord>>;
160 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
161 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
168 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload3));
179 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
180 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
181 bad_status.SetPayload(kUrl3,
absl::Cord(kPayload3));
193 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
199 bad_status1.SetPayload(kUrl1,
absl::Cord(kPayload1));
200 bad_status1.SetPayload(kUrl2,
absl::Cord(kPayload2));
201 bad_status1.SetPayload(kUrl3,
absl::Cord(kPayload3));
204 bad_status2.SetPayload(kUrl2,
absl::Cord(kPayload2));
205 bad_status2.SetPayload(kUrl3,
absl::Cord(kPayload3));
206 bad_status2.SetPayload(kUrl1,
absl::Cord(kPayload1));
213 payload_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
214 payload_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
242 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
243 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
244 bad_status.SetPayload(kUrl3,
absl::Cord(kPayload3));
248 bad_status.ForEachPayload(
253 PayloadsVec expected_payloads = {{kUrl1,
absl::Cord(kPayload1)},
258 PayloadsVec visited_payloads = AllVisitedPayloads(bad_status);
262 std::vector<absl::Status>
scratch;
270 if (AllVisitedPayloads(
scratch.back()) != visited_payloads) {
280 EXPECT_EQ(
"INTERNAL: fail [foo='bar']",
s.ToString());
455 const std::array<absl::Status, 4> status_arr = {
ok, no_payload, one_payload,
457 for (
int i = 0;
i < status_arr.size();
i++) {
458 for (
int j = 0;
j < status_arr.size();
j++) {
480 with_payload.SetPayload(kUrl1,
absl::Cord(kPayload1));
481 test_swap(
ok, no_payload);
482 test_swap(no_payload,
ok);
483 test_swap(
ok, with_payload);
484 test_swap(with_payload,
ok);
485 test_swap(no_payload, with_payload);
486 test_swap(with_payload, no_payload);