Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: blimp/common/compositor/reference_tracker_unittest.cc

Issue 1982893002: [blimp] Add SkPicture caching support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments from kmarshall Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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
5 #include "blimp/common/compositor/reference_tracker.h"
6
7 #include <stdint.h>
8 #include <algorithm>
9 #include <unordered_set>
10 #include <vector>
11
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace blimp {
16 namespace {
17
18 class ReferenceTrackerTest : public testing::Test {
19 public:
20 ReferenceTrackerTest() {}
21
22 protected:
23 ReferenceTracker tracker_;
24 std::vector<uint32_t> added_;
25 std::vector<uint32_t> removed_;
26
27 private:
28 DISALLOW_COPY_AND_ASSIGN(ReferenceTrackerTest);
29 };
30
31 TEST_F(ReferenceTrackerTest, SingleItemCommitFlow) {
32 tracker_.CommitRefCounts(&added_, &removed_);
33 EXPECT_TRUE(added_.empty());
34 EXPECT_TRUE(removed_.empty());
35
36 uint32_t item = 1;
37 tracker_.IncrementRefCount(item);
38 tracker_.CommitRefCounts(&added_, &removed_);
39 EXPECT_THAT(added_, testing::UnorderedElementsAre(item));
40 EXPECT_TRUE(removed_.empty());
41 added_.clear();
42
43 tracker_.CommitRefCounts(&added_, &removed_);
44 EXPECT_TRUE(added_.empty());
45 EXPECT_TRUE(removed_.empty());
46
47 tracker_.DecrementRefCount(item);
48 tracker_.CommitRefCounts(&added_, &removed_);
49 EXPECT_TRUE(added_.empty());
50 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item));
51 }
52
53 TEST_F(ReferenceTrackerTest, SingleItemMultipleTimesInSingleCommit) {
54 uint32_t item = 1;
55 tracker_.IncrementRefCount(item);
56 tracker_.IncrementRefCount(item);
57 tracker_.CommitRefCounts(&added_, &removed_);
58 EXPECT_THAT(added_, testing::UnorderedElementsAre(item));
59 EXPECT_TRUE(removed_.empty());
60 added_.clear();
61
62 tracker_.CommitRefCounts(&added_, &removed_);
63 EXPECT_TRUE(added_.empty());
64 EXPECT_TRUE(removed_.empty());
65
66 tracker_.DecrementRefCount(item);
67 tracker_.DecrementRefCount(item);
68 tracker_.CommitRefCounts(&added_, &removed_);
69 EXPECT_TRUE(added_.empty());
70 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item));
71 }
72
73 TEST_F(ReferenceTrackerTest, SingleItemMultipleTimesAcrossCommits) {
74 uint32_t item = 1;
75 tracker_.IncrementRefCount(item);
76 tracker_.CommitRefCounts(&added_, &removed_);
77 EXPECT_THAT(added_, testing::UnorderedElementsAre(item));
78 EXPECT_TRUE(removed_.empty());
79 added_.clear();
80
81 tracker_.IncrementRefCount(item);
82 tracker_.CommitRefCounts(&added_, &removed_);
83 EXPECT_TRUE(added_.empty());
84 EXPECT_TRUE(removed_.empty());
85
86 tracker_.DecrementRefCount(item);
87 tracker_.CommitRefCounts(&added_, &removed_);
88 EXPECT_TRUE(added_.empty());
89 EXPECT_TRUE(removed_.empty());
90
91 tracker_.DecrementRefCount(item);
92 tracker_.CommitRefCounts(&added_, &removed_);
93 EXPECT_TRUE(added_.empty());
94 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item));
95 }
96
97 TEST_F(ReferenceTrackerTest, SingleItemComplexInteractions) {
98 uint32_t item = 1;
99 tracker_.IncrementRefCount(item);
100 tracker_.DecrementRefCount(item);
101 tracker_.CommitRefCounts(&added_, &removed_);
102 EXPECT_TRUE(added_.empty());
103 EXPECT_TRUE(removed_.empty());
104
105 tracker_.IncrementRefCount(item);
106 tracker_.DecrementRefCount(item);
107 tracker_.IncrementRefCount(item);
108 tracker_.CommitRefCounts(&added_, &removed_);
109 EXPECT_THAT(added_, testing::UnorderedElementsAre(item));
110 EXPECT_TRUE(removed_.empty());
111 added_.clear();
112
113 tracker_.DecrementRefCount(item);
114 tracker_.IncrementRefCount(item);
115 tracker_.DecrementRefCount(item);
116 tracker_.CommitRefCounts(&added_, &removed_);
117 EXPECT_TRUE(added_.empty());
118 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item));
119 }
120
121 TEST_F(ReferenceTrackerTest, MultipleItems) {
122 uint32_t item1 = 1;
123 uint32_t item2 = 2;
124 uint32_t item3 = 3;
125 tracker_.IncrementRefCount(item1);
126 tracker_.IncrementRefCount(item2);
127 tracker_.IncrementRefCount(item3);
128 tracker_.CommitRefCounts(&added_, &removed_);
129 EXPECT_THAT(added_, testing::UnorderedElementsAre(item1, item2, item3));
130 EXPECT_EQ(3U, added_.size());
131 EXPECT_TRUE(removed_.empty());
132 added_.clear();
133
134 tracker_.DecrementRefCount(item3);
135 tracker_.CommitRefCounts(&added_, &removed_);
136 EXPECT_TRUE(added_.empty());
137 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item3));
138 removed_.clear();
139
140 tracker_.DecrementRefCount(item2);
141 tracker_.IncrementRefCount(item3);
142 tracker_.CommitRefCounts(&added_, &removed_);
143 EXPECT_EQ(1U, added_.size());
144 EXPECT_EQ(1U, removed_.size());
145 EXPECT_THAT(added_, testing::UnorderedElementsAre(item3));
146 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item2));
147 added_.clear();
148 removed_.clear();
149
150 tracker_.IncrementRefCount(item2);
151 tracker_.CommitRefCounts(&added_, &removed_);
152 EXPECT_THAT(added_, testing::UnorderedElementsAre(item2));
153 EXPECT_TRUE(removed_.empty());
154 added_.clear();
155
156 tracker_.DecrementRefCount(item1);
157 tracker_.DecrementRefCount(item2);
158 tracker_.DecrementRefCount(item3);
159 tracker_.CommitRefCounts(&added_, &removed_);
160 EXPECT_TRUE(added_.empty());
161 EXPECT_THAT(removed_, testing::UnorderedElementsAre(item1, item2, item3));
162 }
163
164 } // namespace
Kevin M 2016/06/11 00:29:32 nice tests
nyquist 2016/06/14 01:37:57 Well, thank you sir!
165 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698