Implement gMock matchers to pretty print QuicErrorCode and QuicRstStreamErrorCode on failure.
Also change all relevant EXPECT_EQ and ASSERT_EQ expectations in three test
files to showcase new matcher.
Example output:
third_party/quic/core/quic_stream_test.cc:427: Failure
Value of: a
Expected: QUIC_NO_ERROR
Actual: 1 (of type quic::QuicErrorCode), QUIC_INTERNAL_ERROR
gfe-relnote: n/a, test-only change.
PiperOrigin-RevId: 277496262
Change-Id: I51a3e463b6261266609c7a7056d97a2ba9414fb5
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 1bcfa6a..7a88d65 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -23,6 +23,7 @@
#include "net/third_party/quiche/src/quic/core/quic_sent_packet_manager.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_storage.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
#include "net/third_party/quiche/src/quic/test_tools/mock_clock.h"
@@ -1246,6 +1247,46 @@
return arg >= min && arg <= max;
}
+// A GMock matcher that prints expected and actual QuicErrorCode strings
+// upon failure. Example usage:
+// EXPECT_THAT(stream_->connection_error()), IsError(QUIC_INTERNAL_ERROR));
+MATCHER_P(IsError,
+ expected,
+ QuicStrCat(negation ? "isn't equal to " : "is equal to ",
+ QuicErrorCodeToString(expected))) {
+ *result_listener << QuicErrorCodeToString(arg);
+ return arg == expected;
+}
+
+// Shorthand for IsError(QUIC_NO_ERROR).
+// Example usage: EXPECT_THAT(stream_->connection_error(), IsQuicNoError());
+MATCHER(IsQuicNoError,
+ QuicStrCat(negation ? "isn't equal to " : "is equal to ",
+ QuicErrorCodeToString(QUIC_NO_ERROR))) {
+ *result_listener << QuicErrorCodeToString(arg);
+ return arg == QUIC_NO_ERROR;
+}
+
+// A GMock matcher that prints expected and actual QuicRstStreamErrorCode
+// strings upon failure. Example usage:
+// EXPECT_THAT(stream_->stream_error(), IsStreamError(QUIC_INTERNAL_ERROR));
+MATCHER_P(IsStreamError,
+ expected,
+ QuicStrCat(negation ? "isn't equal to " : "is equal to ",
+ QuicRstStreamErrorCodeToString(expected))) {
+ *result_listener << QuicRstStreamErrorCodeToString(arg);
+ return arg == expected;
+}
+
+// Shorthand for IsStreamError(QUIC_STREAM_NO_ERROR). Example usage:
+// EXPECT_THAT(stream_->stream_error(), IsQuicStreamNoError());
+MATCHER(IsQuicStreamNoError,
+ QuicStrCat(negation ? "isn't equal to " : "is equal to ",
+ QuicRstStreamErrorCodeToString(QUIC_STREAM_NO_ERROR))) {
+ *result_listener << QuicRstStreamErrorCodeToString(arg);
+ return arg == QUIC_STREAM_NO_ERROR;
+}
+
} // namespace test
} // namespace quic