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

Side by Side Diff: blimp/net/helium/vector_clock_unittest.cc

Issue 2372903002: Helium: Adding vector clock (Closed)
Patch Set: allowing merge with conflicted vectors Created 4 years, 2 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/net/helium/vector_clock.h"
6
7 #include "base/macros.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace blimp {
11 namespace {
12
13 class VectorClockComparisonTest
14 : public ::testing::TestWithParam<
15 std::tuple<VectorClock, VectorClock, VectorClock::Comparison>> {
16 public:
17 VectorClockComparisonTest() {}
18 ~VectorClockComparisonTest() override {}
19 };
20
21 TEST_P(VectorClockComparisonTest, CompareTo) {
22 auto param = GetParam();
23 VectorClock v1 = std::get<0>(param);
24 VectorClock v2 = std::get<1>(param);
25 VectorClock::Comparison expected = std::get<2>(param);
26 EXPECT_EQ(expected, v1.CompareTo(v2));
27 }
28
29 INSTANTIATE_TEST_CASE_P(
Kevin M 2016/09/27 17:31:10 Wow, this is pretty cool. I was unaware of this st
30 LessThan,
31 VectorClockComparisonTest,
32 ::testing::Values(std::make_tuple(VectorClock(1, 2),
33 VectorClock(1, 3),
34 VectorClock::Comparison::LessThan),
35 std::make_tuple(VectorClock(1, 2),
36 VectorClock(2, 2),
37 VectorClock::Comparison::LessThan)));
38
39 INSTANTIATE_TEST_CASE_P(
40 GreaterThan,
41 VectorClockComparisonTest,
42 ::testing::Values(std::make_tuple(VectorClock(1, 3),
43 VectorClock(1, 2),
44 VectorClock::Comparison::GreaterThan),
45 std::make_tuple(VectorClock(2, 2),
46 VectorClock(1, 2),
47 VectorClock::Comparison::GreaterThan)));
48
49 INSTANTIATE_TEST_CASE_P(
50 Conflicts,
51 VectorClockComparisonTest,
52 ::testing::Values(std::make_tuple(VectorClock(1, 2),
53 VectorClock(0, 1),
54 VectorClock::Comparison::Conflicts),
55 std::make_tuple(VectorClock(1, 2),
56 VectorClock(0, 3),
57 VectorClock::Comparison::Conflicts),
58 std::make_tuple(VectorClock(1, 2),
59 VectorClock(2, 3),
60 VectorClock::Comparison::Conflicts)));
61
62 INSTANTIATE_TEST_CASE_P(
63 EqualTo,
64 VectorClockComparisonTest,
65 ::testing::Values(std::make_tuple(VectorClock(1, 1),
66 VectorClock(1, 1),
67 VectorClock::Comparison::EqualTo),
68 std::make_tuple(VectorClock(2, 3),
69 VectorClock(2, 3),
70 VectorClock::Comparison::EqualTo),
71 std::make_tuple(VectorClock(3, 2),
72 VectorClock(3, 2),
73 VectorClock::Comparison::EqualTo)));
74
75 class VectorClockTest : public testing::Test {
76 public:
77 VectorClockTest() {}
78 ~VectorClockTest() override {}
79
80 private:
81 DISALLOW_COPY_AND_ASSIGN(VectorClockTest);
82 };
83
84 TEST_F(VectorClockTest, IncrementLocal1) {
85 VectorClock v(0, 0);
86 v.IncrementLocal();
87 EXPECT_EQ(1, v.local_revision());
88 EXPECT_EQ(0, v.remote_revision());
89 }
90
91 TEST_F(VectorClockTest, IncrementLocal2) {
92 VectorClock v(4, 5);
93 v.IncrementLocal();
94 EXPECT_EQ(5, v.local_revision());
95 EXPECT_EQ(5, v.remote_revision());
96 }
97
98 TEST_F(VectorClockTest, MergeWith1) {
99 VectorClock v1(1, 2);
Kevin M 2016/09/27 17:31:10 We could cut down on the number of test cases by m
100 VectorClock v2(1, 4);
101
102 VectorClock v3 = v1.MergeWith(v2);
103 EXPECT_EQ(1, v3.local_revision());
104 EXPECT_EQ(4, v3.remote_revision());
105 }
106
107 TEST_F(VectorClockTest, MergeWith2) {
108 VectorClock v1(1, 4);
109 VectorClock v2(1, 2);
110
111 VectorClock v3 = v1.MergeWith(v2);
112 EXPECT_EQ(1, v3.local_revision());
113 EXPECT_EQ(4, v3.remote_revision());
114 }
115
116 TEST_F(VectorClockTest, MergeWith3) {
117 VectorClock v1(1, 4);
118 VectorClock v2(2, 4);
119
120 VectorClock v3 = v1.MergeWith(v2);
121 EXPECT_EQ(2, v3.local_revision());
122 EXPECT_EQ(4, v3.remote_revision());
123 }
124
125 TEST_F(VectorClockTest, MergeWith4) {
126 VectorClock v1(2, 4);
127 VectorClock v2(1, 4);
128
129 VectorClock v3 = v1.MergeWith(v2);
130 EXPECT_EQ(2, v3.local_revision());
131 EXPECT_EQ(4, v3.remote_revision());
132 }
133
134 TEST_F(VectorClockTest, MergeWith5) {
135 VectorClock v1(1, 2);
136 VectorClock v2(3, 4);
137
138 VectorClock v3 = v1.MergeWith(v2);
139 EXPECT_EQ(3, v3.local_revision());
140 EXPECT_EQ(4, v3.remote_revision());
141 }
142
143 TEST_F(VectorClockTest, MergeWith6) {
144 VectorClock v1(3, 4);
145 VectorClock v2(1, 2);
146
147 VectorClock v3 = v1.MergeWith(v2);
148 EXPECT_EQ(3, v3.local_revision());
149 EXPECT_EQ(4, v3.remote_revision());
150 }
151
152 } // namespace
153 } // namespace blimp
OLDNEW
« blimp/net/helium/vector_clock.cc ('K') | « blimp/net/helium/vector_clock.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698