| 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 |