1 // Copyright 2017 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 "fpdfsdk/pwl/cpwl_edit.h"
6
7 #include "fpdfsdk/cpdfsdk_annot.h"
8 #include "fpdfsdk/cpdfsdk_annotiterator.h"
9 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
10 #include "fpdfsdk/cpdfsdk_helpers.h"
11 #include "fpdfsdk/formfiller/cffl_formfiller.h"
12 #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h"
13 #include "public/fpdf_fwlevent.h"
14 #include "testing/embedder_test.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16
17 class CPWLEditEmbedderTest : public EmbedderTest {
18 protected:
SetUp()19 void SetUp() override {
20 EmbedderTest::SetUp();
21 CreateAndInitializeFormPDF();
22 }
23
TearDown()24 void TearDown() override {
25 UnloadPage(GetPage());
26 EmbedderTest::TearDown();
27 }
28
CreateAndInitializeFormPDF()29 void CreateAndInitializeFormPDF() {
30 EXPECT_TRUE(OpenDocument("text_form_multiple.pdf"));
31 m_page = LoadPage(0);
32 ASSERT_TRUE(m_page);
33
34 m_pFormFillEnv =
35 CPDFSDKFormFillEnvironmentFromFPDFFormHandle(form_handle());
36 CPDFSDK_AnnotIterator iter(m_pFormFillEnv->GetPageViewAtIndex(0),
37 CPDF_Annot::Subtype::WIDGET);
38 // Normal text field.
39 m_pAnnot = iter.GetFirstAnnot();
40 ASSERT_TRUE(m_pAnnot);
41 ASSERT_EQ(CPDF_Annot::Subtype::WIDGET, m_pAnnot->GetAnnotSubtype());
42
43 // Read-only text field.
44 CPDFSDK_Annot* pAnnotReadOnly = iter.GetNextAnnot(m_pAnnot);
45
46 // Pre-filled text field with char limit of 10.
47 m_pAnnotCharLimit = iter.GetNextAnnot(pAnnotReadOnly);
48 ASSERT_TRUE(m_pAnnotCharLimit);
49 ASSERT_EQ(CPDF_Annot::Subtype::WIDGET,
50 m_pAnnotCharLimit->GetAnnotSubtype());
51
52 // Password text field.
53 CPDFSDK_Annot* password_annot = iter.GetNextAnnot(m_pAnnotCharLimit);
54 ASSERT_TRUE(password_annot);
55 ASSERT_EQ(CPDF_Annot::Subtype::WIDGET, password_annot->GetAnnotSubtype());
56
57 CPDFSDK_Annot* pLastAnnot = iter.GetLastAnnot();
58 ASSERT_EQ(password_annot, pLastAnnot);
59 }
60
FormFillerAndWindowSetup(CPDFSDK_Annot * pAnnotTextField)61 void FormFillerAndWindowSetup(CPDFSDK_Annot* pAnnotTextField) {
62 CFFL_InteractiveFormFiller* pInteractiveFormFiller =
63 m_pFormFillEnv->GetInteractiveFormFiller();
64 {
65 ObservedPtr<CPDFSDK_Annot> pObserved(pAnnotTextField);
66 EXPECT_TRUE(pInteractiveFormFiller->OnSetFocus(&pObserved, 0));
67 }
68
69 m_pFormFiller =
70 pInteractiveFormFiller->GetFormFillerForTesting(pAnnotTextField);
71 ASSERT_TRUE(m_pFormFiller);
72
73 CPWL_Wnd* pWindow = m_pFormFiller->GetPWLWindow(
74 m_pFormFillEnv->GetPageViewAtIndex(0), false);
75 ASSERT_TRUE(pWindow);
76 m_pEdit = static_cast<CPWL_Edit*>(pWindow);
77 }
78
TypeTextIntoTextField(int num_chars)79 void TypeTextIntoTextField(int num_chars) {
80 // Type text starting with 'A' to as many chars as specified by |num_chars|.
81 for (int i = 0; i < num_chars; ++i) {
82 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), i + 'A', 0));
83 }
84 }
85
GetPage()86 FPDF_PAGE GetPage() { return m_page; }
GetCPWLEdit()87 CPWL_Edit* GetCPWLEdit() { return m_pEdit; }
GetCFFLFormFiller()88 CFFL_FormFiller* GetCFFLFormFiller() { return m_pFormFiller; }
GetCPDFSDKAnnot()89 CPDFSDK_Annot* GetCPDFSDKAnnot() { return m_pAnnot; }
GetCPDFSDKAnnotCharLimit()90 CPDFSDK_Annot* GetCPDFSDKAnnotCharLimit() { return m_pAnnotCharLimit; }
91
92 private:
93 FPDF_PAGE m_page;
94 CPWL_Edit* m_pEdit;
95 CFFL_FormFiller* m_pFormFiller;
96 CPDFSDK_Annot* m_pAnnot;
97 CPDFSDK_Annot* m_pAnnotCharLimit;
98 CPDFSDK_FormFillEnvironment* m_pFormFillEnv;
99 };
100
TEST_F(CPWLEditEmbedderTest,TypeText)101 TEST_F(CPWLEditEmbedderTest, TypeText) {
102 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
103 EXPECT_TRUE(GetCPWLEdit()->GetText().IsEmpty());
104 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'a', 0));
105 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'b', 0));
106 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'c', 0));
107
108 EXPECT_STREQ(L"abc", GetCPWLEdit()->GetText().c_str());
109 }
110
TEST_F(CPWLEditEmbedderTest,GetSelectedTextEmptyAndBasic)111 TEST_F(CPWLEditEmbedderTest, GetSelectedTextEmptyAndBasic) {
112 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
113 // Attempt to set selection before text has been typed to test that
114 // selection is identified as empty.
115 //
116 // Select from character index [0, 3) within form text field.
117 GetCPWLEdit()->SetSelection(0, 3);
118 EXPECT_TRUE(GetCPWLEdit()->GetSelectedText().IsEmpty());
119
120 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'a', 0));
121 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'b', 0));
122 EXPECT_TRUE(GetCFFLFormFiller()->OnChar(GetCPDFSDKAnnot(), 'c', 0));
123 GetCPWLEdit()->SetSelection(0, 2);
124
125 EXPECT_STREQ(L"ab", GetCPWLEdit()->GetSelectedText().c_str());
126 }
127
TEST_F(CPWLEditEmbedderTest,GetSelectedTextFragments)128 TEST_F(CPWLEditEmbedderTest, GetSelectedTextFragments) {
129 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
130 TypeTextIntoTextField(50);
131
132 GetCPWLEdit()->SetSelection(0, 0);
133 EXPECT_TRUE(GetCPWLEdit()->GetSelectedText().IsEmpty());
134
135 GetCPWLEdit()->SetSelection(0, 1);
136 EXPECT_STREQ(L"A", GetCPWLEdit()->GetSelectedText().c_str());
137
138 GetCPWLEdit()->SetSelection(0, -1);
139 EXPECT_STREQ(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr",
140 GetCPWLEdit()->GetSelectedText().c_str());
141
142 GetCPWLEdit()->SetSelection(-8, -1);
143 EXPECT_TRUE(GetCPWLEdit()->GetSelectedText().IsEmpty());
144
145 GetCPWLEdit()->SetSelection(23, 12);
146 EXPECT_STREQ(L"MNOPQRSTUVW", GetCPWLEdit()->GetSelectedText().c_str());
147
148 GetCPWLEdit()->SetSelection(12, 23);
149 EXPECT_STREQ(L"MNOPQRSTUVW", GetCPWLEdit()->GetSelectedText().c_str());
150
151 GetCPWLEdit()->SetSelection(49, 50);
152 EXPECT_STREQ(L"r", GetCPWLEdit()->GetSelectedText().c_str());
153
154 GetCPWLEdit()->SetSelection(49, 55);
155 EXPECT_STREQ(L"r", GetCPWLEdit()->GetSelectedText().c_str());
156 }
157
TEST_F(CPWLEditEmbedderTest,DeleteEntireTextSelection)158 TEST_F(CPWLEditEmbedderTest, DeleteEntireTextSelection) {
159 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
160 TypeTextIntoTextField(50);
161
162 GetCPWLEdit()->SetSelection(0, -1);
163 EXPECT_STREQ(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr",
164 GetCPWLEdit()->GetSelectedText().c_str());
165
166 GetCPWLEdit()->ReplaceSelection(L"");
167 EXPECT_TRUE(GetCPWLEdit()->GetText().IsEmpty());
168 }
169
TEST_F(CPWLEditEmbedderTest,DeleteTextSelectionMiddle)170 TEST_F(CPWLEditEmbedderTest, DeleteTextSelectionMiddle) {
171 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
172 TypeTextIntoTextField(50);
173
174 GetCPWLEdit()->SetSelection(12, 23);
175 EXPECT_STREQ(L"MNOPQRSTUVW", GetCPWLEdit()->GetSelectedText().c_str());
176
177 GetCPWLEdit()->ReplaceSelection(L"");
178 EXPECT_STREQ(L"ABCDEFGHIJKLXYZ[\\]^_`abcdefghijklmnopqr",
179 GetCPWLEdit()->GetText().c_str());
180 }
181
TEST_F(CPWLEditEmbedderTest,DeleteTextSelectionLeft)182 TEST_F(CPWLEditEmbedderTest, DeleteTextSelectionLeft) {
183 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
184 TypeTextIntoTextField(50);
185
186 GetCPWLEdit()->SetSelection(0, 5);
187 EXPECT_STREQ(L"ABCDE", GetCPWLEdit()->GetSelectedText().c_str());
188
189 GetCPWLEdit()->ReplaceSelection(L"");
190 EXPECT_STREQ(L"FGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr",
191 GetCPWLEdit()->GetText().c_str());
192 }
193
TEST_F(CPWLEditEmbedderTest,DeleteTextSelectionRight)194 TEST_F(CPWLEditEmbedderTest, DeleteTextSelectionRight) {
195 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
196 TypeTextIntoTextField(50);
197
198 GetCPWLEdit()->SetSelection(45, 50);
199 EXPECT_STREQ(L"nopqr", GetCPWLEdit()->GetSelectedText().c_str());
200
201 GetCPWLEdit()->ReplaceSelection(L"");
202 EXPECT_STREQ(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklm",
203 GetCPWLEdit()->GetText().c_str());
204 }
205
TEST_F(CPWLEditEmbedderTest,DeleteEmptyTextSelection)206 TEST_F(CPWLEditEmbedderTest, DeleteEmptyTextSelection) {
207 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
208 TypeTextIntoTextField(50);
209
210 GetCPWLEdit()->ReplaceSelection(L"");
211 EXPECT_STREQ(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr",
212 GetCPWLEdit()->GetText().c_str());
213 }
214
TEST_F(CPWLEditEmbedderTest,InsertTextInEmptyTextField)215 TEST_F(CPWLEditEmbedderTest, InsertTextInEmptyTextField) {
216 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
217 GetCPWLEdit()->ReplaceSelection(L"Hello");
218 EXPECT_STREQ(L"Hello", GetCPWLEdit()->GetText().c_str());
219 }
220
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedTextFieldLeft)221 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedTextFieldLeft) {
222 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
223 TypeTextIntoTextField(10);
224
225 // Move cursor to beginning of text field.
226 EXPECT_TRUE(GetCFFLFormFiller()->OnKeyDown(FWL_VKEY_Home, 0));
227
228 GetCPWLEdit()->ReplaceSelection(L"Hello");
229 EXPECT_STREQ(L"HelloABCDEFGHIJ", GetCPWLEdit()->GetText().c_str());
230 }
231
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedTextFieldMiddle)232 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedTextFieldMiddle) {
233 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
234 TypeTextIntoTextField(10);
235
236 // Move cursor to middle of text field.
237 for (int i = 0; i < 5; ++i) {
238 EXPECT_TRUE(GetCFFLFormFiller()->OnKeyDown(FWL_VKEY_Left, 0));
239 }
240
241 GetCPWLEdit()->ReplaceSelection(L"Hello");
242 EXPECT_STREQ(L"ABCDEHelloFGHIJ", GetCPWLEdit()->GetText().c_str());
243 }
244
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedTextFieldRight)245 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedTextFieldRight) {
246 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
247 TypeTextIntoTextField(10);
248
249 GetCPWLEdit()->ReplaceSelection(L"Hello");
250 EXPECT_STREQ(L"ABCDEFGHIJHello", GetCPWLEdit()->GetText().c_str());
251 }
252
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedTextFieldWhole)253 TEST_F(CPWLEditEmbedderTest,
254 InsertTextAndReplaceSelectionInPopulatedTextFieldWhole) {
255 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
256 TypeTextIntoTextField(10);
257
258 GetCPWLEdit()->SetSelection(0, -1);
259 EXPECT_STREQ(L"ABCDEFGHIJ", GetCPWLEdit()->GetSelectedText().c_str());
260 GetCPWLEdit()->ReplaceSelection(L"Hello");
261 EXPECT_STREQ(L"Hello", GetCPWLEdit()->GetText().c_str());
262 }
263
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedTextFieldLeft)264 TEST_F(CPWLEditEmbedderTest,
265 InsertTextAndReplaceSelectionInPopulatedTextFieldLeft) {
266 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
267 TypeTextIntoTextField(10);
268
269 GetCPWLEdit()->SetSelection(0, 5);
270 EXPECT_STREQ(L"ABCDE", GetCPWLEdit()->GetSelectedText().c_str());
271 GetCPWLEdit()->ReplaceSelection(L"Hello");
272 EXPECT_STREQ(L"HelloFGHIJ", GetCPWLEdit()->GetText().c_str());
273 }
274
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedTextFieldMiddle)275 TEST_F(CPWLEditEmbedderTest,
276 InsertTextAndReplaceSelectionInPopulatedTextFieldMiddle) {
277 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
278 TypeTextIntoTextField(10);
279
280 GetCPWLEdit()->SetSelection(2, 7);
281 EXPECT_STREQ(L"CDEFG", GetCPWLEdit()->GetSelectedText().c_str());
282 GetCPWLEdit()->ReplaceSelection(L"Hello");
283 EXPECT_STREQ(L"ABHelloHIJ", GetCPWLEdit()->GetText().c_str());
284 }
285
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedTextFieldRight)286 TEST_F(CPWLEditEmbedderTest,
287 InsertTextAndReplaceSelectionInPopulatedTextFieldRight) {
288 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
289 TypeTextIntoTextField(10);
290
291 GetCPWLEdit()->SetSelection(5, 10);
292 EXPECT_STREQ(L"FGHIJ", GetCPWLEdit()->GetSelectedText().c_str());
293 GetCPWLEdit()->ReplaceSelection(L"Hello");
294 EXPECT_STREQ(L"ABCDEHello", GetCPWLEdit()->GetText().c_str());
295 }
296
TEST_F(CPWLEditEmbedderTest,InsertTextInEmptyCharLimitTextFieldOverflow)297 TEST_F(CPWLEditEmbedderTest, InsertTextInEmptyCharLimitTextFieldOverflow) {
298 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
299 GetCPWLEdit()->SetSelection(0, -1);
300 EXPECT_STREQ(L"Elephant", GetCPWLEdit()->GetSelectedText().c_str());
301 GetCPWLEdit()->ReplaceSelection(L"");
302
303 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
304 EXPECT_STREQ(L"Hippopotam", GetCPWLEdit()->GetText().c_str());
305 }
306
TEST_F(CPWLEditEmbedderTest,InsertTextInEmptyCharLimitTextFieldFit)307 TEST_F(CPWLEditEmbedderTest, InsertTextInEmptyCharLimitTextFieldFit) {
308 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
309 GetCPWLEdit()->SetSelection(0, -1);
310 EXPECT_STREQ(L"Elephant", GetCPWLEdit()->GetSelectedText().c_str());
311 GetCPWLEdit()->ReplaceSelection(L"");
312
313 GetCPWLEdit()->ReplaceSelection(L"Zebra");
314 EXPECT_STREQ(L"Zebra", GetCPWLEdit()->GetText().c_str());
315 }
316
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedCharLimitTextFieldLeft)317 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedCharLimitTextFieldLeft) {
318 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
319 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
320 EXPECT_STREQ(L"HiElephant", GetCPWLEdit()->GetText().c_str());
321 }
322
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedCharLimitTextFieldMiddle)323 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedCharLimitTextFieldMiddle) {
324 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
325 // Move cursor to middle of text field.
326 for (int i = 0; i < 5; ++i) {
327 EXPECT_TRUE(GetCFFLFormFiller()->OnKeyDown(FWL_VKEY_Right, 0));
328 }
329
330 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
331 EXPECT_STREQ(L"ElephHiant", GetCPWLEdit()->GetText().c_str());
332 }
333
TEST_F(CPWLEditEmbedderTest,InsertTextInPopulatedCharLimitTextFieldRight)334 TEST_F(CPWLEditEmbedderTest, InsertTextInPopulatedCharLimitTextFieldRight) {
335 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
336 // Move cursor to end of text field.
337 EXPECT_TRUE(GetCFFLFormFiller()->OnKeyDown(FWL_VKEY_End, 0));
338
339 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
340 EXPECT_STREQ(L"ElephantHi", GetCPWLEdit()->GetText().c_str());
341 }
342
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldWhole)343 TEST_F(CPWLEditEmbedderTest,
344 InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldWhole) {
345 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
346 GetCPWLEdit()->SetSelection(0, -1);
347 EXPECT_STREQ(L"Elephant", GetCPWLEdit()->GetSelectedText().c_str());
348 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
349 EXPECT_STREQ(L"Hippopotam", GetCPWLEdit()->GetText().c_str());
350 }
351
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldLeft)352 TEST_F(CPWLEditEmbedderTest,
353 InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldLeft) {
354 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
355 GetCPWLEdit()->SetSelection(0, 4);
356 EXPECT_STREQ(L"Elep", GetCPWLEdit()->GetSelectedText().c_str());
357 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
358 EXPECT_STREQ(L"Hippophant", GetCPWLEdit()->GetText().c_str());
359 }
360
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldMiddle)361 TEST_F(CPWLEditEmbedderTest,
362 InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldMiddle) {
363 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
364 GetCPWLEdit()->SetSelection(2, 6);
365 EXPECT_STREQ(L"epha", GetCPWLEdit()->GetSelectedText().c_str());
366 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
367 EXPECT_STREQ(L"ElHippopnt", GetCPWLEdit()->GetText().c_str());
368 }
369
TEST_F(CPWLEditEmbedderTest,InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldRight)370 TEST_F(CPWLEditEmbedderTest,
371 InsertTextAndReplaceSelectionInPopulatedCharLimitTextFieldRight) {
372 FormFillerAndWindowSetup(GetCPDFSDKAnnotCharLimit());
373 GetCPWLEdit()->SetSelection(4, 8);
374 EXPECT_STREQ(L"hant", GetCPWLEdit()->GetSelectedText().c_str());
375 GetCPWLEdit()->ReplaceSelection(L"Hippopotamus");
376 EXPECT_STREQ(L"ElepHippop", GetCPWLEdit()->GetText().c_str());
377 }
378
TEST_F(CPWLEditEmbedderTest,SetTextWithEndCarriageFeed)379 TEST_F(CPWLEditEmbedderTest, SetTextWithEndCarriageFeed) {
380 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
381 GetCPWLEdit()->SetText(L"Foo\r");
382 EXPECT_STREQ(L"Foo", GetCPWLEdit()->GetText().c_str());
383 }
384
TEST_F(CPWLEditEmbedderTest,SetTextWithEndNewline)385 TEST_F(CPWLEditEmbedderTest, SetTextWithEndNewline) {
386 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
387 GetCPWLEdit()->SetText(L"Foo\n");
388 EXPECT_STREQ(L"Foo", GetCPWLEdit()->GetText().c_str());
389 }
390
TEST_F(CPWLEditEmbedderTest,SetTextWithEndCarriageFeedAndNewLine)391 TEST_F(CPWLEditEmbedderTest, SetTextWithEndCarriageFeedAndNewLine) {
392 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
393 GetCPWLEdit()->SetText(L"Foo\r\n");
394 EXPECT_STREQ(L"Foo", GetCPWLEdit()->GetText().c_str());
395 }
396
TEST_F(CPWLEditEmbedderTest,SetTextWithEndNewLineAndCarriageFeed)397 TEST_F(CPWLEditEmbedderTest, SetTextWithEndNewLineAndCarriageFeed) {
398 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
399 GetCPWLEdit()->SetText(L"Foo\n\r");
400 EXPECT_STREQ(L"Foo", GetCPWLEdit()->GetText().c_str());
401 }
402
TEST_F(CPWLEditEmbedderTest,SetTextWithBodyCarriageFeed)403 TEST_F(CPWLEditEmbedderTest, SetTextWithBodyCarriageFeed) {
404 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
405 GetCPWLEdit()->SetText(L"Foo\rBar");
406 EXPECT_STREQ(L"FooBar", GetCPWLEdit()->GetText().c_str());
407 }
408
TEST_F(CPWLEditEmbedderTest,SetTextWithBodyNewline)409 TEST_F(CPWLEditEmbedderTest, SetTextWithBodyNewline) {
410 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
411 GetCPWLEdit()->SetText(L"Foo\nBar");
412 EXPECT_STREQ(L"FooBar", GetCPWLEdit()->GetText().c_str());
413 }
414
TEST_F(CPWLEditEmbedderTest,SetTextWithBodyCarriageFeedAndNewLine)415 TEST_F(CPWLEditEmbedderTest, SetTextWithBodyCarriageFeedAndNewLine) {
416 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
417 GetCPWLEdit()->SetText(L"Foo\r\nBar");
418 EXPECT_STREQ(L"FooBar", GetCPWLEdit()->GetText().c_str());
419 }
420
TEST_F(CPWLEditEmbedderTest,SetTextWithBodyNewLineAndCarriageFeed)421 TEST_F(CPWLEditEmbedderTest, SetTextWithBodyNewLineAndCarriageFeed) {
422 FormFillerAndWindowSetup(GetCPDFSDKAnnot());
423 GetCPWLEdit()->SetText(L"Foo\n\rBar");
424 EXPECT_STREQ(L"FooBar", GetCPWLEdit()->GetText().c_str());
425 }
426