OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 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 "base/unguessable_token.h" | |
6 | |
7 #include <type_traits> | |
8 | |
9 #include "testing/gtest/include/gtest/gtest.h" | |
10 | |
11 namespace base { | |
12 | |
13 void TestSmallerThanOperator(const UnguessableToken& a, | |
14 const UnguessableToken& b) { | |
15 EXPECT_TRUE(a < b); | |
16 EXPECT_FALSE(b < a); | |
17 } | |
18 | |
19 TEST(UnguessableTokenTest, VerifyEqualityOperators) { | |
20 // Deserialize is used for testing purposes. | |
21 // Use UnguessableToken::Create() in production code instead. | |
22 UnguessableToken token = UnguessableToken::Deserialize(1, 2); | |
23 UnguessableToken same_token = UnguessableToken::Deserialize(1, 2); | |
24 UnguessableToken diff_token = UnguessableToken::Deserialize(1, 3); | |
25 | |
26 EXPECT_TRUE(token == token); | |
27 EXPECT_FALSE(token != token); | |
28 | |
29 EXPECT_TRUE(token == same_token); | |
30 EXPECT_FALSE(token != same_token); | |
31 | |
32 EXPECT_FALSE(token == diff_token); | |
33 EXPECT_FALSE(diff_token == token); | |
34 EXPECT_TRUE(token != diff_token); | |
35 EXPECT_TRUE(diff_token != token); | |
36 } | |
37 | |
38 TEST(UnguessableTokenTest, VerifyConstructors) { | |
39 UnguessableToken token = UnguessableToken::Create(); | |
40 EXPECT_FALSE(token.is_empty()); | |
41 EXPECT_TRUE(token); | |
42 | |
43 UnguessableToken copied_token(token); | |
44 EXPECT_TRUE(copied_token); | |
45 EXPECT_EQ(token, copied_token); | |
46 | |
47 UnguessableToken uninitialized; | |
48 EXPECT_TRUE(uninitialized.is_empty()); | |
49 EXPECT_FALSE(uninitialized); | |
50 | |
51 EXPECT_TRUE(UnguessableToken().is_empty()); | |
52 EXPECT_FALSE(UnguessableToken()); | |
53 } | |
54 | |
55 TEST(UnguessableTokenTest, VerifySerialization) { | |
56 UnguessableToken token = UnguessableToken::Create(); | |
57 | |
58 uint64_t high = 0; | |
59 uint64_t low = 0; | |
60 token.Serialize(&high, &low); | |
61 | |
62 EXPECT_TRUE(high); | |
63 EXPECT_TRUE(low); | |
64 | |
65 UnguessableToken Deserialized = UnguessableToken::Deserialize(high, low); | |
66 EXPECT_EQ(token, Deserialized); | |
67 } | |
68 | |
69 TEST(UnguessableTokenTest, VerifySmallerThanOperator) { | |
70 // Deserialize is used for testing purposes. | |
71 // Use UnguessableToken::Create() in production code instead. | |
72 | |
73 // a.low < b.low and a.high == b.high. | |
74 TestSmallerThanOperator(UnguessableToken::Deserialize(0, 1), | |
danakj
2016/09/16 22:18:32
Use SCOPED_TRACE for each call to TestSmallerThanO
tguilbert
2016/09/16 22:48:15
Done.
| |
75 UnguessableToken::Deserialize(0, 5)); | |
76 | |
77 // a.low == b.low and a.high < b.high. | |
78 TestSmallerThanOperator(UnguessableToken::Deserialize(1, 0), | |
79 UnguessableToken::Deserialize(5, 0)); | |
80 | |
81 // a.low < b.low and a.high < b.high. | |
82 TestSmallerThanOperator(UnguessableToken::Deserialize(1, 1), | |
83 UnguessableToken::Deserialize(5, 5)); | |
84 | |
85 // a.low > b.low and a.high < b.high. | |
86 TestSmallerThanOperator(UnguessableToken::Deserialize(1, 10), | |
87 UnguessableToken::Deserialize(10, 1)); | |
88 } | |
89 | |
90 TEST(UnguessableTokenTest, VerifyHash) { | |
91 UnguessableToken token = UnguessableToken::Create(); | |
92 | |
93 uint64_t high, low; | |
94 token.Serialize(&high, &low); | |
95 | |
96 EXPECT_EQ(base::HashInts64(high, low), UnguessableTokenHash{}(token)); | |
danakj
2016/09/16 22:18:32
nit: UnguessableTokenHash()(token)
(chromium-dev
tguilbert
2016/09/16 22:48:14
Done.
| |
97 } | |
98 | |
99 TEST(UnguessableTokenTest, VerifyBasicUniqueness) { | |
100 EXPECT_NE(UnguessableToken::Create(), UnguessableToken::Create()); | |
101 | |
102 uint64_t high, low; | |
103 UnguessableToken::Create().Serialize(&high, &low); | |
104 EXPECT_NE(high, low); | |
105 } | |
106 } | |
OLD | NEW |