Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
613998d4
Commit
613998d4
authored
Feb 12, 2007
by
Shanren Zhou
Committed by
Alexandre Julliard
Feb 14, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32: Add header tests.
parent
bdf2bf93
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
233 additions
and
0 deletions
+233
-0
header.c
dlls/comctl32/tests/header.c
+233
-0
No files found.
dlls/comctl32/tests/header.c
View file @
613998d4
/* Unit test suite for header control.
/* Unit test suite for header control.
*
*
* Copyright 2005 Vijay Kiran Kamuju
* Copyright 2005 Vijay Kiran Kamuju
* Copyright 2007 Shanren Zhou
*
*
* This library is free software; you can redistribute it and/or
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* modify it under the terms of the GNU Lesser General Public
...
@@ -50,6 +51,8 @@ static HWND hWndHeader;
...
@@ -50,6 +51,8 @@ static HWND hWndHeader;
#define compare(val, exp, fmt) ok((val) == (exp), #val " value: " fmt ", expected: " fmt "\n", (val), (exp))
#define compare(val, exp, fmt) ok((val) == (exp), #val " value: " fmt ", expected: " fmt "\n", (val), (exp))
#define expect(expected, got) ok(expected == got, "expected %d, got %d\n", expected,got)
static
void
expect_notify
(
INT
iCode
,
BOOL
fUnicode
,
HDITEMA
*
lpItem
)
static
void
expect_notify
(
INT
iCode
,
BOOL
fUnicode
,
HDITEMA
*
lpItem
)
{
{
assert
(
nExpectedNotify
<
10
);
assert
(
nExpectedNotify
<
10
);
...
@@ -494,6 +497,235 @@ static void test_header_control (void)
...
@@ -494,6 +497,235 @@ static void test_header_control (void)
DestroyWindow
(
hWndHeader
);
DestroyWindow
(
hWndHeader
);
}
}
static
void
test_hdm_getitemrect
(
void
)
{
/* Afer the setorderarray is called, item with index 0 becomes
* the 2nd item and item with index 1 becomes 1st item
*/
RECT
rect
;
int
retVal
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMRECT
,
0
,
(
LPARAM
)
&
rect
);
ok
(
retVal
==
TRUE
,
"Getting item rect should TRUE, got %d
\n
"
,
retVal
);
/* check bounding rectangle information */
expect
(
80
,
rect
.
left
);
expect
(
0
,
rect
.
top
);
expect
(
160
,
rect
.
right
);
expect
(
18
,
rect
.
bottom
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMRECT
,
1
,
(
LPARAM
)
&
rect
);
ok
(
retVal
==
TRUE
,
"Getting item rect should TRUE, got %d
\n
"
,
retVal
);
/* check bounding rectangle information */
expect
(
0
,
rect
.
left
);
expect
(
0
,
rect
.
top
);
expect
(
80
,
rect
.
right
);
expect
(
18
,
rect
.
bottom
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMRECT
,
10
,
(
LPARAM
)
&
rect
);
ok
(
retVal
==
0
,
"Getting rect of non-existing item should return 0, got %d
\n
"
,
retVal
);
}
static
void
test_hdm_layout
(
void
)
{
int
retVal
;
RECT
rect
;
HDLAYOUT
hdLayout
;
WINDOWPOS
windowPos
;
hdLayout
.
prc
=
&
rect
;
hdLayout
.
pwpos
=
&
windowPos
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_LAYOUT
,
0
,
(
LPARAM
)
&
hdLayout
);
expect
(
TRUE
,
retVal
);
}
static
void
test_hdm_ordertoindex
(
void
)
{
int
retVal
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_ORDERTOINDEX
,
1
,
0
);
expect
(
0
,
retVal
);
}
static
void
test_hdm_hittest
(
void
)
{
int
retVal
;
POINT
pt
;
HDHITTESTINFO
hdHitTestInfo
;
const
int
firstItemMaxRight
=
80
;
const
int
secondItemMaxRight
=
160
;
const
int
maxBottom
=
18
;
/* Afer the setorderarray is called, item with index 0 becomes
* the 2nd item and item with index 1 becomes 1st item
*/
pt
.
x
=
firstItemMaxRight
-
1
;
pt
.
y
=
maxBottom
-
1
;
hdHitTestInfo
.
pt
=
pt
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_HITTEST
,
0
,
(
LPARAM
)
&
hdHitTestInfo
);
expect
(
1
,
retVal
);
expect
(
1
,
hdHitTestInfo
.
iItem
);
pt
.
x
=
secondItemMaxRight
-
1
;
pt
.
y
=
maxBottom
-
1
;
hdHitTestInfo
.
pt
=
pt
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_HITTEST
,
0
,
(
LPARAM
)
&
hdHitTestInfo
);
expect
(
0
,
retVal
);
expect
(
0
,
hdHitTestInfo
.
iItem
);
pt
.
x
=
secondItemMaxRight
;
pt
.
y
=
maxBottom
+
1
;
hdHitTestInfo
.
pt
=
pt
;
todo_wine
{
retVal
=
SendMessage
(
hWndHeader
,
HDM_HITTEST
,
0
,
(
LPARAM
)
&
hdHitTestInfo
);
expect
(
-
1
,
retVal
);
}
}
static
void
test_hdm_sethotdivider
(
void
)
{
int
retVal
;
/* low word: x coordinate = 5
* high word: y coordinate = 5
*/
todo_wine
{
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETHOTDIVIDER
,
TRUE
,
(
LPARAM
)
0X00050005
);
expect
(
0
,
retVal
);
}
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETHOTDIVIDER
,
FALSE
,
100
);
expect
(
100
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETHOTDIVIDER
,
FALSE
,
1
);
expect
(
1
,
retVal
);
}
static
void
test_hdm_imageMessages
(
void
)
{
HIMAGELIST
hImageList
;
HIMAGELIST
hImageListRetVal
;
hImageListRetVal
=
(
HIMAGELIST
)
SendMessage
(
hWndHeader
,
HDM_SETIMAGELIST
,
0
,
(
LPARAM
)
&
hImageList
);
ok
(
hImageListRetVal
==
NULL
,
"Expected NULL, got %d
\n
"
,
(
int
)
hImageListRetVal
);
hImageListRetVal
=
(
HIMAGELIST
)
SendMessage
(
hWndHeader
,
HDM_GETIMAGELIST
,
0
,
0
);
ok
(
hImageListRetVal
!=
NULL
,
"Expected non-NULL handle, got %d
\n
"
,
(
int
)
hImageListRetVal
);
hImageListRetVal
=
(
HIMAGELIST
)
SendMessage
(
hWndHeader
,
HDM_CREATEDRAGIMAGE
,
0
,
0
);
ok
(
hImageListRetVal
!=
NULL
,
"Expected non-NULL handle, got %d
\n
"
,
(
int
)
hImageListRetVal
);
}
static
void
test_hdm_filterMessages
(
void
)
{
int
retVal
;
todo_wine
{
/* msdn incorrecly states that return value
* is the index of the filter control being
* modified. The sendMessage here should
* return previous filter timeout value
*/
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETFILTERCHANGETIMEOUT
,
1
,
100
);
expect
(
1000
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_CLEARFILTER
,
0
,
1
);
expect
(
1
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_EDITFILTER
,
1
,
0
);
expect
(
1
,
retVal
);
}
}
static
void
test_hdm_unicodeformatMessages
(
void
)
{
int
retVal
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETUNICODEFORMAT
,
TRUE
,
0
);
expect
(
0
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETUNICODEFORMAT
,
0
,
0
);
expect
(
1
,
retVal
);
}
static
void
test_hdm_bitmapmarginMessages
(
void
)
{
int
retVal
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETBITMAPMARGIN
,
0
,
0
);
expect
(
6
,
retVal
);
}
static
void
test_hdm_index_messages
(
void
)
{
int
retVal
;
int
loopcnt
;
int
strcmpResult
;
int
iSize
;
static
const
int
lpiarray
[
2
]
=
{
1
,
0
};
static
int
lpiarrayReceived
[
2
];
static
char
firstHeaderItem
[]
=
"Name"
;
static
char
secondHeaderItem
[]
=
"Size"
;
static
char
thirdHeaderItem
[]
=
"Type"
;
static
char
fourthHeaderItem
[]
=
"Data Modified"
;
static
char
*
items
[]
=
{
firstHeaderItem
,
secondHeaderItem
,
thirdHeaderItem
,
fourthHeaderItem
};
HDITEM
hdItem
;
hdItem
.
mask
=
HDI_TEXT
|
HDI_WIDTH
|
HDI_FORMAT
;
hdItem
.
fmt
=
HDF_LEFT
;
hdItem
.
cxy
=
80
;
hdItem
.
cchTextMax
=
260
;
hWndHeader
=
create_header_control
();
for
(
loopcnt
=
0
;
loopcnt
<
4
;
loopcnt
++
)
{
hdItem
.
pszText
=
items
[
loopcnt
];
retVal
=
SendMessage
(
hWndHeader
,
HDM_INSERTITEM
,
loopcnt
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
loopcnt
,
"Adding item %d failed with return value %d
\n
"
,
(
loopcnt
+
1
),
retVal
);
}
retVal
=
SendMessage
(
hWndHeader
,
HDM_DELETEITEM
,
3
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
TRUE
,
"Deleting item 3 should return TRUE, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMCOUNT
,
0
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
3
,
"Getting item count should return 3, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_DELETEITEM
,
3
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
FALSE
,
"Deleting already-deleted item should return FALSE, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMCOUNT
,
0
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
3
,
"Getting item count should return 3, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_DELETEITEM
,
2
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
TRUE
,
"Deleting item 2 should return TRUE, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEMCOUNT
,
0
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
2
,
"Getting item count should return 2, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEM
,
3
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
FALSE
,
"Getting already-deleted item should return FALSE, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETITEM
,
0
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
TRUE
,
"Getting the 1st header item should return TRUE, got %d
\n
"
,
retVal
);
/* check if the item is the right one */
strcmpResult
=
strcmp
(
hdItem
.
pszText
,
firstHeaderItem
);
expect
(
0
,
strcmpResult
);
expect
(
80
,
hdItem
.
cxy
);
iSize
=
SendMessage
(
hWndHeader
,
HDM_GETITEMCOUNT
,
0
,
(
LPARAM
)
&
hdItem
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETORDERARRAY
,
(
WPARAM
)
iSize
,
(
LPARAM
)
(
LPINT
)
lpiarray
);
ok
(
retVal
==
TRUE
,
"Setting header items order should return TRUE, got %d
\n
"
,
retVal
);
retVal
=
SendMessage
(
hWndHeader
,
HDM_GETORDERARRAY
,
(
WPARAM
)
iSize
,
(
LPARAM
)
(
LPINT
)
lpiarrayReceived
);
ok
(
retVal
==
TRUE
,
"Getting header items order should return TRUE, got %d
\n
"
,
retVal
);
/* check if the array order is set correctly and the size of the array is corret. */
expect
(
2
,
iSize
);
expect
(
lpiarray
[
0
],
lpiarrayReceived
[
0
]);
expect
(
lpiarray
[
1
],
lpiarrayReceived
[
1
]);
hdItem
.
mask
=
HDI_FORMAT
;
hdItem
.
fmt
=
HDF_CENTER
|
HDF_STRING
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETITEM
,
0
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
TRUE
,
"Aligning 1st header item to center should return TRUE, got %d
\n
"
,
retVal
);
hdItem
.
fmt
=
HDF_RIGHT
|
HDF_STRING
;
retVal
=
SendMessage
(
hWndHeader
,
HDM_SETITEM
,
1
,
(
LPARAM
)
&
hdItem
);
ok
(
retVal
==
TRUE
,
"Aligning 2nd header item to right should return TRUE, got %d
\n
"
,
retVal
);
}
static
void
test_header_messages
(
void
)
{
test_hdm_index_messages
();
test_hdm_getitemrect
();
test_hdm_hittest
();
test_hdm_layout
();
test_hdm_ordertoindex
();
test_hdm_sethotdivider
();
test_hdm_imageMessages
();
test_hdm_filterMessages
();
test_hdm_unicodeformatMessages
();
test_hdm_bitmapmarginMessages
();
}
#define TEST_NMCUSTOMDRAW(draw_stage, item_spec, lparam, _left, _top, _right, _bottom) \
#define TEST_NMCUSTOMDRAW(draw_stage, item_spec, lparam, _left, _top, _right, _bottom) \
ok(nm->dwDrawStage == draw_stage, "Invalid dwDrawStage %d vs %d\n", draw_stage, nm->dwDrawStage); \
ok(nm->dwDrawStage == draw_stage, "Invalid dwDrawStage %d vs %d\n", draw_stage, nm->dwDrawStage); \
...
@@ -832,6 +1064,7 @@ START_TEST(header)
...
@@ -832,6 +1064,7 @@ START_TEST(header)
test_header_control
();
test_header_control
();
test_header_order
();
test_header_order
();
test_customdraw
();
test_customdraw
();
test_header_messages
();
DestroyWindow
(
hHeaderParentWnd
);
DestroyWindow
(
hHeaderParentWnd
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment