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

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

Issue 2372903002: Helium: Adding vector clock (Closed)
Patch Set: Missed one feedback (s/r/Conflicts/Conflict) 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(
30 LessThan,
31 VectorClockComparisonTest,
32 ::testing::Values(std::make_tuple(VectorClock(1, 2),
33 VectorClock(1, 3),
34 VectorClock::Comparison::LessThan)));
35
36 INSTANTIATE_TEST_CASE_P(
37 GreaterThan,
38 VectorClockComparisonTest,
39 ::testing::Values(std::make_tuple(VectorClock(1, 3),
40 VectorClock(1, 2),
41 VectorClock::Comparison::GreaterThan),
42 std::make_tuple(VectorClock(2, 2),
43 VectorClock(1, 2),
44 VectorClock::Comparison::GreaterThan)));
45
46 INSTANTIATE_TEST_CASE_P(
47 Conflict,
48 VectorClockComparisonTest,
49 ::testing::Values(std::make_tuple(VectorClock(1, 2),
50 VectorClock(0, 1),
51 VectorClock::Comparison::Conflict),
52 std::make_tuple(VectorClock(1, 2),
53 VectorClock(0, 3),
54 VectorClock::Comparison::Conflict)));
55
56 INSTANTIATE_TEST_CASE_P(
57 EqualTo,
58 VectorClockComparisonTest,
59 ::testing::Values(std::make_tuple(VectorClock(1, 1),
60 VectorClock(1, 1),
61 VectorClock::Comparison::EqualTo),
62 std::make_tuple(VectorClock(2, 3),
63 VectorClock(2, 3),
64 VectorClock::Comparison::EqualTo),
65 std::make_tuple(VectorClock(3, 2),
66 VectorClock(3, 2),
67 VectorClock::Comparison::EqualTo)));
68
69 class VectorClockTest : public testing::Test {
70 public:
71 VectorClockTest() {}
72 ~VectorClockTest() override {}
73
74 private:
75 DISALLOW_COPY_AND_ASSIGN(VectorClockTest);
76 };
77
78 TEST_F(VectorClockTest, IncrementLocal1) {
79 VectorClock v(0, 0);
80 v.IncrementLocal();
81 EXPECT_EQ(1, v.local_revision());
82 EXPECT_EQ(0, v.remote_revision());
83 }
84
85 TEST_F(VectorClockTest, IncrementLocal2) {
86 VectorClock v(4, 5);
87 v.IncrementLocal();
88 EXPECT_EQ(5, v.local_revision());
89 EXPECT_EQ(5, v.remote_revision());
90 }
91
92 void CommutativeMergeTest(const VectorClock& v1,
Kevin M 2016/09/27 21:36:09 Not a test in its own right - "CheckCumulativeMerg
scf 2016/09/27 23:23:11 Done.
93 const VectorClock& v2,
94 const VectorClock& expected) {
95 // Compute the merge of v1 and v2
96 VectorClock r1 = v1.MergeWith(v2);
97 EXPECT_EQ(expected.local_revision(), r1.local_revision());
98 EXPECT_EQ(expected.remote_revision(), r1.remote_revision());
99
100 // Compute the merge of v2 and v1
101 VectorClock r2 = v2.MergeWith(v1);
102 EXPECT_EQ(expected.local_revision(), r2.local_revision());
103 EXPECT_EQ(expected.remote_revision(), r2.remote_revision());
104 }
105
106 TEST_F(VectorClockTest, MergeEqualSmaller) {
Kevin M 2016/09/27 21:36:09 suggestion: EqualLocalSmallerRemote, etc.? ...
scf 2016/09/27 23:23:11 Done.
107 VectorClock v1(1, 2);
108 VectorClock v2(1, 4);
109
110 VectorClock expected(1, 4);
111 CommutativeMergeTest(v1, v2, expected);
112 }
113
114 TEST_F(VectorClockTest, MergeSmallerEqual) {
115 VectorClock v1(1, 4);
116 VectorClock v2(2, 4);
117
118 VectorClock expected(2, 4);
119 CommutativeMergeTest(v1, v2, expected);
120 }
121
122 TEST_F(VectorClockTest, MergeSmallerSmaller) {
123 VectorClock v1(1, 2);
124 VectorClock v2(3, 4);
125
126 VectorClock expected(3, 4);
127 CommutativeMergeTest(v1, v2, expected);
128 }
129
130 TEST_F(VectorClockTest, MergeSmallerGreater) {
131 VectorClock v1(1, 4);
132 VectorClock v2(3, 2);
133
134 VectorClock expected(3, 4);
135 CommutativeMergeTest(v1, v2, expected);
136 }
137
138 } // namespace
139 } // 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