OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "xfa/fde/xml/fde_xml_imp.h" | 5 #include "xfa/fde/xml/fde_xml_imp.h" |
6 | 6 |
7 #include "xfa/fgas/crt/fgas_stream.h" | 7 #include "xfa/fgas/crt/fgas_stream.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 TEST(CFDE_XMLSyntaxParser, CData) { | 10 TEST(CFDE_XMLSyntaxParser, CData) { |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 25 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
26 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 26 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
27 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 27 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
28 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 28 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
29 CFDE_XMLSyntaxParser parser; | 29 CFDE_XMLSyntaxParser parser; |
30 parser.Init(stream.get(), 256); | 30 parser.Init(stream.get(), 256); |
31 | 31 |
32 CFX_WideString data; | 32 CFX_WideString data; |
33 | 33 |
34 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 34 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
35 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 35 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
36 parser.GetTagName(data); | 36 parser.GetTagName(data); |
37 EXPECT_EQ(L"script", data); | 37 EXPECT_EQ(L"script", data); |
38 | 38 |
39 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 39 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
40 parser.GetAttributeName(data); | 40 parser.GetAttributeName(data); |
41 EXPECT_EQ(L"contentType", data); | 41 EXPECT_EQ(L"contentType", data); |
42 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 42 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
43 parser.GetAttributeValue(data); | 43 parser.GetAttributeValue(data); |
44 EXPECT_EQ(L"application/x-javascript", data); | 44 EXPECT_EQ(L"application/x-javascript", data); |
45 | 45 |
46 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 46 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
47 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 47 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
48 parser.GetTextData(data); | 48 parser.GetTextData(data); |
49 EXPECT_EQ(L"\n ", data); | 49 EXPECT_EQ(L"\n ", data); |
50 | 50 |
51 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_CData, parser.DoSyntaxParse()); | 51 EXPECT_EQ(FDE_XmlSyntaxResult::CData, parser.DoSyntaxParse()); |
52 parser.GetTextData(data); | 52 parser.GetTextData(data); |
53 EXPECT_EQ(cdata, data); | 53 EXPECT_EQ(cdata, data); |
54 | 54 |
55 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 55 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
56 parser.GetTextData(data); | 56 parser.GetTextData(data); |
57 EXPECT_EQ(L"\n", data); | 57 EXPECT_EQ(L"\n", data); |
58 | 58 |
59 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 59 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
60 parser.GetTagName(data); | 60 parser.GetTagName(data); |
61 EXPECT_EQ(L"script", data); | 61 EXPECT_EQ(L"script", data); |
62 | 62 |
63 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 63 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
64 } | 64 } |
65 | 65 |
66 TEST(CFDE_XMLSyntaxParser, CDataWithInnerScript) { | 66 TEST(CFDE_XMLSyntaxParser, CDataWithInnerScript) { |
67 const FX_WCHAR* input = | 67 const FX_WCHAR* input = |
68 L"<script contentType=\"application/x-javascript\">\n" | 68 L"<script contentType=\"application/x-javascript\">\n" |
69 L" <![CDATA[\n" | 69 L" <![CDATA[\n" |
70 L" if (a[1] < 3)\n" | 70 L" if (a[1] < 3)\n" |
71 L" app.alert(\"Tclams\");\n" | 71 L" app.alert(\"Tclams\");\n" |
72 L" </script>\n" | 72 L" </script>\n" |
73 L" ]]>\n" | 73 L" ]]>\n" |
74 L"</script>"; | 74 L"</script>"; |
75 | 75 |
76 const FX_WCHAR* cdata = | 76 const FX_WCHAR* cdata = |
77 L"\n" | 77 L"\n" |
78 L" if (a[1] < 3)\n" | 78 L" if (a[1] < 3)\n" |
79 L" app.alert(\"Tclams\");\n" | 79 L" app.alert(\"Tclams\");\n" |
80 L" </script>\n" | 80 L" </script>\n" |
81 L" "; | 81 L" "; |
82 | 82 |
83 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 83 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
84 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 84 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
85 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 85 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
86 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 86 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
87 CFDE_XMLSyntaxParser parser; | 87 CFDE_XMLSyntaxParser parser; |
88 parser.Init(stream.get(), 256); | 88 parser.Init(stream.get(), 256); |
89 | 89 |
90 CFX_WideString data; | 90 CFX_WideString data; |
91 | 91 |
92 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 92 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
93 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 93 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
94 parser.GetTagName(data); | 94 parser.GetTagName(data); |
95 EXPECT_EQ(L"script", data); | 95 EXPECT_EQ(L"script", data); |
96 | 96 |
97 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 97 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
98 parser.GetAttributeName(data); | 98 parser.GetAttributeName(data); |
99 EXPECT_EQ(L"contentType", data); | 99 EXPECT_EQ(L"contentType", data); |
100 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 100 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
101 parser.GetAttributeValue(data); | 101 parser.GetAttributeValue(data); |
102 EXPECT_EQ(L"application/x-javascript", data); | 102 EXPECT_EQ(L"application/x-javascript", data); |
103 | 103 |
104 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 104 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
105 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 105 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
106 parser.GetTextData(data); | 106 parser.GetTextData(data); |
107 EXPECT_EQ(L"\n ", data); | 107 EXPECT_EQ(L"\n ", data); |
108 | 108 |
109 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_CData, parser.DoSyntaxParse()); | 109 EXPECT_EQ(FDE_XmlSyntaxResult::CData, parser.DoSyntaxParse()); |
110 parser.GetTextData(data); | 110 parser.GetTextData(data); |
111 EXPECT_EQ(cdata, data); | 111 EXPECT_EQ(cdata, data); |
112 | 112 |
113 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 113 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
114 parser.GetTextData(data); | 114 parser.GetTextData(data); |
115 EXPECT_EQ(L"\n", data); | 115 EXPECT_EQ(L"\n", data); |
116 | 116 |
117 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 117 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
118 parser.GetTagName(data); | 118 parser.GetTagName(data); |
119 EXPECT_EQ(L"script", data); | 119 EXPECT_EQ(L"script", data); |
120 | 120 |
121 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 121 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
122 } | 122 } |
123 | 123 |
124 TEST(CFDE_XMLSyntaxParser, ArrowBangArrow) { | 124 TEST(CFDE_XMLSyntaxParser, ArrowBangArrow) { |
125 const FX_WCHAR* input = | 125 const FX_WCHAR* input = |
126 L"<script contentType=\"application/x-javascript\">\n" | 126 L"<script contentType=\"application/x-javascript\">\n" |
127 L" <!>\n" | 127 L" <!>\n" |
128 L"</script>"; | 128 L"</script>"; |
129 | 129 |
130 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 130 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
131 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 131 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
132 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 132 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
133 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 133 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
134 CFDE_XMLSyntaxParser parser; | 134 CFDE_XMLSyntaxParser parser; |
135 parser.Init(stream.get(), 256); | 135 parser.Init(stream.get(), 256); |
136 | 136 |
137 CFX_WideString data; | 137 CFX_WideString data; |
138 | 138 |
139 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 139 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
140 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 140 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
141 parser.GetTagName(data); | 141 parser.GetTagName(data); |
142 EXPECT_EQ(L"script", data); | 142 EXPECT_EQ(L"script", data); |
143 | 143 |
144 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 144 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
145 parser.GetAttributeName(data); | 145 parser.GetAttributeName(data); |
146 EXPECT_EQ(L"contentType", data); | 146 EXPECT_EQ(L"contentType", data); |
147 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 147 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
148 parser.GetAttributeValue(data); | 148 parser.GetAttributeValue(data); |
149 EXPECT_EQ(L"application/x-javascript", data); | 149 EXPECT_EQ(L"application/x-javascript", data); |
150 | 150 |
151 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 151 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
152 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 152 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
153 parser.GetTextData(data); | 153 parser.GetTextData(data); |
154 EXPECT_EQ(L"\n ", data); | 154 EXPECT_EQ(L"\n ", data); |
155 | 155 |
156 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 156 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
157 parser.GetTextData(data); | 157 parser.GetTextData(data); |
158 EXPECT_EQ(L"\n", data); | 158 EXPECT_EQ(L"\n", data); |
159 | 159 |
160 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 160 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
161 parser.GetTagName(data); | 161 parser.GetTagName(data); |
162 EXPECT_EQ(L"script", data); | 162 EXPECT_EQ(L"script", data); |
163 | 163 |
164 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 164 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
165 } | 165 } |
166 | 166 |
167 TEST(CFDE_XMLSyntaxParser, ArrowBangBracketArrow) { | 167 TEST(CFDE_XMLSyntaxParser, ArrowBangBracketArrow) { |
168 const FX_WCHAR* input = | 168 const FX_WCHAR* input = |
169 L"<script contentType=\"application/x-javascript\">\n" | 169 L"<script contentType=\"application/x-javascript\">\n" |
170 L" <![>\n" | 170 L" <![>\n" |
171 L"</script>"; | 171 L"</script>"; |
172 | 172 |
173 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 173 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
174 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 174 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
175 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 175 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
176 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 176 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
177 CFDE_XMLSyntaxParser parser; | 177 CFDE_XMLSyntaxParser parser; |
178 parser.Init(stream.get(), 256); | 178 parser.Init(stream.get(), 256); |
179 | 179 |
180 CFX_WideString data; | 180 CFX_WideString data; |
181 | 181 |
182 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 182 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
183 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 183 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
184 parser.GetTagName(data); | 184 parser.GetTagName(data); |
185 EXPECT_EQ(L"script", data); | 185 EXPECT_EQ(L"script", data); |
186 | 186 |
187 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 187 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
188 parser.GetAttributeName(data); | 188 parser.GetAttributeName(data); |
189 EXPECT_EQ(L"contentType", data); | 189 EXPECT_EQ(L"contentType", data); |
190 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 190 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
191 parser.GetAttributeValue(data); | 191 parser.GetAttributeValue(data); |
192 EXPECT_EQ(L"application/x-javascript", data); | 192 EXPECT_EQ(L"application/x-javascript", data); |
193 | 193 |
194 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 194 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
195 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 195 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
196 parser.GetTextData(data); | 196 parser.GetTextData(data); |
197 EXPECT_EQ(L"\n ", data); | 197 EXPECT_EQ(L"\n ", data); |
198 | 198 |
199 // Parser walks to end of input. | 199 // Parser walks to end of input. |
200 | 200 |
201 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 201 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
202 } | 202 } |
203 | 203 |
204 TEST(CFDE_XMLSyntaxParser, IncompleteCData) { | 204 TEST(CFDE_XMLSyntaxParser, IncompleteCData) { |
205 const FX_WCHAR* input = | 205 const FX_WCHAR* input = |
206 L"<script contentType=\"application/x-javascript\">\n" | 206 L"<script contentType=\"application/x-javascript\">\n" |
207 L" <![CDATA>\n" | 207 L" <![CDATA>\n" |
208 L"</script>"; | 208 L"</script>"; |
209 | 209 |
210 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 210 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
211 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 211 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
212 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 212 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
213 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 213 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
214 CFDE_XMLSyntaxParser parser; | 214 CFDE_XMLSyntaxParser parser; |
215 parser.Init(stream.get(), 256); | 215 parser.Init(stream.get(), 256); |
216 | 216 |
217 CFX_WideString data; | 217 CFX_WideString data; |
218 | 218 |
219 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 219 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
220 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 220 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
221 parser.GetTagName(data); | 221 parser.GetTagName(data); |
222 EXPECT_EQ(L"script", data); | 222 EXPECT_EQ(L"script", data); |
223 | 223 |
224 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 224 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
225 parser.GetAttributeName(data); | 225 parser.GetAttributeName(data); |
226 EXPECT_EQ(L"contentType", data); | 226 EXPECT_EQ(L"contentType", data); |
227 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 227 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
228 parser.GetAttributeValue(data); | 228 parser.GetAttributeValue(data); |
229 EXPECT_EQ(L"application/x-javascript", data); | 229 EXPECT_EQ(L"application/x-javascript", data); |
230 | 230 |
231 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 231 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
232 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 232 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
233 parser.GetTextData(data); | 233 parser.GetTextData(data); |
234 EXPECT_EQ(L"\n ", data); | 234 EXPECT_EQ(L"\n ", data); |
235 | 235 |
236 // Parser walks to end of input. | 236 // Parser walks to end of input. |
237 | 237 |
238 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 238 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
239 } | 239 } |
240 | 240 |
241 TEST(CFDE_XMLSyntaxParser, UnClosedCData) { | 241 TEST(CFDE_XMLSyntaxParser, UnClosedCData) { |
242 const FX_WCHAR* input = | 242 const FX_WCHAR* input = |
243 L"<script contentType=\"application/x-javascript\">\n" | 243 L"<script contentType=\"application/x-javascript\">\n" |
244 L" <![CDATA[\n" | 244 L" <![CDATA[\n" |
245 L"</script>"; | 245 L"</script>"; |
246 | 246 |
247 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 247 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
248 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 248 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
249 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 249 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
250 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 250 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
251 CFDE_XMLSyntaxParser parser; | 251 CFDE_XMLSyntaxParser parser; |
252 parser.Init(stream.get(), 256); | 252 parser.Init(stream.get(), 256); |
253 | 253 |
254 CFX_WideString data; | 254 CFX_WideString data; |
255 | 255 |
256 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 256 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
257 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 257 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
258 parser.GetTagName(data); | 258 parser.GetTagName(data); |
259 EXPECT_EQ(L"script", data); | 259 EXPECT_EQ(L"script", data); |
260 | 260 |
261 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 261 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
262 parser.GetAttributeName(data); | 262 parser.GetAttributeName(data); |
263 EXPECT_EQ(L"contentType", data); | 263 EXPECT_EQ(L"contentType", data); |
264 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 264 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
265 parser.GetAttributeValue(data); | 265 parser.GetAttributeValue(data); |
266 EXPECT_EQ(L"application/x-javascript", data); | 266 EXPECT_EQ(L"application/x-javascript", data); |
267 | 267 |
268 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 268 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
269 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 269 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
270 parser.GetTextData(data); | 270 parser.GetTextData(data); |
271 EXPECT_EQ(L"\n ", data); | 271 EXPECT_EQ(L"\n ", data); |
272 | 272 |
273 // Parser walks to end of input. | 273 // Parser walks to end of input. |
274 | 274 |
275 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 275 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
276 } | 276 } |
277 | 277 |
278 TEST(CFDE_XMLSyntaxParser, EmptyCData) { | 278 TEST(CFDE_XMLSyntaxParser, EmptyCData) { |
279 const FX_WCHAR* input = | 279 const FX_WCHAR* input = |
280 L"<script contentType=\"application/x-javascript\">\n" | 280 L"<script contentType=\"application/x-javascript\">\n" |
281 L" <![CDATA[]]>\n" | 281 L" <![CDATA[]]>\n" |
282 L"</script>"; | 282 L"</script>"; |
283 | 283 |
284 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 284 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
285 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 285 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
286 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 286 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
287 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 287 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
288 CFDE_XMLSyntaxParser parser; | 288 CFDE_XMLSyntaxParser parser; |
289 parser.Init(stream.get(), 256); | 289 parser.Init(stream.get(), 256); |
290 | 290 |
291 CFX_WideString data; | 291 CFX_WideString data; |
292 | 292 |
293 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 293 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
294 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 294 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
295 parser.GetTagName(data); | 295 parser.GetTagName(data); |
296 EXPECT_EQ(L"script", data); | 296 EXPECT_EQ(L"script", data); |
297 | 297 |
298 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 298 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
299 parser.GetAttributeName(data); | 299 parser.GetAttributeName(data); |
300 EXPECT_EQ(L"contentType", data); | 300 EXPECT_EQ(L"contentType", data); |
301 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 301 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
302 parser.GetAttributeValue(data); | 302 parser.GetAttributeValue(data); |
303 EXPECT_EQ(L"application/x-javascript", data); | 303 EXPECT_EQ(L"application/x-javascript", data); |
304 | 304 |
305 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 305 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
306 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 306 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
307 parser.GetTextData(data); | 307 parser.GetTextData(data); |
308 EXPECT_EQ(L"\n ", data); | 308 EXPECT_EQ(L"\n ", data); |
309 | 309 |
310 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_CData, parser.DoSyntaxParse()); | 310 EXPECT_EQ(FDE_XmlSyntaxResult::CData, parser.DoSyntaxParse()); |
311 parser.GetTextData(data); | 311 parser.GetTextData(data); |
312 EXPECT_EQ(L"", data); | 312 EXPECT_EQ(L"", data); |
313 | 313 |
314 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 314 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
315 parser.GetTextData(data); | 315 parser.GetTextData(data); |
316 EXPECT_EQ(L"\n", data); | 316 EXPECT_EQ(L"\n", data); |
317 | 317 |
318 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 318 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
319 parser.GetTagName(data); | 319 parser.GetTagName(data); |
320 EXPECT_EQ(L"script", data); | 320 EXPECT_EQ(L"script", data); |
321 | 321 |
322 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 322 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
323 } | 323 } |
324 | 324 |
325 TEST(CFDE_XMLSyntaxParser, Comment) { | 325 TEST(CFDE_XMLSyntaxParser, Comment) { |
326 const FX_WCHAR* input = | 326 const FX_WCHAR* input = |
327 L"<script contentType=\"application/x-javascript\">\n" | 327 L"<script contentType=\"application/x-javascript\">\n" |
328 L" <!-- A Comment -->\n" | 328 L" <!-- A Comment -->\n" |
329 L"</script>"; | 329 L"</script>"; |
330 | 330 |
331 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 331 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
332 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 332 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
333 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 333 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
334 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 334 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
335 CFDE_XMLSyntaxParser parser; | 335 CFDE_XMLSyntaxParser parser; |
336 parser.Init(stream.get(), 256); | 336 parser.Init(stream.get(), 256); |
337 | 337 |
338 CFX_WideString data; | 338 CFX_WideString data; |
339 | 339 |
340 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 340 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
341 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 341 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
342 parser.GetTagName(data); | 342 parser.GetTagName(data); |
343 EXPECT_EQ(L"script", data); | 343 EXPECT_EQ(L"script", data); |
344 | 344 |
345 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 345 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
346 parser.GetAttributeName(data); | 346 parser.GetAttributeName(data); |
347 EXPECT_EQ(L"contentType", data); | 347 EXPECT_EQ(L"contentType", data); |
348 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 348 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
349 parser.GetAttributeValue(data); | 349 parser.GetAttributeValue(data); |
350 EXPECT_EQ(L"application/x-javascript", data); | 350 EXPECT_EQ(L"application/x-javascript", data); |
351 | 351 |
352 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 352 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
353 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 353 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
354 parser.GetTextData(data); | 354 parser.GetTextData(data); |
355 EXPECT_EQ(L"\n ", data); | 355 EXPECT_EQ(L"\n ", data); |
356 | 356 |
357 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 357 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
358 parser.GetTextData(data); | 358 parser.GetTextData(data); |
359 EXPECT_EQ(L"\n", data); | 359 EXPECT_EQ(L"\n", data); |
360 | 360 |
361 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 361 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
362 parser.GetTagName(data); | 362 parser.GetTagName(data); |
363 EXPECT_EQ(L"script", data); | 363 EXPECT_EQ(L"script", data); |
364 | 364 |
365 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 365 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
366 } | 366 } |
367 | 367 |
368 TEST(CFDE_XMLSyntaxParser, IncorrectCommentStart) { | 368 TEST(CFDE_XMLSyntaxParser, IncorrectCommentStart) { |
369 const FX_WCHAR* input = | 369 const FX_WCHAR* input = |
370 L"<script contentType=\"application/x-javascript\">\n" | 370 L"<script contentType=\"application/x-javascript\">\n" |
371 L" <!- A Comment -->\n" | 371 L" <!- A Comment -->\n" |
372 L"</script>"; | 372 L"</script>"; |
373 | 373 |
374 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 374 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
375 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 375 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
376 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 376 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
377 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 377 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
378 CFDE_XMLSyntaxParser parser; | 378 CFDE_XMLSyntaxParser parser; |
379 parser.Init(stream.get(), 256); | 379 parser.Init(stream.get(), 256); |
380 | 380 |
381 CFX_WideString data; | 381 CFX_WideString data; |
382 | 382 |
383 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 383 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
384 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 384 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
385 parser.GetTagName(data); | 385 parser.GetTagName(data); |
386 EXPECT_EQ(L"script", data); | 386 EXPECT_EQ(L"script", data); |
387 | 387 |
388 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 388 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
389 parser.GetAttributeName(data); | 389 parser.GetAttributeName(data); |
390 EXPECT_EQ(L"contentType", data); | 390 EXPECT_EQ(L"contentType", data); |
391 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 391 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
392 parser.GetAttributeValue(data); | 392 parser.GetAttributeValue(data); |
393 EXPECT_EQ(L"application/x-javascript", data); | 393 EXPECT_EQ(L"application/x-javascript", data); |
394 | 394 |
395 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 395 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
396 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 396 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
397 parser.GetTextData(data); | 397 parser.GetTextData(data); |
398 EXPECT_EQ(L"\n ", data); | 398 EXPECT_EQ(L"\n ", data); |
399 | 399 |
400 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 400 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
401 parser.GetTextData(data); | 401 parser.GetTextData(data); |
402 EXPECT_EQ(L"\n", data); | 402 EXPECT_EQ(L"\n", data); |
403 | 403 |
404 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 404 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
405 parser.GetTagName(data); | 405 parser.GetTagName(data); |
406 EXPECT_EQ(L"script", data); | 406 EXPECT_EQ(L"script", data); |
407 | 407 |
408 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 408 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
409 } | 409 } |
410 | 410 |
411 TEST(CFDE_XMLSyntaxParser, CommentEmpty) { | 411 TEST(CFDE_XMLSyntaxParser, CommentEmpty) { |
412 const FX_WCHAR* input = | 412 const FX_WCHAR* input = |
413 L"<script contentType=\"application/x-javascript\">\n" | 413 L"<script contentType=\"application/x-javascript\">\n" |
414 L" <!---->\n" | 414 L" <!---->\n" |
415 L"</script>"; | 415 L"</script>"; |
416 | 416 |
417 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 417 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
418 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 418 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
419 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 419 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
420 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 420 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
421 CFDE_XMLSyntaxParser parser; | 421 CFDE_XMLSyntaxParser parser; |
422 parser.Init(stream.get(), 256); | 422 parser.Init(stream.get(), 256); |
423 | 423 |
424 CFX_WideString data; | 424 CFX_WideString data; |
425 | 425 |
426 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 426 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
427 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 427 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
428 parser.GetTagName(data); | 428 parser.GetTagName(data); |
429 EXPECT_EQ(L"script", data); | 429 EXPECT_EQ(L"script", data); |
430 | 430 |
431 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 431 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
432 parser.GetAttributeName(data); | 432 parser.GetAttributeName(data); |
433 EXPECT_EQ(L"contentType", data); | 433 EXPECT_EQ(L"contentType", data); |
434 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 434 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
435 parser.GetAttributeValue(data); | 435 parser.GetAttributeValue(data); |
436 EXPECT_EQ(L"application/x-javascript", data); | 436 EXPECT_EQ(L"application/x-javascript", data); |
437 | 437 |
438 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 438 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
439 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 439 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
440 parser.GetTextData(data); | 440 parser.GetTextData(data); |
441 EXPECT_EQ(L"\n ", data); | 441 EXPECT_EQ(L"\n ", data); |
442 | 442 |
443 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 443 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
444 parser.GetTextData(data); | 444 parser.GetTextData(data); |
445 EXPECT_EQ(L"\n", data); | 445 EXPECT_EQ(L"\n", data); |
446 | 446 |
447 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse()); | 447 EXPECT_EQ(FDE_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse()); |
448 parser.GetTagName(data); | 448 parser.GetTagName(data); |
449 EXPECT_EQ(L"script", data); | 449 EXPECT_EQ(L"script", data); |
450 | 450 |
451 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 451 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
452 } | 452 } |
453 | 453 |
454 TEST(CFDE_XMLSyntaxParser, CommentThreeDash) { | 454 TEST(CFDE_XMLSyntaxParser, CommentThreeDash) { |
455 const FX_WCHAR* input = | 455 const FX_WCHAR* input = |
456 L"<script contentType=\"application/x-javascript\">\n" | 456 L"<script contentType=\"application/x-javascript\">\n" |
457 L" <!--->\n" | 457 L" <!--->\n" |
458 L"</script>"; | 458 L"</script>"; |
459 | 459 |
460 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 460 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
461 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 461 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
462 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 462 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
463 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 463 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
464 CFDE_XMLSyntaxParser parser; | 464 CFDE_XMLSyntaxParser parser; |
465 parser.Init(stream.get(), 256); | 465 parser.Init(stream.get(), 256); |
466 | 466 |
467 CFX_WideString data; | 467 CFX_WideString data; |
468 | 468 |
469 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 469 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
470 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 470 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
471 parser.GetTagName(data); | 471 parser.GetTagName(data); |
472 EXPECT_EQ(L"script", data); | 472 EXPECT_EQ(L"script", data); |
473 | 473 |
474 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 474 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
475 parser.GetAttributeName(data); | 475 parser.GetAttributeName(data); |
476 EXPECT_EQ(L"contentType", data); | 476 EXPECT_EQ(L"contentType", data); |
477 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 477 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
478 parser.GetAttributeValue(data); | 478 parser.GetAttributeValue(data); |
479 EXPECT_EQ(L"application/x-javascript", data); | 479 EXPECT_EQ(L"application/x-javascript", data); |
480 | 480 |
481 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 481 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
482 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 482 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
483 parser.GetTextData(data); | 483 parser.GetTextData(data); |
484 EXPECT_EQ(L"\n ", data); | 484 EXPECT_EQ(L"\n ", data); |
485 | 485 |
486 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 486 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
487 } | 487 } |
488 | 488 |
489 TEST(CFDE_XMLSyntaxParser, CommentTwoDash) { | 489 TEST(CFDE_XMLSyntaxParser, CommentTwoDash) { |
490 const FX_WCHAR* input = | 490 const FX_WCHAR* input = |
491 L"<script contentType=\"application/x-javascript\">\n" | 491 L"<script contentType=\"application/x-javascript\">\n" |
492 L" <!-->\n" | 492 L" <!-->\n" |
493 L"</script>"; | 493 L"</script>"; |
494 | 494 |
495 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. | 495 // We * sizeof(FX_WCHAR) because we pass in the uint8_t, not the FX_WCHAR. |
496 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); | 496 size_t len = FXSYS_wcslen(input) * sizeof(FX_WCHAR); |
497 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( | 497 std::unique_ptr<IFX_Stream> stream(IFX_Stream::CreateStream( |
498 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); | 498 reinterpret_cast<uint8_t*>(const_cast<FX_WCHAR*>(input)), len, 0)); |
499 CFDE_XMLSyntaxParser parser; | 499 CFDE_XMLSyntaxParser parser; |
500 parser.Init(stream.get(), 256); | 500 parser.Init(stream.get(), 256); |
501 | 501 |
502 CFX_WideString data; | 502 CFX_WideString data; |
503 | 503 |
504 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse()); | 504 EXPECT_EQ(FDE_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse()); |
505 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse()); | 505 EXPECT_EQ(FDE_XmlSyntaxResult::TagName, parser.DoSyntaxParse()); |
506 parser.GetTagName(data); | 506 parser.GetTagName(data); |
507 EXPECT_EQ(L"script", data); | 507 EXPECT_EQ(L"script", data); |
508 | 508 |
509 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse()); | 509 EXPECT_EQ(FDE_XmlSyntaxResult::AttriName, parser.DoSyntaxParse()); |
510 parser.GetAttributeName(data); | 510 parser.GetAttributeName(data); |
511 EXPECT_EQ(L"contentType", data); | 511 EXPECT_EQ(L"contentType", data); |
512 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse()); | 512 EXPECT_EQ(FDE_XmlSyntaxResult::AttriValue, parser.DoSyntaxParse()); |
513 parser.GetAttributeValue(data); | 513 parser.GetAttributeValue(data); |
514 EXPECT_EQ(L"application/x-javascript", data); | 514 EXPECT_EQ(L"application/x-javascript", data); |
515 | 515 |
516 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse()); | 516 EXPECT_EQ(FDE_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse()); |
517 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse()); | 517 EXPECT_EQ(FDE_XmlSyntaxResult::Text, parser.DoSyntaxParse()); |
518 parser.GetTextData(data); | 518 parser.GetTextData(data); |
519 EXPECT_EQ(L"\n ", data); | 519 EXPECT_EQ(L"\n ", data); |
520 | 520 |
521 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse()); | 521 EXPECT_EQ(FDE_XmlSyntaxResult::EndOfString, parser.DoSyntaxParse()); |
522 } | 522 } |
OLD | NEW |