Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: xfa/fde/xml/fde_xml_imp_unittest.cpp

Issue 1842633004: Fix CData parsing in CFDE_XMLSyntaxParser. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 PDFium Authors. All rights reserved.
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/fde/xml/fde_xml_imp.h"
6
7 #include "xfa/fgas/crt/fgas_stream.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 TEST(CFDE_XMLSyntaxParser, CData) {
11 const FX_WCHAR* input =
12 L"<script contentType=\"application/x-javascript\">\n"
13 " <![CDATA[\n"
Tom Sepez 2016/03/30 16:55:30 I'd like to see some variations on this as in <!>
dsinclair 2016/03/30 17:32:13 Added a bunch of tests. Any more? (And a bunch of
14 " if (a[1] < 3)\n"
15 " app.alert(\"Tclams\");\n"
Tom Sepez 2016/03/30 16:55:30 Since were'e in cdata, we should test having an em
dsinclair 2016/03/30 17:32:13 Done.
16 " ]]>\n"
17 "</script>";
18
19 const FX_WCHAR* cdata =
20 L"\n"
21 " if (a[1] < 3)\n"
22 " app.alert(\"Tclams\");\n"
23 " ";
24
25 // We *2 because we pass in the uint8_t, not the FX_WCHAR.
26 size_t len = FXSYS_wcslen(input) * 2;
Tom Sepez 2016/03/30 16:55:30 Needs to be sizeof(FX_WCHAR) (2 vs. 4 depending on
dsinclair 2016/03/30 17:32:13 Done.
27 std::unique_ptr<IFX_Stream> stream = std::unique_ptr<IFX_Stream>(
Tom Sepez 2016/03/30 16:55:30 Just std::unique_ptr<IFX_Stream> stream(FX_Stream:
dsinclair 2016/03/30 17:32:13 Done.
28 IFX_Stream::CreateStream((uint8_t*)input, len, 0));
29 CFDE_XMLSyntaxParser parser;
30 parser.Init(stream.get(), 256);
Tom Sepez 2016/03/30 16:55:30 why 256?
dsinclair 2016/03/30 17:32:13 No particular reason. Has to be > 0, and at 256 it
31
32 CFX_WideString data;
33
34 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementOpen, parser.DoSyntaxParse());
35 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_TagName, parser.DoSyntaxParse());
36 parser.GetTagName(data);
37 EXPECT_EQ(L"script", data);
38
39 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriName, parser.DoSyntaxParse());
40 parser.GetAttributeName(data);
41 EXPECT_EQ(L"contentType", data);
42 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_AttriValue, parser.DoSyntaxParse());
43 parser.GetAttributeValue(data);
44 EXPECT_EQ(L"application/x-javascript", data);
45
46 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementBreak, parser.DoSyntaxParse());
47 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse());
48 parser.GetTextData(data);
49 EXPECT_EQ(L"\n ", data);
50
51 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_CData, parser.DoSyntaxParse());
52 parser.GetTextData(data);
53 EXPECT_EQ(cdata, data);
54
55 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_Text, parser.DoSyntaxParse());
56 parser.GetTextData(data);
57 EXPECT_EQ(L"\n", data);
58
59 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_ElementClose, parser.DoSyntaxParse());
60 parser.GetTagName(data);
61 EXPECT_EQ(L"script", data);
62
63 EXPECT_EQ(FDE_XMLSYNTAXSTATUS_EOS, parser.DoSyntaxParse());
64 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698