token_type_unittest.cc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2020 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. #include "base/types/token_type.h"
  5. #include "base/test/gtest_util.h"
  6. #include "base/unguessable_token.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace base {
  9. using FooToken = TokenType<class Foo>;
  10. TEST(TokenType, TokenApi) {
  11. // Test default initialization.
  12. FooToken token1;
  13. EXPECT_FALSE(token1.value().is_empty());
  14. // Test copy construction.
  15. FooToken token2(token1);
  16. EXPECT_FALSE(token2.value().is_empty());
  17. EXPECT_EQ(token1.value(), token2.value());
  18. // Test assignment.
  19. FooToken token3;
  20. token3 = token2;
  21. EXPECT_FALSE(token3.value().is_empty());
  22. EXPECT_EQ(token2.value(), token3.value());
  23. FooToken token4;
  24. // Test comparison operators.
  25. EXPECT_TRUE(token1 == token2);
  26. EXPECT_TRUE(token2 == token3);
  27. EXPECT_TRUE((token4 < token1) ^ (token1 < token4));
  28. EXPECT_FALSE(token1 != token2);
  29. EXPECT_TRUE(token1 != token4);
  30. // Test hasher.
  31. EXPECT_EQ(FooToken::Hasher()(token2), UnguessableTokenHash()(token2.value()));
  32. // Test string representation.
  33. EXPECT_EQ(token2.ToString(), token2.value().ToString());
  34. }
  35. TEST(TokenType, TokenFromNullUnguessableToken) {
  36. EXPECT_CHECK_DEATH({ FooToken{UnguessableToken::Null()}; });
  37. }
  38. } // namespace base