riched20/tests: Add test for WB_ISDELIMITER.

This commit is contained in:
Dan Kegel 2011-07-18 08:43:48 -07:00 committed by Alexandre Julliard
parent 66a820683e
commit dafd6fecd1
1 changed files with 104 additions and 2 deletions

View File

@ -46,19 +46,32 @@ static CHAR string1[MAX_PATH], string2[MAX_PATH], string3[MAX_PATH];
static HMODULE hmoduleRichEdit; static HMODULE hmoduleRichEdit;
static HWND new_window(LPCTSTR lpClassName, DWORD dwStyle, HWND parent) { static HWND new_window(LPCSTR lpClassName, DWORD dwStyle, HWND parent) {
HWND hwnd; HWND hwnd;
hwnd = CreateWindow(lpClassName, NULL, dwStyle|WS_POPUP|WS_HSCROLL|WS_VSCROLL hwnd = CreateWindowA(lpClassName, NULL, dwStyle|WS_POPUP|WS_HSCROLL|WS_VSCROLL
|WS_VISIBLE, 0, 0, 200, 60, parent, NULL, |WS_VISIBLE, 0, 0, 200, 60, parent, NULL,
hmoduleRichEdit, NULL); hmoduleRichEdit, NULL);
ok(hwnd != NULL, "class: %s, error: %d\n", lpClassName, (int) GetLastError()); ok(hwnd != NULL, "class: %s, error: %d\n", lpClassName, (int) GetLastError());
return hwnd; return hwnd;
} }
static HWND new_windowW(LPCWSTR lpClassName, DWORD dwStyle, HWND parent) {
HWND hwnd;
hwnd = CreateWindowW(lpClassName, NULL, dwStyle|WS_POPUP|WS_HSCROLL|WS_VSCROLL
|WS_VISIBLE, 0, 0, 200, 60, parent, NULL,
hmoduleRichEdit, NULL);
ok(hwnd != NULL, "class: %s, error: %d\n", wine_dbgstr_w(lpClassName), (int) GetLastError());
return hwnd;
}
static HWND new_richedit(HWND parent) { static HWND new_richedit(HWND parent) {
return new_window(RICHEDIT_CLASS, ES_MULTILINE, parent); return new_window(RICHEDIT_CLASS, ES_MULTILINE, parent);
} }
static HWND new_richeditW(HWND parent) {
return new_windowW(RICHEDIT_CLASS20W, ES_MULTILINE, parent);
}
/* Keeps the window reponsive for the deley_time in seconds. /* Keeps the window reponsive for the deley_time in seconds.
* This is useful for debugging a test to see what is happening. */ * This is useful for debugging a test to see what is happening. */
static void keep_responsive(time_t delay_time) static void keep_responsive(time_t delay_time)
@ -7034,6 +7047,93 @@ static void test_dialogmode(void)
DestroyWindow(hwParent); DestroyWindow(hwParent);
} }
static void test_EM_FINDWORDBREAK_W(void)
{
static const struct {
WCHAR c;
BOOL isdelimiter; /* expected result of WB_ISDELIMITER */
} delimiter_tests[] = {
{0x0a, FALSE}, /* newline */
{0x0b, FALSE}, /* vertical tab mark */
{0x0c, FALSE}, /* form feed */
{0x0d, FALSE}, /* carriage return */
{0x20, TRUE}, /* ANSI Space */
{0x61, FALSE}, /* ASCII capital letter a */
{0xa0, FALSE}, /* no-break space */
{0x2000, FALSE}, /* en quad */
{0x3000, FALSE}, /* Ideographic space */
{0x1100, FALSE}, /* Hangul Choseong Kiyeok (G sound) Ordinary Letter*/
{0x11ff, FALSE}, /* Hangul Jongseoung Kiyeok-Hieuh (Hard N sound) Ordinary Letter*/
{0x115f, FALSE}, /* Hangul Choseong Filler (no sound, used with two letter Hangul words) Ordinary Letter */
{0xac00, FALSE}, /* Hangul character GA*/
{0xd7af, FALSE}, /* End of Hangul character chart */
{0xf020, TRUE}, /* High Surrogate Space */
{0xff20, FALSE}, /* MS private for CP_SYMBOL round trip? */
{WCH_EMBEDDING, FALSE}, /* object replacement character*/
};
int i;
HWND hwndRichEdit = new_richeditW(NULL);
ok(IsWindowUnicode(hwndRichEdit), "window should be unicode\n");
for (i = 0; i < sizeof(delimiter_tests)/sizeof(delimiter_tests[0]); i++)
{
WCHAR wbuf[2];
int result;
wbuf[0] = delimiter_tests[i].c;
wbuf[1] = 0;
SendMessageW(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)wbuf);
result = SendMessageW(hwndRichEdit, EM_FINDWORDBREAK, WB_ISDELIMITER,0);
if (wbuf[0] == 0x20 || wbuf[0] == 0xf020)
todo_wine
ok(result == delimiter_tests[i].isdelimiter,
"wanted ISDELIMITER_W(0x%x) %d, got %d\n",
delimiter_tests[i].c, delimiter_tests[i].isdelimiter,result);
else
ok(result == delimiter_tests[i].isdelimiter,
"wanted ISDELIMITER_W(0x%x) %d, got %d\n",
delimiter_tests[i].c, delimiter_tests[i].isdelimiter, result);
}
DestroyWindow(hwndRichEdit);
}
static void test_EM_FINDWORDBREAK_A(void)
{
static const struct {
WCHAR c;
BOOL isdelimiter; /* expected result of WB_ISDELIMITER */
} delimiter_tests[] = {
{0x0a, FALSE}, /* newline */
{0x0b, FALSE}, /* vertical tab mark */
{0x0c, FALSE}, /* form feed */
{0x0d, FALSE}, /* carriage return */
{0x20, TRUE}, /* ANSI Space */
{0x61, FALSE}, /* ASCII capital letter a */
};
int i;
HWND hwndRichEdit = new_richedit(NULL);
ok(!IsWindowUnicode(hwndRichEdit), "window should not be unicode\n");
for (i = 0; i < sizeof(delimiter_tests)/sizeof(delimiter_tests[0]); i++)
{
int result;
char buf[2];
buf[0] = delimiter_tests[i].c;
buf[1] = 0;
SendMessageW(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)buf);
result = SendMessage(hwndRichEdit, EM_FINDWORDBREAK, WB_ISDELIMITER, 0);
if (buf[0] == 0x20)
todo_wine
ok(result == delimiter_tests[i].isdelimiter,
"wanted ISDELIMITER_A(0x%x) %d, got %d\n",
delimiter_tests[i].c, delimiter_tests[i].isdelimiter,result);
else
ok(result == delimiter_tests[i].isdelimiter,
"wanted ISDELIMITER_A(0x%x) %d, got %d\n",
delimiter_tests[i].c, delimiter_tests[i].isdelimiter, result);
}
DestroyWindow(hwndRichEdit);
}
START_TEST( editor ) START_TEST( editor )
{ {
BOOL ret; BOOL ret;
@ -7090,6 +7190,8 @@ START_TEST( editor )
test_WM_GETDLGCODE(); test_WM_GETDLGCODE();
test_zoom(); test_zoom();
test_dialogmode(); test_dialogmode();
test_EM_FINDWORDBREAK_W();
test_EM_FINDWORDBREAK_A();
/* Set the environment variable WINETEST_RICHED20 to keep windows /* Set the environment variable WINETEST_RICHED20 to keep windows
* responsive and open for 30 seconds. This is useful for debugging. * responsive and open for 30 seconds. This is useful for debugging.