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/nonce_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 NonceToken& a, const NonceToken& b) { |
| 14 EXPECT_TRUE(a < b); |
| 15 EXPECT_FALSE(b < a); |
| 16 } |
| 17 |
| 18 TEST(NonceTest, VerifyEqualityOperators) { |
| 19 // Deserialize is used for testing purposes. |
| 20 // Use NonceToken::Create() in production code instead. |
| 21 NonceToken nonce = NonceToken::Deserialize(1, 2); |
| 22 NonceToken same_nonce = NonceToken::Deserialize(1, 2); |
| 23 NonceToken diff_nonce = NonceToken::Deserialize(1, 3); |
| 24 |
| 25 EXPECT_TRUE(nonce == nonce); |
| 26 EXPECT_FALSE(nonce != nonce); |
| 27 |
| 28 EXPECT_TRUE(nonce == same_nonce); |
| 29 EXPECT_FALSE(nonce != same_nonce); |
| 30 |
| 31 EXPECT_FALSE(nonce == diff_nonce); |
| 32 EXPECT_FALSE(diff_nonce == nonce); |
| 33 EXPECT_TRUE(nonce != diff_nonce); |
| 34 EXPECT_TRUE(diff_nonce != nonce); |
| 35 } |
| 36 |
| 37 TEST(NonceTest, VerifyConstructors) { |
| 38 NonceToken nonce = NonceToken::Create(); |
| 39 EXPECT_FALSE(nonce.is_empty()); |
| 40 EXPECT_TRUE(nonce); |
| 41 |
| 42 NonceToken copied_nonce(nonce); |
| 43 EXPECT_TRUE(copied_nonce); |
| 44 EXPECT_EQ(nonce, copied_nonce); |
| 45 |
| 46 NonceToken uninitialized; |
| 47 EXPECT_TRUE(uninitialized.is_empty()); |
| 48 EXPECT_FALSE(uninitialized); |
| 49 |
| 50 EXPECT_TRUE(NonceToken().is_empty()); |
| 51 EXPECT_FALSE(NonceToken()); |
| 52 } |
| 53 |
| 54 TEST(NonceTest, VerifySerialization) { |
| 55 NonceToken nonce = NonceToken::Create(); |
| 56 |
| 57 uint64_t high = 0; |
| 58 uint64_t low = 0; |
| 59 nonce.Serialize(&high, &low); |
| 60 |
| 61 EXPECT_FALSE(NonceToken::IsZeroData(high, low)); |
| 62 |
| 63 NonceToken Deserialized = NonceToken::Deserialize(high, low); |
| 64 EXPECT_EQ(nonce, Deserialized); |
| 65 } |
| 66 |
| 67 TEST(NonceTest, VerifySmallerThanOperator) { |
| 68 // Deserialize is used for testing purposes. |
| 69 // Use NonceToken::Create() in production code instead. |
| 70 |
| 71 // a.low < b.low and a.high == b.high. |
| 72 TestSmallerThanOperator(NonceToken::Deserialize(0, 1), |
| 73 NonceToken::Deserialize(0, 5)); |
| 74 |
| 75 // a.low == b.low and a.high < b.high. |
| 76 TestSmallerThanOperator(NonceToken::Deserialize(1, 0), |
| 77 NonceToken::Deserialize(5, 0)); |
| 78 |
| 79 // a.low < b.low and a.high < b.high. |
| 80 TestSmallerThanOperator(NonceToken::Deserialize(1, 1), |
| 81 NonceToken::Deserialize(5, 5)); |
| 82 |
| 83 // a.low > b.low and a.high < b.high. |
| 84 TestSmallerThanOperator(NonceToken::Deserialize(1, 10), |
| 85 NonceToken::Deserialize(10, 1)); |
| 86 } |
| 87 |
| 88 TEST(NonceTest, VerifyHash) { |
| 89 NonceToken nonce = NonceToken::Create(); |
| 90 |
| 91 uint64_t high, low; |
| 92 nonce.Serialize(&high, &low); |
| 93 |
| 94 EXPECT_EQ(base::HashInts64(high, low), NonceTokenHash{}(nonce)); |
| 95 } |
| 96 |
| 97 TEST(NonceTest, VerifyBasicUniqueness) { |
| 98 EXPECT_NE(NonceToken::Create(), NonceToken::Create()); |
| 99 |
| 100 uint64_t high, low; |
| 101 NonceToken::Create().Serialize(&high, &low); |
| 102 EXPECT_NE(high, low); |
| 103 } |
| 104 } |
OLD | NEW |