From: Akihiro Sagawa sagawa.aki@gmail.com
Signed-off-by: Akihiro Sagawa sagawa.aki@gmail.com --- dlls/winmm/tests/mci.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)
diff --git a/dlls/winmm/tests/mci.c b/dlls/winmm/tests/mci.c index 05492a770be..c99ff0367fd 100644 --- a/dlls/winmm/tests/mci.c +++ b/dlls/winmm/tests/mci.c @@ -39,6 +39,7 @@ typedef union { MCI_SYSINFO_PARMSA sys; MCI_SEEK_PARMS seek; MCI_DGV_OPEN_PARMSW dgv_open; + MCI_DGV_WHERE_PARMS where; MCI_GENERIC_PARMS gen; } MCI_PARMS_UNION;
@@ -1523,6 +1524,7 @@ static void test_video_window(void) { HWND parent_window = NULL, hwnd, video_window; DWORD style, expected; + RECT rc, src_rc, win_rc;
winetest_push_context("%u", i);
@@ -1573,6 +1575,42 @@ static void test_video_window(void) todo_wine_if(i != 3) ok(style == expected, "hwnd %p: got style %#lx, expected %#lx\n", video_window, style, expected);
+ /* get source video size */ + err = mciSendCommandW(wDeviceID, MCI_WHERE, MCI_DGV_WHERE_SOURCE, (DWORD_PTR)&parm); + ok(!err,"mciCommand where source returned %s\n", dbg_mcierr(err)); + SetRect(&rc, 0, 0, 32, 24); + ok(EqualRect(&parm.where.rc, &rc), "got %s, expected %s for the source rect\n", wine_dbgstr_rect(&parm.where.rc), wine_dbgstr_rect(&rc)); + src_rc = parm.where.rc; + + /* test default video destination size */ + err = mciSendCommandW(wDeviceID, MCI_WHERE, MCI_DGV_WHERE_DESTINATION, (DWORD_PTR)&parm); + ok(!err,"mciCommand where destination returned %s\n", dbg_mcierr(err)); + if (style & (WS_POPUP|WS_CHILD)) + rc = src_rc; + else + /* The video destination is stretched to fit the window, + especially if the video width less than SM_CXMIN */ + GetClientRect(video_window, &rc); + todo_wine_if(style & (WS_POPUP|WS_CHILD)) + ok(EqualRect(&parm.where.rc, &rc), "got %s, expected %s for the destination rect\n", wine_dbgstr_rect(&parm.where.rc), wine_dbgstr_rect(&rc)); + + /* test default video window size */ + rc = src_rc; + AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE); /* Windows is broken */ + OffsetRect(&rc, -rc.left, -rc.top); + rc.right = max(rc.right, GetSystemMetrics(SM_CXMIN)); + + GetWindowRect(video_window, &win_rc); + OffsetRect(&rc, win_rc.left, win_rc.top); + todo_wine_if(testcase[i].style & WS_CHILD) + ok(EqualRect(&rc, &win_rc), "window rectangle doesn't match, got %s, expected %s\n", wine_dbgstr_rect(&win_rc), wine_dbgstr_rect(&rc)); + + err = mciSendCommandW(wDeviceID, MCI_WHERE, MCI_DGV_WHERE_WINDOW, (DWORD_PTR)&parm); + ok(!err,"mciCommand where window returned %s\n", dbg_mcierr(err)); + win_rc.right -= win_rc.left; /* right is width in MCI rect */ + win_rc.bottom -= win_rc.top; /* bottom is height in MCI rect */ + ok(EqualRect(&win_rc, &parm.where.rc), "window command result doesn't match, got %s, expected %s\n", wine_dbgstr_rect(&parm.where.rc), wine_dbgstr_rect(&win_rc)); + err = mciSendCommandW(wDeviceID, MCI_STOP, 0, (DWORD_PTR)&parm); ok(!err,"mciCommand play returned %s\n", dbg_mcierr(err));