@@ -119,6 +119,15 @@ TEST(HashValueTest, EnumAndBool) {
119119 std::make_tuple (true , false )));
120120}
121121
122+ TEST (HashValueTest, HashConsistentAcrossIntTypes){
123+ std::vector<size_t > hashes = {
124+ absl::Hash<int8_t >{}(1 ), absl::Hash<uint8_t >{}(1 ),
125+ absl::Hash<int16_t >{}(1 ), absl::Hash<uint16_t >{}(1 ),
126+ absl::Hash<int32_t >{}(1 ), absl::Hash<uint32_t >{}(1 ),
127+ absl::Hash<int64_t >{}(1 ), absl::Hash<uint64_t >{}(1 )};
128+ EXPECT_THAT (hashes, testing::Each (absl::Hash<int >{}(1 )));
129+ }
130+
122131TEST (HashValueTest, FloatingPoint) {
123132 EXPECT_TRUE ((is_hashable<float >::value));
124133 EXPECT_TRUE ((is_hashable<double >::value));
@@ -303,7 +312,7 @@ TEST(HashValueTest, CombineContiguousWorks) {
303312
304313struct DummyDeleter {
305314 template <typename T>
306- void operator () (T* ptr ) {}
315+ void operator () (T*) {}
307316};
308317
309318struct SmartPointerEq {
@@ -421,33 +430,39 @@ TEST(HashValueTest, Strings) {
421430 const std::string large = std::string (2048 , ' x' ); // multiple of chunk size
422431 const std::string huge = std::string (5000 , ' a' ); // not a multiple
423432
424- EXPECT_TRUE (absl::VerifyTypeImplementsAbslHashCorrectly (std::make_tuple ( //
425- std::string (), absl::string_view (), absl::Cord (), //
426- std::string (" " ), absl::string_view (" " ), absl::Cord ( " " ), //
427- std::string (small), absl::string_view (small), absl::Cord (small), //
428- std::string (dup), absl::string_view (dup), absl::Cord (dup), //
429- std::string (large), absl::string_view (large), absl::Cord (large), //
430- std::string (huge), absl::string_view (huge), FlatCord (huge), //
433+ EXPECT_TRUE (absl::VerifyTypeImplementsAbslHashCorrectly (std::make_tuple (
434+ std::string (), absl::string_view (), absl::Cord (), std::string ( " " ),
435+ absl::string_view (" " ), absl::Cord (" " ), std::string (small),
436+ absl::string_view (small), absl::Cord (small), FragmentedCord (small),
437+ std::string (dup), absl::string_view (dup), absl::Cord (dup),
438+ std::string (large), absl::string_view (large), absl::Cord (large),
439+ std::string (huge), absl::string_view (huge), FlatCord (huge),
431440 FragmentedCord (huge))));
432441
433442 // Also check that nested types maintain the same hash.
434443 const WrapInTuple t{};
435- EXPECT_TRUE (absl::VerifyTypeImplementsAbslHashCorrectly (std::make_tuple ( //
436- t (std::string ()), t (absl::string_view ()), t (absl::Cord ()), //
437- t (std::string (" " )), t (absl::string_view (" " )), t (absl::Cord (" " )), //
438- t (std::string (small)), t (absl::string_view (small)), //
439- t (absl::Cord (small)), //
440- t (std::string (dup)), t (absl::string_view (dup)), t (absl::Cord (dup)), //
441- t (std::string (large)), t (absl::string_view (large)), //
442- t (absl::Cord (large)), //
443- t (std::string (huge)), t (absl::string_view (huge)), //
444- t (FlatCord (huge)), t (FragmentedCord (huge)))));
444+ EXPECT_TRUE (absl::VerifyTypeImplementsAbslHashCorrectly (std::make_tuple (
445+ t (std::string ()), t (absl::string_view ()), t (absl::Cord ()),
446+ t (std::string (" " )), t (absl::string_view (" " )), t (absl::Cord (" " )),
447+ t (std::string (small)), t (absl::string_view (small)), t (absl::Cord (small)),
448+ t (FragmentedCord (small)), t (std::string (dup)), t (absl::string_view (dup)),
449+ t (absl::Cord (dup)), t (std::string (large)), t (absl::string_view (large)),
450+ t (absl::Cord (large)), t (std::string (huge)), t (absl::string_view (huge)),
451+ t (FlatCord (huge)), t (FragmentedCord (huge)))));
445452
446453 // Make sure that hashing a `const char*` does not use its string-value.
447454 EXPECT_NE (SpyHash (static_cast <const char *>(" ABC" )),
448455 SpyHash (absl::string_view (" ABC" )));
449456}
450457
458+ TEST (HashValueTest, StringsVector) {
459+ using Vec = std::vector<std::string>;
460+ EXPECT_TRUE (absl::VerifyTypeImplementsAbslHashCorrectly (std::make_tuple (
461+ Vec{" abc" , " def" }, Vec{" abcde" , " f" },
462+ Vec{" abcdefghijklmnopqrstuvwxyz" , " ABCDEFGHIJKLMNOPQRSTUVWXYZ" },
463+ Vec{" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY" , " Z" })));
464+ }
465+
451466TEST (HashValueTest, WString) {
452467 EXPECT_TRUE ((is_hashable<std::wstring>::value));
453468
0 commit comments