38DEFINE_GUID(
GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
40static const WCHAR sysW[] = {
'S',
'y',
's',
't',
'e',
'm',0};
42#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
47 rc = IUnknown_Release(
obj);
48 ok_(__FILE__,
line)(rc ==
ref,
"expected refcount %d, got %d\n",
ref, rc);
95 IRichEditOle_QueryInterface(*reOle, &IID_ITextDocument,
97 ITextDocument_GetSelection(*txtDoc, txtSel);
104 ITextSelection_Release(*txtSel);
105 ITextDocument_Release(*txtDoc);
106 IRichEditOle_Release(*reOle);
112 IUnknown_AddRef(iface);
113 return IUnknown_Release(iface);
116#define CHECK_TYPEINFO(disp,expected_riid) _check_typeinfo((IDispatch *)disp, expected_riid, __LINE__)
125 hr = IDispatch_GetTypeInfoCount(disp, &
count);
126 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfoCount failed: 0x%08x.\n",
hr);
130 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfo failed: 0x%08x.\n",
hr);
132 hr = ITypeInfo_GetTypeAttr(
typeinfo, &typeattr);
133 ok_(__FILE__,
line)(
hr ==
S_OK,
"ITypeInfo_GetTypeAttr failed: 0x%08x.\n",
hr);
137 ITypeInfo_ReleaseTypeAttr(
typeinfo, typeattr);
156 skip(
"Couldn't create window\n");
161 ok(
res,
"SendMessage\n");
162 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
166 ok(
res == 1,
"SendMessage\n");
167 ok(reOle1 == reOle,
"Should not return a new IRichEditOle interface\n");
170 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument,
172 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
173 ok(txtDoc !=
NULL,
"IRichEditOle_QueryInterface\n");
176 hres = ITextDocument_GetSelection(txtDoc,
NULL);
181 hres = ITextDocument_GetSelection(txtDoc, &txtSel);
186 hres = ITextSelection_QueryInterface(txtSel, &
IID_IUnknown, (
void **)&unk2);
188 ok(unk != unk2,
"unknowns are the same\n");
189 IUnknown_Release(unk2);
190 IUnknown_Release(unk);
195 hres = ITextDocument_GetSelection(txtDoc, &txtSel2);
197 ok(txtSel2 == txtSel,
"got %p, %p\n", txtSel, txtSel2);
202 ITextSelection_Release(txtSel2);
205 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextSelection, (
void **) &punk);
206 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
207 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
208 IUnknown_Release(punk);
211 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextRange, (
void **) &punk);
212 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
213 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
214 IUnknown_Release(punk);
218 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
219 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
220 IUnknown_Release(punk);
234 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
235 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
236 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
237 ok((
ITextDocument *)txtDoc2Old == txtDoc,
"interface pointer isn't equal.\n");
242 ITextDocument2Old_Release(txtDoc2Old);
244 ITextDocument_Release(txtDoc);
245 IRichEditOle_Release(reOle);
246 refcount = IRichEditOle_Release(reOle);
247 ok(refcount == 1,
"got wrong ref count: %d\n", refcount);
252 hres = ITextSelection_CanEdit(txtSel,
NULL);
255 ITextSelection_Release(txtSel);
259 ok(
res,
"SendMessage\n");
260 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
262 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
263 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface failed: 0x%08x.\n",
hres);
264 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
266 ITextDocument2Old_Release(txtDoc2Old);
267 IRichEditOle_Release(reOle);
283 static const CHAR chACP[] =
"TestSomeText";
284 static const CHAR chUTF8[] =
"\xef\xbb\xbfTextWithUTF8BOM";
285 static const WCHAR chUTF16[] = {0xfeff,
'T',
'e',
's',
't',
'S',
'o',
'm',
286 'e',
'T',
'e',
'x',
't', 0};
288#define MAX_BUF_LEN 1024
292 static const int tomConstantsSingle[] =
299 static const int tomConstantsMulti[] =
309 int tomNumSingle =
ARRAY_SIZE(tomConstantsSingle);
310 int tomNumMulti =
ARRAY_SIZE(tomConstantsMulti);
316 for(
i=0;
i < tomNumSingle;
i++)
320 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_ACP);
321 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%x\n",
322 tomConstantsSingle[
i],
hres);
328 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_UTF8);
329 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%x\n",
330 tomConstantsSingle[
i],
hres);
335 for(
i=0;
i < tomNumMulti;
i++)
339 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_ACP);
340 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%x\n",
341 tomConstantsMulti[
i],
hres);
347 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_UTF8);
348 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%x\n",
349 tomConstantsMulti[
i],
hres);
482 todo_wine ok(
result == 0,
"ITextDocument_Open: Test ASCII set wrong text: Result: %s\n", bufACP);
497 todo_wine ok(
result == 0,
"ITextDocument_Open: Test UTF-8 set wrong text: Result: %s\n", bufACP);
528 static const CHAR test_text1[] =
"TestSomeText";
529 static const WCHAR bufW1[] = {
'T',
'e',
's',
't', 0};
530 static const WCHAR bufW2[] = {
'T',
'e',
'x',
't',
'\r', 0};
531 static const WCHAR bufW3[] = {
'T',
'e',
'x',
't', 0};
532 static const WCHAR bufW4[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
533 'e',
'T',
'e',
'x',
't',
'\r', 0};
534 static const WCHAR bufW5[] = {
'\r', 0};
535 static const WCHAR bufW6[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
'e',
'T',0};
536 BOOL is64bit =
sizeof(
void *) >
sizeof(
int);
545 hres = ITextSelection_GetText(txtSel, &bstr);
552 hres = ITextSelection_GetText(txtSel, &bstr);
559 hres = ITextSelection_GetText(txtSel, &bstr);
565 hres = ITextSelection_GetText(txtSel,
NULL);
571 hres = ITextSelection_GetText(txtSel, &bstr);
578 hres = ITextSelection_GetText(txtSel, &bstr);
583 first = 12; lim = 13;
585 hres = ITextSelection_GetText(txtSel, &bstr);
592 hres = ITextSelection_GetText(txtSel, &bstr);
599 hres = ITextSelection_GetText(txtSel, &bstr);
604 hres = ITextDocument_Range(txtDoc, 0, 4, &
range);
611 ITextRange_Release(
range);
613 hres = ITextDocument_Range(txtDoc, 4, 0, &
range);
620 ITextRange_Release(
range);
622 hres = ITextDocument_Range(txtDoc, 1, 1, &
range);
632 ITextRange_Release(
range);
634 hres = ITextDocument_Range(txtDoc, 8, 12, &
range);
641 ITextRange_Release(
range);
643 hres = ITextDocument_Range(txtDoc, 8, 13, &
range);
650 ITextRange_Release(
range);
652 hres = ITextDocument_Range(txtDoc, 12, 13, &
range);
659 ITextRange_Release(
range);
661 hres = ITextDocument_Range(txtDoc, 0, -1, &
range);
666 ITextRange_Release(
range);
668 hres = ITextDocument_Range(txtDoc, -1, 9, &
range);
680 bstr = (
void*)0xdeadbeef;
681 hres = ITextSelection_GetText(txtSel, &bstr);
684 ok(bstr ==
NULL,
"got %p\n", bstr);
686 bstr = (
void*)0xdeadbeef;
690 ok(bstr ==
NULL,
"got %p\n", bstr);
693 hres = ITextSelection_GetText(txtSel,
NULL);
700 ITextRange_Release(
range);
701 ITextSelection_Release(txtSel);
706 static const CHAR test_text1[] =
"TestSomeText";
715 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
719 hres = ITextDocument_Range(txtDoc, 0, 0, &range2);
721 ok(range2 != txtRge,
"A new pointer should be returned\n");
722 ITextRange_Release(range2);
724 hres = ITextDocument_Range(txtDoc, 0, 0,
NULL);
729 hres = ITextDocument_Range(txtDoc, 8, 30, &range2);
731 hres = ITextRange_GetStart(range2, &
value);
735 hres = ITextRange_GetEnd(range2, &
value);
738 ITextRange_Release(range2);
741 hres = ITextRange_CanEdit(txtRge,
NULL);
743 ITextRange_Release(txtRge);
755 static const CHAR test_text1[] =
"TestSomeText";
760 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
763 hres = ITextRange_GetChar(txtRge, &
pch);
765 ok(
pch ==
'T',
"got wrong char: %c\n",
pch);
766 ITextRange_Release(txtRge);
772 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
775 hres = ITextRange_GetChar(txtRge, &
pch);
777 ok(
pch ==
'T',
"got wrong char: %c\n",
pch);
778 ITextRange_Release(txtRge);
781 first = 12; lim = 12;
784 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
787 hres = ITextRange_GetChar(txtRge, &
pch);
789 ok(
pch ==
'\r',
"got wrong char: %c\n",
pch);
790 ITextRange_Release(txtRge);
793 first = 13; lim = 13;
796 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
799 hres = ITextRange_GetChar(txtRge, &
pch);
801 ok(
pch ==
'\r',
"got wrong char: %c\n",
pch);
802 ITextRange_Release(txtRge);
807 first = 12; lim = 12;
808 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
810 hres = ITextRange_GetChar(txtRge,
NULL);
815 hres = ITextRange_GetChar(txtRge,
NULL);
818 hres = ITextRange_GetChar(txtRge, &
pch);
821 ITextRange_Release(txtRge);
826 LONG bStart,
int expected_nonzero)
835 hres = ITextDocument_Range(doc,
first, lim, &txtRge);
837 hres = ITextRange_ScrollIntoView(txtRge, bStart);
840 if (expected_nonzero) {
842 "Scrollbar at 0, should be >0. (TextRange %d-%d, scroll range %d-%d.)\n",
846 "Scrollbar at %d, should be 0. (TextRange %d-%d, scroll range %d-%d.)\n",
858 static const CHAR test_text1[] =
"1\n2\n3\n4\n5\n6\n7\n8\n9\n10";
879 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
884 ITextRange_Release(txtRge);
896 static const CHAR test_text1[] =
"TestSomeText";
904 hres = ITextSelection_GetChar(txtSel, &
pch);
906 ok(
pch ==
'T',
"got wrong char: %c\n",
pch);
911 hres = ITextSelection_GetChar(txtSel, &
pch);
913 ok(
pch ==
'T',
"got wrong char: %c\n",
pch);
915 first = 12; lim = 12;
918 hres = ITextSelection_GetChar(txtSel, &
pch);
920 ok(
pch ==
'\r',
"got wrong char: %c\n",
pch);
922 first = 13; lim = 13;
925 hres = ITextSelection_GetChar(txtSel, &
pch);
927 ok(
pch ==
'\r',
"got wrong char: %c\n",
pch);
929 hres = ITextSelection_GetChar(txtSel,
NULL);
934 hres = ITextSelection_GetChar(txtSel,
NULL);
937 hres = ITextSelection_GetChar(txtSel, &
pch);
940 ITextSelection_Release(txtSel);
951 static const CHAR test_text1[] =
"TestSomeText";
957 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
960 hres = ITextRange_GetStart(txtRge, &
start);
964 hres = ITextRange_GetEnd(txtRge, &
end);
966 ok(
end == 6,
"got wrong end value: %d\n",
end);
967 ITextRange_Release(txtRge);
970 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
973 hres = ITextRange_GetStart(txtRge, &
start);
977 hres = ITextRange_GetEnd(txtRge, &
end);
979 ok(
end == 6,
"got wrong end value: %d\n",
end);
980 ITextRange_Release(txtRge);
982 first = -1; lim = 13;
983 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
986 hres = ITextRange_GetStart(txtRge, &
start);
990 hres = ITextRange_GetEnd(txtRge, &
end);
992 ok(
end == 13,
"got wrong end value: %d\n",
end);
993 ITextRange_Release(txtRge);
995 first = 13; lim = 13;
996 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
999 hres = ITextRange_GetStart(txtRge, &
start);
1003 hres = ITextRange_GetEnd(txtRge, &
end);
1005 ok(
end == 12,
"got wrong end value: %d\n",
end);
1008 hres = ITextRange_SetStart(txtRge, 0);
1012 hres = ITextRange_SetStart(txtRge, 0);
1015 hres = ITextRange_SetStart(txtRge, 1);
1020 hres = ITextRange_SetStart(txtRge, -1);
1023 hres = ITextRange_SetStart(txtRge, -1);
1026 hres = ITextRange_SetStart(txtRge, 0);
1030 hres = ITextRange_GetStart(txtRge, &
start);
1035 hres = ITextRange_SetStart(txtRge, 1);
1038 hres = ITextRange_SetEnd(txtRge, 3);
1041 hres = ITextRange_SetStart(txtRge, 10);
1045 hres = ITextRange_GetStart(txtRge, &
start);
1050 hres = ITextRange_GetEnd(txtRge, &
end);
1055 hres = ITextRange_SetStart(txtRge, 50);
1059 hres = ITextRange_GetStart(txtRge, &
start);
1064 hres = ITextRange_GetEnd(txtRge, &
end);
1069 hres = ITextRange_SetStart(txtRge, 0);
1073 hres = ITextRange_SetEnd(txtRge, 5);
1076 hres = ITextRange_SetEnd(txtRge, 5);
1080 hres = ITextRange_SetEnd(txtRge, -1);
1084 hres = ITextRange_GetEnd(txtRge, &
end);
1089 hres = ITextRange_GetStart(txtRge, &
start);
1094 hres = ITextRange_SetStart(txtRge, 3);
1097 hres = ITextRange_SetEnd(txtRge, 1);
1101 hres = ITextRange_GetStart(txtRge, &
start);
1106 hres = ITextRange_GetEnd(txtRge, &
end);
1111 hres = ITextRange_SetEnd(txtRge, 50);
1115 hres = ITextRange_GetStart(txtRge, &
start);
1120 hres = ITextRange_GetEnd(txtRge, &
end);
1125 hres = ITextRange_SetEnd(txtRge, 0);
1129 hres = ITextRange_GetStart(txtRge, &
start);
1134 hres = ITextRange_GetEnd(txtRge, &
end);
1141 hres = ITextRange_SetStart(txtRge, 0);
1144 hres = ITextRange_SetEnd(txtRge, 3);
1147 hres = ITextRange_GetStart(txtRge, &
start);
1150 hres = ITextRange_GetStart(txtRge,
NULL);
1153 hres = ITextRange_GetEnd(txtRge, &
end);
1156 hres = ITextRange_GetEnd(txtRge,
NULL);
1159 ITextRange_Release(txtRge);
1170 static const CHAR test_text1[] =
"TestSomeText";
1178 hres = ITextSelection_GetStart(txtSel, &
start);
1179 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1182 hres = ITextSelection_GetEnd(txtSel, &
end);
1184 ok(
end == 5,
"got wrong end value: %d\n",
end);
1189 hres = ITextSelection_GetStart(txtSel, &
start);
1190 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1193 hres = ITextSelection_GetEnd(txtSel, &
end);
1195 ok(
end == 5,
"got wrong end value: %d\n",
end);
1197 first = 0; lim = -1;
1200 hres = ITextSelection_GetStart(txtSel, &
start);
1201 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1204 hres = ITextSelection_GetEnd(txtSel, &
end);
1206 ok(
end == 13,
"got wrong end value: %d\n",
end);
1208 first = 13; lim = 13;
1211 hres = ITextSelection_GetStart(txtSel, &
start);
1212 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1215 hres = ITextSelection_GetEnd(txtSel, &
end);
1217 ok(
end == 12,
"got wrong end value: %d\n",
end);
1220 hres = ITextSelection_SetStart(txtSel, 0);
1224 hres = ITextSelection_SetStart(txtSel, 0);
1227 hres = ITextSelection_SetStart(txtSel, 1);
1232 hres = ITextSelection_SetStart(txtSel, -1);
1235 hres = ITextSelection_SetStart(txtSel, -1);
1238 hres = ITextSelection_SetStart(txtSel, 0);
1242 hres = ITextSelection_GetStart(txtSel, &
start);
1247 hres = ITextSelection_SetStart(txtSel, 1);
1250 hres = ITextSelection_SetEnd(txtSel, 3);
1253 hres = ITextSelection_SetStart(txtSel, 10);
1257 hres = ITextSelection_GetStart(txtSel, &
start);
1262 hres = ITextSelection_GetEnd(txtSel, &
end);
1267 hres = ITextSelection_SetStart(txtSel, 50);
1271 hres = ITextSelection_GetStart(txtSel, &
start);
1276 hres = ITextSelection_GetEnd(txtSel, &
end);
1281 hres = ITextSelection_SetStart(txtSel, 0);
1285 hres = ITextSelection_SetEnd(txtSel, 5);
1288 hres = ITextSelection_SetEnd(txtSel, 5);
1292 hres = ITextSelection_SetEnd(txtSel, -1);
1296 hres = ITextSelection_GetEnd(txtSel, &
end);
1301 hres = ITextSelection_GetStart(txtSel, &
start);
1306 hres = ITextSelection_SetStart(txtSel, 3);
1309 hres = ITextSelection_SetEnd(txtSel, 1);
1313 hres = ITextSelection_GetStart(txtSel, &
start);
1318 hres = ITextSelection_GetEnd(txtSel, &
end);
1323 hres = ITextSelection_SetEnd(txtSel, 50);
1327 hres = ITextSelection_GetStart(txtSel, &
start);
1332 hres = ITextSelection_GetEnd(txtSel, &
end);
1337 hres = ITextSelection_SetEnd(txtSel, 0);
1341 hres = ITextSelection_GetStart(txtSel, &
start);
1346 hres = ITextSelection_GetEnd(txtSel, &
end);
1353 hres = ITextSelection_GetStart(txtSel,
NULL);
1356 hres = ITextSelection_GetStart(txtSel, &
start);
1359 hres = ITextSelection_GetEnd(txtSel,
NULL);
1362 hres = ITextSelection_GetEnd(txtSel, &
end);
1365 ITextSelection_Release(txtSel);
1377 static const CHAR test_text1[] =
"TestSomeText";
1382 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1385 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1386 ok(
hres ==
S_OK,
"ITextRange_GetDuplicate\n");
1387 ok(txtRgeDup != txtRge,
"A new pointer should be returned\n");
1388 hres = ITextRange_GetStart(txtRgeDup, &
start);
1391 hres = ITextRange_GetEnd(txtRgeDup, &
end);
1393 ok(
end == lim,
"got wrong value: %d\n",
end);
1395 ITextRange_Release(txtRgeDup);
1397 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1402 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1405 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1408 ITextRange_Release(txtRge);
1419 static const CHAR test_text1[] =
"TestSomeText";
1425 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1429 hres = ITextRange_GetStart(txtRge, &
start);
1432 hres = ITextRange_GetEnd(txtRge, &
end);
1434 ok(
end == 4,
"got wrong end value: %d\n",
end);
1435 ITextRange_Release(txtRge);
1437 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1441 hres = ITextRange_GetStart(txtRge, &
start);
1444 hres = ITextRange_GetEnd(txtRge, &
end);
1446 ok(
end == 4,
"got wrong end value: %d\n",
end);
1447 ITextRange_Release(txtRge);
1449 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1453 hres = ITextRange_GetStart(txtRge, &
start);
1456 hres = ITextRange_GetEnd(txtRge, &
end);
1458 ok(
end == 8,
"got wrong end value: %d\n",
end);
1459 ITextRange_Release(txtRge);
1461 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1465 hres = ITextRange_GetStart(txtRge, &
start);
1468 hres = ITextRange_GetEnd(txtRge, &
end);
1470 ok(
end == 8,
"got wrong end value: %d\n",
end);
1471 ITextRange_Release(txtRge);
1474 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1476 hres = ITextRange_Collapse(txtRge, 256);
1478 hres = ITextRange_GetStart(txtRge, &
start);
1481 hres = ITextRange_GetEnd(txtRge, &
end);
1483 ok(
end == 4,
"got wrong end value: %d\n",
end);
1484 ITextRange_Release(txtRge);
1487 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1491 hres = ITextRange_GetStart(txtRge, &
start);
1494 hres = ITextRange_GetEnd(txtRge, &
end);
1496 ok(
end == 6,
"got wrong end value: %d\n",
end);
1497 ITextRange_Release(txtRge);
1500 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1504 hres = ITextRange_GetStart(txtRge, &
start);
1507 hres = ITextRange_GetEnd(txtRge, &
end);
1509 ok(
end == 8,
"got wrong end value: %d\n",
end);
1519 ITextRange_Release(txtRge);
1530 static const CHAR test_text1[] =
"TestSomeText";
1538 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
1541 ok(
end == 4,
"got wrong end value: %d\n",
end);
1545 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
1548 ok(
end == 4,
"got wrong end value: %d\n",
end);
1552 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
1555 ok(
end == 8,
"got wrong end value: %d\n",
end);
1558 hres = ITextSelection_Collapse(txtSel,
tomEnd);
1559 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
1562 ok(
end == 8,
"got wrong end value: %d\n",
end);
1566 hres = ITextSelection_Collapse(txtSel, 256);
1567 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
1570 ok(
end == 4,
"got wrong end value: %d\n",
end);
1574 hres = ITextSelection_Collapse(txtSel,
tomEnd);
1578 ok(
end == 6,
"got wrong end value: %d\n",
end);
1586 ok(
end == 8,
"got wrong end value: %d\n",
end);
1596 ITextSelection_Release(txtSel);
1608 LONG refcount1, refcount2;
1611 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
1615 hres = IOleClientSite_QueryInterface(clientSite, &IID_IRichEditOle, (
void **)&reOle1);
1618 hres = IRichEditOle_GetClientSite(reOle, &clientSite1);
1620 ok(clientSite != clientSite1,
"got %p, %p\n", clientSite, clientSite1);
1621 IOleClientSite_Release(clientSite1);
1624 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1625 ok(clientSite == clientSite1,
"Should not return a new pointer.\n");
1630 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1633 ok(refcount1 == refcount2,
"got wrong ref count.\n");
1635 hres = IOleClientSite_QueryInterface(clientSite, &
IID_IOleWindow, (
void **)&oleWin1);
1636 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1637 ok(oleWin == oleWin1,
"Should not return a new pointer.\n");
1640 ok(refcount1 == refcount2,
"got wrong ref count.\n");
1644 ok(clientSite2 == clientSite1,
"got wrong pointer\n");
1648 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1651 ok(refcount1 == refcount2,
"got wrong ref count.\n");
1654 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1655 ok(olePlace == olePlace1,
"Should not return a new pointer.\n");
1656 IOleInPlaceSite_Release(olePlace1);
1662 ok(refcount1 == refcount2,
"got wrong ref count.\n");
1664 IOleInPlaceSite_Release(olePlace1);
1665 IOleInPlaceSite_Release(olePlace);
1666 IOleWindow_Release(oleWin1);
1667 IOleWindow_Release(oleWin);
1668 IOleClientSite_Release(clientSite2);
1669 IOleClientSite_Release(clientSite1);
1670 IOleClientSite_Release(clientSite);
1685 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
1689 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1690 hres = IOleWindow_GetWindow(oleWin, &
hwnd);
1692 ok(
w ==
hwnd,
"got wrong pointer\n");
1694 hres = IOleWindow_GetWindow(oleWin,
NULL);
1697 IOleWindow_Release(oleWin);
1698 IOleClientSite_Release(clientSite);
1713 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
1717 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08x\n",
hres);
1718 hres = IOleInPlaceSite_GetWindow(olePlace, &
hwnd);
1720 ok(
w ==
hwnd,
"got wrong pointer.\n");
1722 hres = IOleInPlaceSite_GetWindow(olePlace,
NULL);
1725 IOleInPlaceSite_Release(olePlace);
1726 IOleClientSite_Release(clientSite);
1732 static const CHAR test_text1[] =
"TestSomeText";
1754 ok(
font != font2,
"got %p, %p\n",
font, font2);
1755 ITextFont_Release(font2);
1756 ITextFont_Release(
font);
1762 hr = ITextDocument_Range(doc, 0, 4, &
range);
1780 hr = ITextRange_GetFont(
range, &font2);
1782 ok(
font != font2,
"got %p, %p\n",
font, font2);
1790 ITextFont_Release(font2);
1836 ITextFont_Release(
font);
1842 hr = ITextRange_GetFont(
range, &font2);
1845 ITextRange_Release(
range);
1850 static const CHAR test_text1[] =
"TestSomeText";
1865 hr = ITextDocument_Range(doc, 0, 4, &
range);
1875 hr = ITextRange_GetPara(
range, ¶);
1883 hr = ITextRange_GetPara(
range, ¶2);
1885 ok(para != para2,
"got %p, %p\n", para, para2);
1893 ITextPara_Release(para);
1894 ITextPara_Release(para2);
1910 ok(para != para2,
"got %p, %p\n", para, para2);
1912 ITextPara_Release(para);
1913 ITextPara_Release(para2);
1919 hr = ITextRange_GetPara(
range, ¶);
1929 ITextRange_Release(
range);
1934 static const WCHAR testnameW[] = {
'G',
'e',
't',
'T',
'e',
'x',
't',0};
1935 static const WCHAR testname2W[] = {
'T',
'e',
'x',
't',0};
1948 hr = ITextDocument_Range(doc, 0, 0, &
range);
1956 ok(dispid == DISPID_UNKNOWN,
"got %d\n", dispid);
1962 ok(dispid == DISPID_VALUE,
"got %d\n", dispid);
1974 ok(dispid == DISPID_VALUE,
"got %d\n", dispid);
1976 ITextRange_Release(
range);
1990 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
1996 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2002 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2008 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2014 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2020 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2026 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2032 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2038 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2044 ok(
hr == hrexp,
"got 0x%08x\n",
hr);
2100 hr = ITextFont_GetKerning(
font, &valuef);
2102 ok(valuef == 0.0,
"got %.2f\n", valuef);
2121 hr = ITextFont_GetPosition(
font, &valuef);
2123 ok(valuef == 0.0,
"got %.2f\n", valuef);
2136 hr = ITextFont_GetSize(
font, &valuef);
2138 ok(valuef >= 0.0,
"got %.2f\n", valuef);
2146 hr = ITextFont_GetSpacing(
font, &valuef);
2148 ok(valuef == 0.0,
"got %.2f\n", valuef);
2228 hr = ITextFont_GetKerning(
font, &valuef);
2243 hr = ITextFont_GetPosition(
font, &valuef);
2258 hr = ITextFont_GetSize(
font, &valuef);
2268 hr = ITextFont_GetSpacing(
font, &valuef);
2300 return value * 72.0 / 1440;
2305 static const WCHAR arialW[] = {
'A',
'r',
'i',
'a',
'l',0};
2306 static const CHAR test_text1[] =
"TestSomeText";
2322 hr = ITextDocument_Range(doc, 0, 10, &
range);
2343 hr = ITextFont_SetPosition(
font, 20.0);
2346 hr = ITextFont_SetKerning(
font, 10.0);
2350 hr = ITextFont_GetPosition(
font, &position);
2358 cf.cbSize =
sizeof(
cf);
2366 ok(position ==
twips_to_points(
cf.yOffset),
"got yOffset %d, position %.2f\n",
cf.yOffset, position);
2375 hr = ITextFont_GetDuplicate(
font, &font2);
2384 ITextFont_Release(font2);
2395 cf.cbSize =
sizeof(
cf);
2437 hr = ITextFont_GetDuplicate(
font, &font2);
2457 hr = ITextFont_GetItalic(font2, &
value);
2462 hr = ITextFont_GetDuplicate(font2, &font3);
2464 ITextFont_Release(font3);
2466 ITextRange_Release(
range);
2476 hr = ITextFont_GetDuplicate(font2, &font3);
2478 ITextFont_Release(font3);
2482 hr = ITextFont_GetBold(font2, &
value);
2496 hr = ITextFont_GetDuplicate(font2, &font3);
2515 hr = ITextFont_GetItalic(font2, &
value);
2523 ITextFont_Release(font3);
2524 ITextFont_Release(font2);
2526 font2 = (
void*)0xdeadbeef;
2527 hr = ITextFont_GetDuplicate(
font, &font2);
2529 ok(font2 ==
NULL,
"got %p\n", font2);
2534 ITextFont_Release(
font);
2540 hr = ITextDocument_Range(doc, 0, 10, &
range);
2639 ITextRange_Release(
range);
2640 ITextFont_Release(
font);
2646 static const CHAR test_text1[] =
"TestSomeText";
2657 hr = ITextDocument_Range(doc, 0, 4, &
range);
2660 hr = ITextDocument_Range(doc, 1, 2, &range2);
2685 hr = ITextRange_GetStart(range2, &
value);
2689 hr = ITextRange_GetEnd(range2, &
value);
2694 ITextRange_Release(
range);
2695 ITextRange_Release(range2);
2701 static const CHAR test_text1[] =
"TestSomeText";
2702 static const WCHAR textW[] = {
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',0};
2714 hr = ITextDocument_Range(doc, 0, 4, &
range);
2717 hr = ITextDocument_Range(doc, 0, 4, &range2);
2721 hr = ITextRange_GetStart(range2, &
value);
2726 hr = ITextRange_GetEnd(range2, &
value);
2734 hr = ITextRange_GetEnd(range2, &
value);
2754 hr = ITextRange_GetStart(range2, &
value);
2759 hr = ITextRange_GetEnd(range2, &
value);
2772 ITextRange_Release(range2);
2783 ITextRange_Release(
range);
2788 static const CHAR test_text1[] =
"TestSomeText";
2801 hr = ITextDocument_Range(doc, 0, 4, &
range);
2804 hr = ITextDocument_Range(doc, 0, 4, &range2);
2808 hr = ITextDocument_Range(doc, 1, 2, &range3);
2890 ITextRange_Release(
range);
2891 ITextRange_Release(range2);
2892 ITextRange_Release(range3);
2898 static const CHAR test_text1[] =
"TestSomeText";
2911 hr = ITextDocument_Range(doc, 0, 4, &
range);
2914 hr = ITextDocument_Range(doc, 0, 4, &range2);
2918 hr = ITextDocument_Range(doc, 1, 2, &range3);
3005 ITextRange_Release(
range);
3006 ITextRange_Release(range2);
3007 ITextRange_Release(range3);
3013 static const CHAR test_text1[] =
"TestSomeText";
3026 hr = ITextDocument_Range(doc, 0, 4, &
range);
3029 hr = ITextRange_Select(
range);
3037 hr = ITextRange_Select(
range);
3045 hr = ITextRange_Select(
range);
3051 ITextRange_Release(
range);
3057 static const CHAR test_text1[] =
"TestSomeText";
3070 hr = ITextDocument_Range(doc, 0, 4, &
range);
3107 ITextRange_Release(
range);
3113 static const CHAR test_text1[] =
"TestSomeText";
3127 hr = ITextDocument_Range(doc, 0, 4, &
range);
3130 hr = ITextDocument_Range(doc, 5, 2, &range2);
3139 hr = ITextRange_GetFont(range2, &font2);
3154 hr = ITextRange_SetFont(
range, font2);
3166 hr = ITextFont_SetItalic(font2,
tomTrue);
3169 hr = ITextRange_SetFont(
range, font2);
3191 ITextFont_Release(
font);
3192 ITextFont_Release(font2);
3193 ITextRange_Release(
range);
3194 ITextRange_Release(range2);
3215#define CHECK_REOBJECT_STRUCT(reole,index,flags,cp,poleobj,pstg,polesite,user) \
3216 _check_reobject_struct(reole, index, flags, cp, poleobj, pstg, polesite, user, __LINE__)
3225 hr = IRichEditOle_GetObject(reole,
index, &reobj,
flags);
3226 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: %#x.\n",
hr);
3227 ok_(__FILE__,
line)(reobj.
poleobj == poleobj,
"got wrong object interface.\n");
3228 ok_(__FILE__,
line)(reobj.
pstg == pstg,
"got wrong storage interface.\n");
3229 ok_(__FILE__,
line)(reobj.
polesite == polesite,
"got wrong site interface.\n");
3233#define INSERT_REOBJECT(reole,reobj,cp,user) \
3234 _insert_reobject(reole, reobj, cp, user, __LINE__)
3239 hr = IRichEditOle_GetClientSite(reole, &clientsite);
3240 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#x.\n",
hr);
3242 hr = IRichEditOle_InsertObject(reole, reobj);
3243 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#x.\n",
hr);
3244 IOleClientSite_Release(clientsite);
3249 static CHAR test_text1[] =
"abcdefg";
3252 REOBJECT reo1, reo2, reo3, received_reo;
3255 const WCHAR *expected_string;
3256 const CHAR *expected_stringA;
3260 FORMATETC formatetc;
3263 STGMEDIUM stgmedium;
3273 hr = IRichEditOle_InsertObject(reole,
NULL);
3279 count = IRichEditOle_GetObjectCount(reole);
3285 count = IRichEditOle_GetObjectCount(reole);
3291 count = IRichEditOle_GetObjectCount(reole);
3299 hr = IRichEditOle_GetObject(reole, 2,
NULL, REO_GETOBJ_ALL_INTERFACES);
3303 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_ALL_INTERFACES);
3309 hr = IRichEditOle_GetObject(reole, 3, &received_reo, REO_GETOBJ_POLESITE);
3312 hr = IRichEditOle_GetObject(reole, 4, &received_reo, REO_GETOBJ_POLESITE);
3315 hr = IRichEditOle_GetObject(reole, 1024, &received_reo, REO_GETOBJ_POLESITE);
3318 hr = IRichEditOle_GetObject(reole, -10, &received_reo, REO_GETOBJ_POLESITE);
3322 received_reo.
cbStruct =
sizeof(received_reo);
3324 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_NO_INTERFACES);
3325 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: 0x%08x\n",
hr);
3332 received_reo.
cbStruct =
sizeof(received_reo);
3335 received_reo.
cp = 4;
3336 hr = IRichEditOle_GetObject(reole, REO_IOB_USE_CP, &received_reo, REO_GETOBJ_ALL_INTERFACES);
3339 ok(received_reo.
dwUser == 4,
"Got wrong user-defined value: %d.\n", received_reo.
dwUser);
3363 received_reo.
cbStruct =
sizeof(received_reo);
3364 received_reo.
cp = 0;
3365 hr = IRichEditOle_GetObject(reole, REO_IOB_SELECTION, &received_reo, REO_GETOBJ_ALL_INTERFACES);
3391 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
3393 expected_string =
L"abc\xfffc""d\xfffc""efg";
3411 expected_stringA =
"abc d efg";
3412 memset(bufferA, 0,
sizeof(bufferA));
3416 todo_wine ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
3418 memset(bufferA, 0,
sizeof(bufferA));
3424 todo_wine ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
3427 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg\r";
3429 expected_string =
L"abc\xfffc""d\xfffc""efg\r";
3432 hr = ITextDocument_Range(doc, 0, 11, &
range);
3434 hr = ITextRange_GetText(
range, &bstr);
3439 hr = ITextRange_SetRange(
range, 3, 4);
3444 ITextRange_Release(
range);
3466 expected_string =
L"abc d efg";
3467 charrange.
cpMin = 0;
3468 charrange.
cpMax = 11;
3469 hr = IRichEditOle_GetClipboardData(reole, &charrange, 1, &dataobject);
3472 formatetc.dwAspect = DVASPECT_CONTENT;
3473 formatetc.ptd =
NULL;
3474 formatetc.tymed = TYMED_HGLOBAL;
3475 formatetc.lindex = -1;
3476 hr = IDataObject_GetData(dataobject, &formatetc, &stgmedium);
3482 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
3484 expected_string =
L"abc\xfffc""d\xfffc""efg";
3502 expected_stringA =
"abc d efg";
3503 memset(bufferA, 0,
sizeof(bufferA));
3507 todo_wine ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
3509 memset(bufferA, 0,
sizeof(bufferA));
3515 todo_wine ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
3518 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
3520 expected_string =
L"abc\xfffc""d\xfffc""efg";
3523 hr = ITextDocument_Range(doc, 0, 11, &
range);
3525 hr = ITextRange_GetText(
range, &bstr);
3530 hr = ITextRange_SetRange(
range, 3, 4);
3535 ITextRange_Release(
range);
3554 static const CHAR test_text1[] =
"TestSomeText";
3567 hr = ITextDocument_Range(doc, 0, 4, &
range);
3617 ITextRange_Release(
range);
3622 static const CHAR test_text1[] =
"TestSomeText";
3644 hr = ITextSelection_GetDuplicate(
selection, &range2);
3652 ITextRange_Release(range2);
3676 hr = ITextRange_QueryInterface(
range, &IID_ITextSelection, (
void**)&sel2);
3691 ITextRange_Release(
range);
3694#define RESET_RANGE(range,start,end) \
3695 _reset_range(range, start, end, __LINE__)
3706#define CHECK_RANGE(range,expected_start,expected_end) \
3707 _check_range(range, expected_start, expected_end, __LINE__)
3715 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %d got %d\n",
3716 expected_start,
value);
3719 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %d got %d\n",
3720 expected_end,
value);
3723#define RESET_SELECTION(selection,start,end) \
3724 _reset_selection(selection, start, end, __LINE__)
3735#define CHECK_SELECTION(selection,expected_start,expected_end) \
3736 _check_selection(selection, expected_start, expected_end, __LINE__)
3744 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %d got %d\n",
3745 expected_start,
value);
3748 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %d got %d\n",
3749 expected_end,
value);
3754 static const CHAR test_text1[] =
"TestSomeText";
3763 ITextDocument_Range(txtDoc, 0, 0, &txtRge);
3765 hr = ITextRange_SetRange(txtRge, 2, 4);
3769 hr = ITextRange_SetRange(txtRge, 2, 4);
3773 hr = ITextRange_SetRange(txtRge, 4, 2);
3777 hr = ITextRange_SetRange(txtRge, 14, 14);
3781 hr = ITextRange_SetRange(txtRge, 15, 15);
3785 hr = ITextRange_SetRange(txtRge, 14, 1);
3789 hr = ITextRange_SetRange(txtRge, -1, 4);
3793 ITextRange_Release(txtRge);
3799 static const char test_text1[] =
"TestSomeText";
3812 hr = ITextDocument_Range(doc, 0, 4, &
range);
3853 ITextRange_Release(
range);
3858 static const char test_text1[] =
"Word1 Word2";
3871 hr = ITextDocument_Range(doc, 1, 2, &
range);
3876 ok(delta == 0,
"got %d\n", delta);
3881 ok(delta == -1,
"got %d\n", delta);
3886 ok(delta == 1,
"got %d\n", delta);
3891 ok(delta == 0,
"got %d\n", delta);
3898 ok(delta == 1,
"got %d\n", delta);
3905 ok(delta == -1,
"got %d\n", delta);
3910 ok(delta == 0,
"got %d\n", delta);
3915 ok(delta == 0,
"got %d\n", delta);
3920 ok(delta == -1,
"got %d\n", delta);
3925 ok(delta == 1,
"got %d\n", delta);
3930 ok(delta == 0,
"got %d\n", delta);
3937 ok(delta == 1,
"got %d\n", delta);
3944 ok(delta == -1,
"got %d\n", delta);
3949 ok(delta == 0,
"got %d\n", delta);
3967 ITextRange_Release(
range);
3974 LONG expected_delta;
3977 if (expected_start < 0)
3979 else if (expected_start > textlen)
3980 expected_start = textlen;
3981 expected_delta = expected_start -
i;
3985 if (expected_start ==
i) {
3987 ok(delta == 0,
"(%d,%d) move by %d got delta %d\n",
i,
j,
target -
i, delta);
3991 ok(delta == expected_delta,
"(%d,%d) move by %d got delta %d\n",
i,
j,
target -
i, delta);
3992 if (expected_start <=
j)
4003 LONG expected_delta;
4006 if (expected_end < 0)
4008 else if (expected_end > textlen + 1)
4009 expected_end = textlen + 1;
4010 expected_delta = expected_end -
j;
4014 if (expected_end ==
j) {
4016 ok(delta == 0,
"(%d,%d) move by %d got delta %d\n",
i,
j,
target -
j, delta);
4020 ok(delta == expected_delta,
"(%d,%d) move by %d got delta %d\n",
i,
j,
target -
j, delta);
4021 if (
i <= expected_end)
4033 LONG expected_delta;
4036 if (expected_location < 0)
4037 expected_location = 0;
4038 else if (expected_location > textlen)
4039 expected_location = textlen;
4043 expected_delta = expected_location -
i;
4050 expected_delta = expected_location -
j;
4063 if (expected_delta == 0) {
4064 ok(
hr ==
S_FALSE,
"(%d,%d) move by %d got hr=0x%08x\n",
i,
j, move_by,
hr);
4065 ok(delta == 0,
"(%d,%d) move by %d got delta %d\n",
i,
j, move_by, delta);
4068 ok(
hr ==
S_OK,
"(%d,%d) move by %d got hr=0x%08x\n",
i,
j, move_by,
hr);
4069 ok(delta == expected_delta,
"(%d,%d) move by %d got delta %d\n",
i,
j, move_by, delta);
4084 ok(delta == 0,
"(%d,%d) tomMove got delta %d\n",
i,
j, delta);
4086 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08x\n",
i,
j,
hr);
4087 ok(delta == -1,
"(%d,%d) tomMove got delta %d\n",
i,
j, delta);
4095 ok(delta == 0,
"(%d,%d) tomExtend got delta %d\n",
i,
j, delta);
4116 ok(delta == 0,
"(%d,%d) tomMove got delta %d\n",
i,
j, delta);
4118 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08x\n",
i,
j,
hr);
4119 ok(delta == 1,
"(%d,%d) tomMove got delta %d\n",
i,
j, delta);
4128 ok(delta == 0,
"(%d,%d) tomExtend got delta %d\n",
i,
j, delta);
4130 ok(
hr ==
S_OK,
"(%d,%d) tomExtend got hr=0x%08x\n",
i,
j,
hr);
4131 ok(delta == 1,
"(%d,%d) tomExtend got delta %d\n",
i,
j, delta);
4138 static const char test_text1[] =
"ab\n c";
4146 const int textlen =
strlen(test_text1);
4151 hr = ITextDocument_Range(doc, 0, 0, &
range);
4156 for (
i = 0;
i <= textlen;
i++) {
4157 for (
j =
i;
j <= textlen;
j++) {
4171 ITextRange_Release(
range);
4174#define CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 0);
4175#define TODO_CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 1);
4179 BOOL clipboard_open;
4181 const char *clipboard_text;
4193 ok_(__FILE__,
line)(clipboard_text !=
NULL,
"GlobalLock failed: %p\n", clipboard_text);
4208 static const char text_in[] =
"ab\n c";
4219 hr = ITextDocument_Range(doc, 0, 0, &
range);
4233 hr = ITextRange_SetRange(
range, 0, 1);
4238 hr = ITextDocument_Undo(doc, 1,
NULL);
4244 hr = ITextRange_SetRange(
range, 0, 1);
4251 ITextRange_Release(
range);
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
static const WCHAR nameW[]
void user(int argc, const char *argv[])
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
LCID WINAPI GetSystemDefaultLCID(void)
static FLOAT twips_to_points(LONG value)
GLuint GLuint GLsizei count
GLubyte GLubyte GLubyte GLubyte w
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
REFIID LPVOID DWORD_PTR dw
#define ERROR_FILE_NOT_FOUND
static const WCHAR textW[]
#define todo_wine_if(is_todo)
static void _check_selection(ITextSelection *selection, LONG expected_start, LONG expected_end, int line)
static void test_Interfaces(void)
static void test_Expand(void)
static void _reset_range(ITextRange *range, LONG start, LONG end, int line)
static void test_SetText(void)
static void test_character_movement(void)
static void test_ITextSelection_GetDuplicate(void)
static void _insert_reobject(IRichEditOle *reole, REOBJECT *reobj, LONG cp, DWORD user, int line)
static void test_character_moveend(ITextRange *range, int textlen, int i, int j, LONG target)
static void fill_reobject_struct(REOBJECT *reobj, LONG cp, LPOLEOBJECT poleobj, LPSTORAGE pstg, LPOLECLIENTSITE polesite, LONG sizel_cx, LONG sizel_cy, DWORD aspect, DWORD flags, DWORD user)
static void test_character_startof(ITextRange *range, int textlen, int i, int j)
static void test_ITextSelection_GetStart_GetEnd(void)
static void test_GetPara(void)
static void test_detached_font_getters(ITextFont *font, BOOL duplicate)
#define CLIPBOARD_RANGE_CONTAINS(range, start, end, expected)
static void test_character_endof(ITextRange *range, int textlen, int i, int j)
static void test_GetClientSite(void)
static void test_GetStoryLength(void)
static HMODULE hmoduleRichEdit
static void test_textfont_undefined(ITextFont *font)
static void test_IOleInPlaceSite_GetWindow(void)
#define TODO_CLIPBOARD_RANGE_CONTAINS(range, start, end, expected)
static HWND new_richedit(HWND parent)
static void test_ITextRange_GetDuplicate(void)
static void test_character_move(ITextRange *range, int textlen, int i, int j, LONG target)
static void test_Delete(void)
static void test_ITextSelection_GetChar(void)
#define CHECK_TYPEINFO(disp, expected_riid)
static void test_clipboard(void)
static void _expect_ref(IUnknown *obj, ULONG ref, int line)
static void test_InRange(void)
static void test_GetStoryType(void)
#define RESET_RANGE(range, start, end)
static BOOL touch_file(LPCWSTR filename)
static void test_ITextRange_GetStart_GetEnd(void)
static void test_ITextRange_IsEqual(void)
static void test_ITextDocument_Open(void)
static void test_ITextRange_Collapse(void)
static void create_interfaces(HWND *w, IRichEditOle **reOle, ITextDocument **txtDoc, ITextSelection **txtSel)
static BOOL is_existing_file(LPCWSTR filename)
#define CHECK_REOBJECT_STRUCT(reole, index, flags, cp, poleobj, pstg, polesite, user)
#define CHECK_SELECTION(selection, expected_start, expected_end)
static void test_IOleWindow_GetWindow(void)
static void test_ITextRange_ScrollIntoView(void)
static void _check_reobject_struct(IRichEditOle *reole, LONG index, DWORD flags, LONG cp, LPOLEOBJECT poleobj, LPSTORAGE pstg, LPOLECLIENTSITE polesite, DWORD user, int line)
static void test_dispatch(void)
static void test_textfont_global_defaults(ITextFont *font)
static void _reset_selection(ITextSelection *selection, LONG start, LONG end, int line)
#define EXPECT_REF(obj, ref)
#define INSERT_REOBJECT(reole, reobj, cp, user)
static void test_ITextSelection_Collapse(void)
static void test_Select(void)
static void test_ITextRange_SetRange(void)
static const WCHAR sysW[]
static void release_interfaces(HWND *w, IRichEditOle **reOle, ITextDocument **txtDoc, ITextSelection **txtSel)
static void test_GetFont(void)
#define CHECK_RANGE(range, expected_start, expected_end)
static void test_character_movestart(ITextRange *range, int textlen, int i, int j, LONG target)
static void test_ITextFont(void)
#define RESET_SELECTION(selection, start, end)
static void test_ITextRange_GetChar(void)
static void _check_range(ITextRange *range, LONG expected_start, LONG expected_end, int line)
static void check_range(HWND w, ITextDocument *doc, int first, int lim, LONG bStart, int expected_nonzero)
static HWND new_window(LPCSTR lpClassName, DWORD dwStyle, HWND parent)
static void _check_typeinfo(IDispatch *disp, REFIID expected_riid, int line)
static void test_GetText(void)
static void _clipboard_range_contains(ITextRange *range, LONG start, LONG end, const char *expected, int line, int todo)
static void test_InsertObject(void)
static void test_MoveEnd_story(void)
static ULONG get_refcount(IUnknown *iface)
static void test_SetFont(void)
static void test_ITextDocument_Range(void)
static VARIANTARG static DISPID
#define LOCALE_USER_DEFAULT
#define LOCALE_SYSTEM_DEFAULT
interface IStorage * LPSTORAGE
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
const GUID IID_IOleInPlaceSite
const GUID IID_IOleWindow
const GUID IID_IOleClientSite
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define RICHEDIT_CLASS20A
struct _charformat2a CHARFORMAT2A
#define EM_GETOLEINTERFACE
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
static __inline const char * wine_dbgstr_guid(const GUID *id)
FT_UInt FT_UInt FT_Vector * kerning
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
DWORD WINAPI GetLastError(void)
#define ERROR_SHARING_VIOLATION
#define ERROR_FILE_EXISTS
#define HRESULT_FROM_WIN32(x)
#define DISP_E_UNKNOWNNAME
struct tagSCROLLINFO SCROLLINFO
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
#define EM_SETPASSWORDCHAR
BOOL WINAPI CloseClipboard(void)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
HANDLE WINAPI GetClipboardData(_In_ UINT)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)