xref: /aosp_15_r20/external/pdfium/xfa/fxfa/parser/xfa_basic_data_unittest.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2018 The PDFium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "xfa/fxfa/parser/xfa_basic_data.h"
6 
7 #include "testing/gtest/include/gtest/gtest.h"
8 
TEST(XFABasicDataTest,GetPacketByName)9 TEST(XFABasicDataTest, GetPacketByName) {
10   absl::optional<XFA_PACKETINFO> result = XFA_GetPacketByName(L"");
11   EXPECT_FALSE(result.has_value());
12 
13   result = XFA_GetPacketByName(L"nonesuch");
14   EXPECT_FALSE(result.has_value());
15 
16   result = XFA_GetPacketByName(L"datasets");
17   ASSERT_TRUE(result.has_value());
18   EXPECT_EQ(XFA_PacketType::Datasets, result.value().packet_type);
19 
20   result = XFA_GetPacketByName(L"sourceSet");
21   ASSERT_TRUE(result.has_value());
22   EXPECT_EQ(XFA_PacketType::SourceSet, result.value().packet_type);
23 }
24 
TEST(XFABasicDataTest,PacketToName)25 TEST(XFABasicDataTest, PacketToName) {
26   XFA_PACKETINFO result = XFA_GetPacketByIndex(XFA_PacketType::Datasets);
27   EXPECT_STREQ("datasets", result.name);
28 
29   result = XFA_GetPacketByIndex(XFA_PacketType::ConnectionSet);
30   EXPECT_STREQ("connectionSet", result.name);
31 }
32 
TEST(XFABasicDataTest,GetElementByName)33 TEST(XFABasicDataTest, GetElementByName) {
34   EXPECT_EQ(XFA_Element::Unknown, XFA_GetElementByName(L""));
35   EXPECT_EQ(XFA_Element::Unknown, XFA_GetElementByName(L"nonesuch"));
36   EXPECT_EQ(XFA_Element::ConnectionSet, XFA_GetElementByName(L"connectionSet"));
37   EXPECT_EQ(XFA_Element::Items, XFA_GetElementByName(L"items"));
38 
39   // Internal elements are not retrievable by name.
40   EXPECT_EQ(XFA_Element::Unknown, XFA_GetElementByName(L"model"));
41 }
42 
TEST(XFABasicDataTest,ElementToName)43 TEST(XFABasicDataTest, ElementToName) {
44   EXPECT_EQ("conformance", XFA_ElementToName(XFA_Element::Conformance));
45   EXPECT_EQ("tagged", XFA_ElementToName(XFA_Element::Tagged));
46 
47   // Internal elements resolve back to real names.
48   EXPECT_EQ("node", XFA_ElementToName(XFA_Element::Node));
49 }
50 
TEST(XFABasicDataTest,GetAttributeByName)51 TEST(XFABasicDataTest, GetAttributeByName) {
52   absl::optional<XFA_ATTRIBUTEINFO> result = XFA_GetAttributeByName(L"");
53   EXPECT_FALSE(result.has_value());
54 
55   result = XFA_GetAttributeByName(L"nonesuch");
56   EXPECT_FALSE(result.has_value());
57 
58   result = XFA_GetAttributeByName(L"h");
59   ASSERT_TRUE(result.has_value());
60   EXPECT_EQ(XFA_Attribute::H, result.value().attribute);
61 
62   result = XFA_GetAttributeByName(L"short");
63   ASSERT_TRUE(result.has_value());
64   EXPECT_EQ(XFA_Attribute::Short, result.value().attribute);
65 
66   result = XFA_GetAttributeByName(L"decipherOnly");
67   ASSERT_TRUE(result.has_value());
68   EXPECT_EQ(XFA_Attribute::DecipherOnly, result.value().attribute);
69 }
70 
TEST(XFABasicDataTest,AttributeToName)71 TEST(XFABasicDataTest, AttributeToName) {
72   EXPECT_EQ("spaceBelow", XFA_AttributeToName(XFA_Attribute::SpaceBelow));
73   EXPECT_EQ("decipherOnly", XFA_AttributeToName(XFA_Attribute::DecipherOnly));
74 }
75 
TEST(XFABasicDataTest,GetAttributeValueByName)76 TEST(XFABasicDataTest, GetAttributeValueByName) {
77   absl::optional<XFA_AttributeValue> result = XFA_GetAttributeValueByName(L"");
78   EXPECT_FALSE(result.has_value());
79 
80   result = XFA_GetAttributeValueByName(L"nonesuch");
81   EXPECT_FALSE(result.has_value());
82 
83   result = XFA_GetAttributeValueByName(L"*");
84   ASSERT_TRUE(result.has_value());
85   EXPECT_EQ(XFA_AttributeValue::Asterisk, result.value());
86 
87   result = XFA_GetAttributeValueByName(L"visible");
88   ASSERT_TRUE(result.has_value());
89   EXPECT_EQ(XFA_AttributeValue::Visible, result.value());
90 
91   result = XFA_GetAttributeValueByName(L"lowered");
92   ASSERT_TRUE(result.has_value());
93   EXPECT_EQ(XFA_AttributeValue::Lowered, result.value());
94 }
95 
TEST(XFABasicDataTest,AttributeValueToName)96 TEST(XFABasicDataTest, AttributeValueToName) {
97   EXPECT_EQ("rl-tb", XFA_AttributeValueToName(XFA_AttributeValue::Rl_tb));
98   EXPECT_EQ("lowered", XFA_AttributeValueToName(XFA_AttributeValue::Lowered));
99 }
100