| // 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/parser/xfa_basic_data.h" |
| |
| #include <utility> |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace { |
| |
| void DoElementAttrTestCase(XFA_Element elem, |
| XFA_Attribute attr, |
| std::pair<XFA_Element, XFA_Attribute>* so_far) { |
| auto curr = std::make_pair(elem, attr); |
| EXPECT_LE(*so_far, curr) << " for " << static_cast<int>(elem) << ", " |
| << static_cast<int>(attr); |
| *so_far = curr; |
| } |
| |
| } // namespace |
| |
| TEST(XFABasicDataTest, GetAttributeByName) { |
| Optional<XFA_ATTRIBUTEINFO> result = XFA_GetAttributeByName(L""); |
| EXPECT_FALSE(result.has_value()); |
| |
| result = XFA_GetAttributeByName(L"nonesuch"); |
| EXPECT_FALSE(result.has_value()); |
| |
| result = XFA_GetAttributeByName(L"h"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_Attribute::H, result.value().attribute); |
| |
| result = XFA_GetAttributeByName(L"short"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_Attribute::Short, result.value().attribute); |
| |
| result = XFA_GetAttributeByName(L"decipherOnly"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_Attribute::DecipherOnly, result.value().attribute); |
| } |
| |
| TEST(XFABasicDataTest, GetAttributeValueByName) { |
| Optional<XFA_AttributeValue> result = XFA_GetAttributeValueByName(L""); |
| EXPECT_FALSE(result.has_value()); |
| |
| result = XFA_GetAttributeValueByName(L"nonesuch"); |
| EXPECT_FALSE(result.has_value()); |
| |
| result = XFA_GetAttributeValueByName(L"*"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_AttributeValue::Asterisk, result.value()); |
| |
| result = XFA_GetAttributeValueByName(L"visible"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_AttributeValue::Visible, result.value()); |
| |
| result = XFA_GetAttributeValueByName(L"lowered"); |
| ASSERT_TRUE(result.has_value()); |
| EXPECT_EQ(XFA_AttributeValue::Lowered, result.value()); |
| } |
| |
| // TODO(tsepez): convert EXPECT_LE to EXPECT_LT after removing duplicate rows. |
| TEST(XFABasicDataText, ElementAttributeOrder) { |
| std::pair<XFA_Element, XFA_Attribute> so_far = {}; |
| #undef ELEM_ATTR____ |
| #define ELEM_ATTR____(a, b, c) \ |
| DoElementAttrTestCase(XFA_Element::a, XFA_Attribute::b, &so_far); |
| #include "xfa/fxfa/parser/element_attributes.inc" |
| #undef ELEM_ATTR____ |
| } |