draw_quad_matchers.cc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/viz/test/draw_quad_matchers.h"
  5. #include "components/viz/common/quads/shared_quad_state.h"
  6. #include "components/viz/common/quads/solid_color_draw_quad.h"
  7. namespace viz {
  8. namespace {
  9. const char* MaterialToString(DrawQuad::Material material) {
  10. switch (material) {
  11. case DrawQuad::Material::kInvalid:
  12. return "kInvalid";
  13. case DrawQuad::Material::kDebugBorder:
  14. return "kDebugBorder";
  15. case DrawQuad::Material::kPictureContent:
  16. return "kPictureContent";
  17. case DrawQuad::Material::kCompositorRenderPass:
  18. return "kCompositorRenderPass";
  19. case DrawQuad::Material::kAggregatedRenderPass:
  20. return "kAggregatedRenderPass";
  21. case DrawQuad::Material::kSolidColor:
  22. return "kSolidColor";
  23. case DrawQuad::Material::kSharedElement:
  24. return "kSharedElement";
  25. case DrawQuad::Material::kSurfaceContent:
  26. return "kSurfaceContent";
  27. case DrawQuad::Material::kTextureContent:
  28. return "kTextureContent";
  29. case DrawQuad::Material::kTiledContent:
  30. return "kTiledContent";
  31. case DrawQuad::Material::kYuvVideoContent:
  32. return "kYuvVideoContent";
  33. case DrawQuad::Material::kVideoHole:
  34. return "kVideoHole";
  35. }
  36. }
  37. // Produces a matcher for a DrawQuad that matches on quad material.
  38. testing::Matcher<const DrawQuad*> IsQuadType(
  39. DrawQuad::Material expected_material) {
  40. return testing::Field("material", &DrawQuad::material,
  41. testing::Eq(expected_material));
  42. }
  43. testing::Matcher<const DrawQuad*> HasSharedQuadState(
  44. testing::Matcher<const SharedQuadState*> matcher) {
  45. return testing::Field("shared_quad_state", &DrawQuad::shared_quad_state,
  46. matcher);
  47. }
  48. } // namespace
  49. void PrintTo(DrawQuad::Material material, ::std::ostream* os) {
  50. *os << MaterialToString(material);
  51. }
  52. testing::Matcher<const DrawQuad*> IsSolidColorQuad() {
  53. return IsQuadType(DrawQuad::Material::kSolidColor);
  54. }
  55. testing::Matcher<const DrawQuad*> IsSolidColorQuad(SkColor4f expected_color) {
  56. return testing::AllOf(
  57. IsSolidColorQuad(),
  58. testing::Truly([expected_color](const DrawQuad* quad) {
  59. return SolidColorDrawQuad::MaterialCast(quad)->color == expected_color;
  60. }));
  61. }
  62. testing::Matcher<const DrawQuad*> IsTextureQuad() {
  63. return IsQuadType(DrawQuad::Material::kTextureContent);
  64. }
  65. testing::Matcher<const DrawQuad*> IsYuvVideoQuad() {
  66. return IsQuadType(DrawQuad::Material::kYuvVideoContent);
  67. }
  68. testing::Matcher<const DrawQuad*> IsSurfaceQuad() {
  69. return IsQuadType(DrawQuad::Material::kSurfaceContent);
  70. }
  71. testing::Matcher<const DrawQuad*> IsAggregatedRenderPassQuad() {
  72. return IsQuadType(DrawQuad::Material::kAggregatedRenderPass);
  73. }
  74. testing::Matcher<const DrawQuad*> HasRect(const gfx::Rect& rect) {
  75. return testing::Field("rect", &DrawQuad::rect, testing::Eq(rect));
  76. }
  77. testing::Matcher<const DrawQuad*> HasVisibleRect(
  78. const gfx::Rect& visible_rect) {
  79. return testing::Field("visible_rect", &DrawQuad::visible_rect,
  80. testing::Eq(visible_rect));
  81. }
  82. testing::Matcher<const DrawQuad*> HasTransform(
  83. const gfx::Transform& transform) {
  84. return HasSharedQuadState(testing::Field(
  85. "quad_to_target_transform", &SharedQuadState::quad_to_target_transform,
  86. testing::Eq(transform)));
  87. }
  88. } // namespace viz