1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
// 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 "core/fxcrt/xml/cfx_xmlinstruction.h"
#include "core/fxcrt/cfx_memorystream.h"
#include "core/fxcrt/xml/cfx_xmlelement.h"
#include "core/fxcrt/xml/cfx_xmlparser.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/string_write_stream.h"
#include "testing/test_support.h"
TEST(CFX_XMLInstructionTest, GetType) {
CFX_XMLInstruction node(L"acrobat");
EXPECT_EQ(FX_XMLNODE_Instruction, node.GetType());
}
TEST(CFX_XMLInstructionTest, AcrobatInstruction) {
CFX_XMLInstruction node(L"acrobat");
EXPECT_TRUE(node.IsAcrobat());
EXPECT_FALSE(node.IsOriginalXFAVersion());
}
TEST(CFX_XMLInstructionTest, OriginalXFAInstruction) {
CFX_XMLInstruction node(L"originalXFAVersion");
EXPECT_TRUE(node.IsOriginalXFAVersion());
EXPECT_FALSE(node.IsAcrobat());
}
TEST(CFX_XMLInstructionTest, TargetData) {
CFX_XMLInstruction node(L"acrobat");
EXPECT_EQ(0U, node.GetTargetData().size());
node.AppendData(L"firstString");
node.AppendData(L"secondString");
auto& data = node.GetTargetData();
ASSERT_EQ(2U, data.size());
EXPECT_EQ(L"firstString", data[0]);
EXPECT_EQ(L"secondString", data[1]);
}
TEST(CFX_XMLInstructionTest, Clone) {
CFX_XMLInstruction node(L"acrobat");
node.AppendData(L"firstString");
node.AppendData(L"secondString");
auto clone = node.Clone();
EXPECT_TRUE(clone != nullptr);
ASSERT_EQ(FX_XMLNODE_Instruction, clone->GetType());
CFX_XMLInstruction* inst = static_cast<CFX_XMLInstruction*>(clone.get());
EXPECT_TRUE(inst->IsAcrobat());
auto& data = inst->GetTargetData();
ASSERT_EQ(2U, data.size());
EXPECT_EQ(L"firstString", data[0]);
EXPECT_EQ(L"secondString", data[1]);
}
TEST(CFX_XMLInstructionTest, SaveXML) {
auto stream = pdfium::MakeRetain<StringWriteStream>();
CFX_XMLInstruction node(L"xml");
node.Save(stream);
EXPECT_EQ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", stream->ToString());
}
TEST(CFX_XMLInstructionTest, SaveAcrobat) {
auto stream = pdfium::MakeRetain<StringWriteStream>();
CFX_XMLInstruction node(L"acrobat");
node.AppendData(L"http://www.xfa.org/schema/xfa-template/3.3/");
node.AppendData(L"Display:1");
node.Save(stream);
EXPECT_EQ(
"<?acrobat http://www.xfa.org/schema/xfa-template/3.3/ Display:1 ?>\n",
stream->ToString());
}
TEST(CFX_XMLInstructionTest, ParseAndReSave) {
const char* input =
"<?acrobat http://www.xfa.org/schema/xfa-template/3.3/ Display:1 ?>\n"
"<node></node>";
auto in_stream = pdfium::MakeRetain<CFX_MemoryStream>(
reinterpret_cast<uint8_t*>(const_cast<char*>(input)), strlen(input),
false);
CFX_XMLElement root(L"root");
CFX_XMLParser parser(&root, in_stream);
ASSERT_TRUE(parser.Parse());
ASSERT_TRUE(root.GetFirstChild() != nullptr);
ASSERT_EQ(FX_XMLNODE_Instruction, root.GetFirstChild()->GetType());
CFX_XMLInstruction* node =
static_cast<CFX_XMLInstruction*>(root.GetFirstChild());
ASSERT_TRUE(node != nullptr);
EXPECT_TRUE(node->IsAcrobat());
auto& data = node->GetTargetData();
ASSERT_EQ(2U, data.size());
EXPECT_EQ(L"http://www.xfa.org/schema/xfa-template/3.3/", data[0]);
EXPECT_EQ(L"Display:1", data[1]);
auto out_stream = pdfium::MakeRetain<StringWriteStream>();
node->Save(out_stream);
EXPECT_EQ(
"<?acrobat http://www.xfa.org/schema/xfa-template/3.3/ Display:1 ?>\n",
out_stream->ToString());
}
|