15 #include "absl/status/status.h"
19 #include "gmock/gmock.h"
20 #include "gtest/gtest.h"
21 #include "absl/strings/str_cat.h"
32 std::ostringstream oss;
46 Classifier classifier;
49 constexpr ErrorTest kErrorTests[]{
78 for (
const auto&
test : kErrorTests) {
97 for (
const auto& other : kErrorTests) {
98 if (other.code !=
test.code) {
100 <<
" other.code = " << other.code;
136 const int kRawCode = 9999;
142 constexpr
char kUrl1[] =
"url.payload.1";
143 constexpr
char kUrl2[] =
"url.payload.2";
144 constexpr
char kUrl3[] =
"url.payload.3";
145 constexpr
char kUrl4[] =
"url.payload.xx";
147 constexpr
char kPayload1[] =
"aaaaa";
148 constexpr
char kPayload2[] =
"bbbbb";
149 constexpr
char kPayload3[] =
"ccccc";
151 using PayloadsVec = std::vector<std::pair<std::string, absl::Cord>>;
162 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
163 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
170 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload3));
181 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
182 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
183 bad_status.SetPayload(kUrl3,
absl::Cord(kPayload3));
195 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
201 bad_status1.SetPayload(kUrl1,
absl::Cord(kPayload1));
202 bad_status1.SetPayload(kUrl2,
absl::Cord(kPayload2));
203 bad_status1.SetPayload(kUrl3,
absl::Cord(kPayload3));
206 bad_status2.SetPayload(kUrl2,
absl::Cord(kPayload2));
207 bad_status2.SetPayload(kUrl3,
absl::Cord(kPayload3));
208 bad_status2.SetPayload(kUrl1,
absl::Cord(kPayload1));
215 payload_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
216 payload_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
244 bad_status.SetPayload(kUrl1,
absl::Cord(kPayload1));
245 bad_status.SetPayload(kUrl2,
absl::Cord(kPayload2));
246 bad_status.SetPayload(kUrl3,
absl::Cord(kPayload3));
250 bad_status.ForEachPayload(
255 PayloadsVec expected_payloads = {{kUrl1,
absl::Cord(kPayload1)},
260 PayloadsVec visited_payloads = AllVisitedPayloads(bad_status);
264 std::vector<absl::Status>
scratch;
272 if (AllVisitedPayloads(
scratch.back()) != visited_payloads) {
282 EXPECT_EQ(
"INTERNAL: fail [foo='bar']",
s.ToString());
457 const std::array<absl::Status, 4> status_arr = {
ok, no_payload, one_payload,
459 for (
int i = 0;
i < status_arr.size();
i++) {
460 for (
int j = 0;
j < status_arr.size();
j++) {
482 with_payload.SetPayload(kUrl1,
absl::Cord(kPayload1));
483 test_swap(
ok, no_payload);
484 test_swap(no_payload,
ok);
485 test_swap(
ok, with_payload);
486 test_swap(with_payload,
ok);
487 test_swap(no_payload, with_payload);
488 test_swap(with_payload, no_payload);