|  | // Copyright 2018 PDFium Authors. All rights reserved. | 
|  | // 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, false)) << str; | 
|  | EXPECT_LT(*so_far, hash) << hash; | 
|  | } else { | 
|  | EXPECT_NE(hash, FX_HashCode_GetAsIfW(str, false)) << 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____ | 
|  | } |