Author: akhaldi Date: Thu Aug 18 10:41:23 2016 New Revision: 72306
URL: http://svn.reactos.org/svn/reactos?rev=72306&view=rev Log: [RICHED20_WINETEST] Sync with Wine Staging 1.9.16. CORE-11866
Modified: trunk/rostests/winetests/riched20/editor.c
Modified: trunk/rostests/winetests/riched20/editor.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched20/editor.... ============================================================================== --- trunk/rostests/winetests/riched20/editor.c [iso-8859-1] (original) +++ trunk/rostests/winetests/riched20/editor.c [iso-8859-1] Thu Aug 18 10:41:23 2016 @@ -1781,6 +1781,7 @@ "This is some text with #X on it", "This is some text with @X on it", "This is some text with \X on it", + "This is some text with _X on it", }; /* All of these cause the URL detection to be extended by one more byte, thus demonstrating that the tested character is considered as part @@ -1794,6 +1795,33 @@ "This is some text with X# on it", "This is some text with X@ on it", "This is some text with X\ on it", + "This is some text with X_ on it", + }; + /* These delims act as neutral breaks. Whether the url is ended + or not depends on the next non-neutral character. We'll test + with Y unchanged, in which case the url should include the + deliminator and the Y. We'll also test with the Y changed + to a space, in which case the url stops before the + deliminator. */ + const char * templates_neutral_delim[] = { + "This is some text with X-Y on it", + "This is some text with X--Y on it", + "This is some text with X!Y on it", + "This is some text with X[Y on it", + "This is some text with X]Y on it", + "This is some text with X{Y on it", + "This is some text with X}Y on it", + "This is some text with X(Y on it", + "This is some text with X)Y on it", + "This is some text with X"Y on it", + "This is some text with X;Y on it", + "This is some text with X:Y on it", + "This is some text with X'Y on it", + "This is some text with X?Y on it", + "This is some text with X<Y on it", + "This is some text with X>Y on it", + "This is some text with X.Y on it", + "This is some text with X,Y on it", }; char buffer[1024];
@@ -1972,6 +2000,55 @@ "CFE_LINK incorrectly set in (%d-%d), text: %s\n", end_offset +2, end_offset +3, buffer); } } + } + + for (j = 0; j < sizeof(templates_neutral_delim) / sizeof(const char *); j++) { + char * at_pos, * end_pos; + int at_offset; + int end_offset; + + if (!urls[i].is_url) continue; + + at_pos = strchr(templates_neutral_delim[j], 'X'); + at_offset = at_pos - templates_neutral_delim[j]; + memcpy(buffer, templates_neutral_delim[j], at_offset); + buffer[at_offset] = '\0'; + strcat(buffer, urls[i].text); + strcat(buffer, templates_neutral_delim[j] + at_offset + 1); + + end_pos = strchr(buffer, 'Y'); + end_offset = end_pos - buffer; + + SendMessageA(hwndRichEdit, EM_AUTOURLDETECT, TRUE, 0); + SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)buffer); + + /* This assumes no templates start with the URL itself, and that they + have at least two characters before the URL text */ + ok(!check_CFE_LINK_selection(hwndRichEdit, 0, 1), + "CFE_LINK incorrectly set in (%d-%d), text: %s\n", 0, 1, buffer); + ok(!check_CFE_LINK_selection(hwndRichEdit, at_offset -2, at_offset -1), + "CFE_LINK incorrectly set in (%d-%d), text: %s\n", at_offset -2, at_offset -1, buffer); + ok(!check_CFE_LINK_selection(hwndRichEdit, at_offset -1, at_offset), + "CFE_LINK incorrectly set in (%d-%d), text: %s\n", at_offset -1, at_offset, buffer); + + ok(check_CFE_LINK_selection(hwndRichEdit, at_offset, at_offset +1), + "CFE_LINK not set in (%d-%d), text: %s\n", at_offset, at_offset +1, buffer); + ok(check_CFE_LINK_selection(hwndRichEdit, end_offset -1, end_offset), + "CFE_LINK not set in (%d-%d), text: %s\n", end_offset -1, end_offset, buffer); + ok(check_CFE_LINK_selection(hwndRichEdit, end_offset, end_offset +1), + "CFE_LINK not set in (%d-%d), text: %s\n", end_offset, end_offset +1, buffer); + + *end_pos = ' '; + + SendMessageA(hwndRichEdit, EM_AUTOURLDETECT, TRUE, 0); + SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)buffer); + + ok(check_CFE_LINK_selection(hwndRichEdit, at_offset, at_offset +1), + "CFE_LINK not set in (%d-%d), text: %s\n", at_offset, at_offset +1, buffer); + ok(!check_CFE_LINK_selection(hwndRichEdit, end_offset -1, end_offset), + "CFE_LINK set in (%d-%d), text: %s\n", end_offset -1, end_offset, buffer); + ok(!check_CFE_LINK_selection(hwndRichEdit, end_offset, end_offset +1), + "CFE_LINK set in (%d-%d), text: %s\n", end_offset, end_offset +1, buffer); }
DestroyWindow(hwndRichEdit); @@ -6970,22 +7047,15 @@ GetClientRect(hwnd, &clientRect);
expected = clientRect; - expected.left += 1; - expected.right -= 1; + InflateRect(&expected, -1, 0); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
for (n = -3; n <= 3; n++) { rc = clientRect; - rc.top += n; - rc.left += n; - rc.bottom -= n; - rc.right -= n; + InflateRect(&rc, -n, -n); SendMessageA(hwnd, EM_SETRECT, 0, (LPARAM)&rc);
expected = rc; @@ -6994,22 +7064,16 @@ expected.bottom = min(clientRect.bottom, rc.bottom); expected.right = min(clientRect.right, rc.right); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "[n=%d] rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - n, rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "[n=%d] rect %s != %s\n", n, wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected)); }
rc = clientRect; SendMessageA(hwnd, EM_SETRECT, 0, (LPARAM)&rc); expected = clientRect; SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* Adding the selectionbar adds the selectionbar width to the left side. */ SendMessageA(hwnd, EM_SETOPTIONS, ECOOP_OR, ECO_SELECTIONBAR); @@ -7017,21 +7081,15 @@ ok(options & ECO_SELECTIONBAR, "EM_SETOPTIONS failed to add selectionbar.\n"); expected.left += 8; /* selection bar width */ SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
rc = clientRect; SendMessageA(hwnd, EM_SETRECT, 0, (LPARAM)&rc); expected = clientRect; SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* Removing the selectionbar subtracts the selectionbar width from the left side, * even if the left side is already 0. */ @@ -7040,22 +7098,16 @@ ok(!(options & ECO_SELECTIONBAR), "EM_SETOPTIONS failed to remove selectionbar.\n"); expected.left -= 8; /* selection bar width */ SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* Set the absolute value of the formatting rectangle. */ rc = clientRect; SendMessageA(hwnd, EM_SETRECT, 0, (LPARAM)&rc); expected = clientRect; SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "[n=%d] rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - n, rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "[n=%d] rect %s != %s\n", n, wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* MSDN documents the EM_SETRECT message as using the rectangle provided in * LPARAM as being a relative offset when the WPARAM value is 1, but these @@ -7067,11 +7119,8 @@ expected = rc; SendMessageA(hwnd, EM_SETRECT, 1, (LPARAM)&rc); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* For some reason it does not limit the values to the client rect with * a WPARAM value of 1. */ @@ -7082,11 +7131,8 @@ expected = rc; SendMessageA(hwnd, EM_SETRECT, 1, (LPARAM)&rc); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
/* Reset to default rect and check how the format rect adjusts to window * resize and how it copes with very small windows */ @@ -7096,40 +7142,28 @@ GetClientRect(hwnd, &clientRect);
expected = clientRect; - expected.left += 1; - expected.right -= 1; + InflateRect(&expected, -1, 0); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
MoveWindow(hwnd, 0, 0, 0, 30, FALSE); GetClientRect(hwnd, &clientRect);
expected = clientRect; - expected.left += 1; - expected.right -= 1; + InflateRect(&expected, -1, 0); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
MoveWindow(hwnd, 0, 0, 100, 0, FALSE); GetClientRect(hwnd, &clientRect);
expected = clientRect; - expected.left += 1; - expected.right -= 1; + InflateRect(&expected, -1, 0); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
DestroyWindow(hwnd);
@@ -7142,32 +7176,21 @@ GetClientRect(hwnd, &clientRect);
expected = clientRect; - expected.left += 1; expected.top += 1; - expected.right -= 1; + InflateRect(&expected, -1, 0); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
rc = clientRect; - rc.top += 5; - rc.left += 5; - rc.bottom -= 5; - rc.right -= 5; + InflateRect(&rc, -5, -5); expected = rc; expected.top -= 1; - expected.left -= 1; - expected.right += 1; + InflateRect(&expected, 1, 0); SendMessageA(hwnd, EM_SETRECT, 0, (LPARAM)&rc); SendMessageA(hwnd, EM_GETRECT, 0, (LPARAM)&rc); - ok(rc.top == expected.top && rc.left == expected.left && - rc.bottom == expected.bottom && rc.right == expected.right, - "rect a(t=%d, l=%d, b=%d, r=%d) != e(t=%d, l=%d, b=%d, r=%d)\n", - rc.top, rc.left, rc.bottom, rc.right, - expected.top, expected.left, expected.bottom, expected.right); + ok(EqualRect(&rc, &expected), "rect %s != %s\n", wine_dbgstr_rect(&rc), + wine_dbgstr_rect(&expected));
DestroyWindow(hwnd); } @@ -8072,7 +8095,7 @@ SendMessageA( richedit, WM_CUT, 0, 0 );
SendMessageA( richedit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt ); - ok( fmt.wAlignment == def_align, "got %d exppect %d\n", fmt.wAlignment, def_align ); + ok( fmt.wAlignment == def_align, "got %d expect %d\n", fmt.wAlignment, def_align );
DestroyWindow( richedit ); } @@ -8239,7 +8262,7 @@ SendMessageW(richedit, WM_CUT, 0, 0);
SendMessageW(richedit, EM_GETPARAFORMAT, 0, (LPARAM)&pf); - ok(pf.wAlignment == align_mask[i], "got %d exppect %d\n", pf.wAlignment, align_mask[i]); + ok(pf.wAlignment == align_mask[i], "got %d expect %d\n", pf.wAlignment, align_mask[i]);
DestroyWindow(richedit); }