| // Copyright 2018 The PDFium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "xfa/fxfa/fxfa_basic.h" | 
 |  | 
 | #include "core/fxcrt/bytestring.h" | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 |  | 
 | namespace { | 
 |  | 
 | void HashTestCase(uint32_t hash, const char* str, uint32_t* so_far) { | 
 |   if (hash != 0xffffffffu) { | 
 |     EXPECT_EQ(hash, FX_HashCode_GetAsIfW(str)) << str; | 
 |     EXPECT_LT(*so_far, hash) << hash; | 
 |   } else { | 
 |     EXPECT_NE(hash, FX_HashCode_GetAsIfW(str)) << str; | 
 |   } | 
 |   *so_far = hash; | 
 | } | 
 |  | 
 | }  // namespace | 
 |  | 
 | TEST(FXFABasic, PacketHashTest) { | 
 |   uint32_t so_far = 0; | 
 | #undef PCKT____ | 
 | #define PCKT____(a, b, c, d, e, f) HashTestCase(a, b, &so_far); | 
 | #include "xfa/fxfa/parser/packets.inc" | 
 | #undef PCKT____ | 
 | } | 
 |  | 
 | TEST(FXFABasic, AttributeHashTest) { | 
 |   uint32_t so_far = 0; | 
 | #undef ATTR____ | 
 | #define ATTR____(a, b, c, d) HashTestCase(a, b, &so_far); | 
 | #include "xfa/fxfa/parser/attributes.inc" | 
 | #undef ATTR____ | 
 | } | 
 |  | 
 | TEST(FXFABasic, ValueHashTest) { | 
 |   uint32_t so_far = 0; | 
 | #undef VALUE____ | 
 | #define VALUE____(a, b, c) HashTestCase(a, b, &so_far); | 
 | #include "xfa/fxfa/parser/attribute_values.inc" | 
 | #undef VALUE____ | 
 | } | 
 |  | 
 | TEST(FXFABasic, ElementHashTest) { | 
 |   uint32_t so_far = 0; | 
 | #undef ELEM____ | 
 | #define ELEM____(a, b, c, d) HashTestCase(a, b, &so_far); | 
 | #include "xfa/fxfa/parser/elements.inc" | 
 | #undef ELEM____ | 
 | } |