begin_frame_source_test_unittest.cc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // Copyright 2015 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/begin_frame_source_test.h"
  5. #include "components/viz/test/begin_frame_args_test.h"
  6. #include "components/viz/test/mock_helper.h"
  7. #include "testing/gmock/include/gmock/gmock.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace viz {
  10. namespace {
  11. TEST(MockBeginFrameObserverTest, FailOnMissingCalls) {
  12. EXPECT_MOCK_FAILURE({
  13. ::testing::NiceMock<MockBeginFrameObserver> obs;
  14. EXPECT_BEGIN_FRAME_USED(obs, 0, 1, 100, 200, 300);
  15. EXPECT_BEGIN_FRAME_USED(obs, 0, 2, 400, 600, 300);
  16. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2,
  17. 400, 600, 300));
  18. });
  19. }
  20. TEST(MockBeginFrameObserverTest, FailOnMultipleCalls) {
  21. EXPECT_MOCK_FAILURE({
  22. ::testing::NiceMock<MockBeginFrameObserver> obs;
  23. EXPECT_BEGIN_FRAME_USED(obs, 0, 1, 100, 200, 300);
  24. EXPECT_BEGIN_FRAME_USED(obs, 0, 2, 400, 600, 300);
  25. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1,
  26. 100, 200, 300));
  27. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1,
  28. 100, 200, 300));
  29. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2,
  30. 400, 600, 300));
  31. });
  32. }
  33. TEST(MockBeginFrameObserverTest, FailOnWrongCallOrder) {
  34. EXPECT_MOCK_FAILURE({
  35. ::testing::NiceMock<MockBeginFrameObserver> obs;
  36. EXPECT_BEGIN_FRAME_USED(obs, 0, 1, 100, 200, 300);
  37. EXPECT_BEGIN_FRAME_USED(obs, 0, 2, 400, 600, 300);
  38. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2,
  39. 400, 600, 300));
  40. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1,
  41. 100, 200, 300));
  42. });
  43. }
  44. TEST(MockBeginFrameObserverTest, ExpectOnBeginFrame) {
  45. ::testing::NiceMock<MockBeginFrameObserver> obs;
  46. EXPECT_BEGIN_FRAME_USED(obs, 0, 1, 100, 200, 300);
  47. EXPECT_BEGIN_FRAME_USED(obs, 0, 2, 400, 600, 300);
  48. EXPECT_BEGIN_FRAME_USED(obs, 0, 3, 700, 900, 300);
  49. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  50. MockBeginFrameObserver::kDefaultBeginFrameArgs);
  51. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(
  52. BEGINFRAME_FROM_HERE, 0, 1, 100, 200,
  53. 300)); // One call to LastUsedBeginFrameArgs
  54. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  55. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, 100, 200,
  56. 300));
  57. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(
  58. BEGINFRAME_FROM_HERE, 0, 2, 400, 600,
  59. 300)); // Multiple calls to LastUsedBeginFrameArgs
  60. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  61. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2, 400, 600,
  62. 300));
  63. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  64. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2, 400, 600,
  65. 300));
  66. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(
  67. BEGINFRAME_FROM_HERE, 0, 3, 700, 900,
  68. 300)); // No calls to LastUsedBeginFrameArgs
  69. }
  70. TEST(MockBeginFrameObserverTest, ExpectOnBeginFrameStatus) {
  71. ::testing::NiceMock<MockBeginFrameObserver> obs;
  72. EXPECT_BEGIN_FRAME_USED(obs, 0, 1, 100, 200, 300);
  73. EXPECT_BEGIN_FRAME_DROP(obs, 0, 2, 400, 600, 300);
  74. EXPECT_BEGIN_FRAME_DROP(obs, 0, 3, 450, 650, 300);
  75. EXPECT_BEGIN_FRAME_USED(obs, 0, 4, 700, 900, 300);
  76. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  77. MockBeginFrameObserver::kDefaultBeginFrameArgs);
  78. // Used
  79. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1,
  80. 100, 200, 300));
  81. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  82. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, 100, 200,
  83. 300));
  84. // Dropped
  85. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2,
  86. 400, 600, 300));
  87. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  88. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, 100, 200,
  89. 300));
  90. // Dropped
  91. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 3,
  92. 450, 650, 300));
  93. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  94. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, 100, 200,
  95. 300));
  96. // Used
  97. obs.OnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 4,
  98. 700, 900, 300));
  99. EXPECT_EQ(obs.LastUsedBeginFrameArgs(),
  100. CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 4, 700, 900,
  101. 300));
  102. }
  103. } // namespace
  104. } // namespace viz