Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
c601c701
Commit
c601c701
authored
Mar 01, 2022
by
Eric Pouech
Committed by
Alexandre Julliard
Mar 01, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mstask/tests: Enable compilation with long types.
Signed-off-by:
Eric Pouech
<
eric.pouech@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
d25ee94f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
283 additions
and
284 deletions
+283
-284
Makefile.in
dlls/mstask/tests/Makefile.in
+0
-1
task.c
dlls/mstask/tests/task.c
+107
-107
task_scheduler.c
dlls/mstask/tests/task_scheduler.c
+66
-66
task_trigger.c
dlls/mstask/tests/task_trigger.c
+110
-110
No files found.
dlls/mstask/tests/Makefile.in
View file @
c601c701
EXTRADEFS
=
-DWINE_NO_LONG_TYPES
TESTDLL
=
mstask.dll
IMPORTS
=
ole32 user32
...
...
dlls/mstask/tests/task.c
View file @
c601c701
...
...
@@ -66,7 +66,7 @@ static void test_SetApplicationName_GetApplicationName(void)
/* Attempt getting before setting application name */
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpiW
(
stored_name
,
empty
),
...
...
@@ -77,10 +77,10 @@ static void test_SetApplicationName_GetApplicationName(void)
/* Set application name to a nonexistent application and then get
* the application name that is actually stored */
hres
=
ITask_SetApplicationName
(
test_task
,
non_application_name
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
non_application_name
),
hres
);
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
full_name
=
path_resolve_name
(
non_application_name
);
...
...
@@ -92,10 +92,10 @@ static void test_SetApplicationName_GetApplicationName(void)
/* Set a valid application name with program type extension and then
* get the stored name */
hres
=
ITask_SetApplicationName
(
test_task
,
notepad_exe
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
notepad_exe
),
hres
);
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
full_name
=
path_resolve_name
(
notepad_exe
);
...
...
@@ -107,9 +107,9 @@ static void test_SetApplicationName_GetApplicationName(void)
/* Set a valid application name without program type extension and
* then get the stored name */
hres
=
ITask_SetApplicationName
(
test_task
,
notepad
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08x
\n
"
,
wine_dbgstr_w
(
notepad
),
hres
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
notepad
),
hres
);
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
full_name
=
path_resolve_name
(
notepad_exe
);
/* XP SP1 appends .exe */
...
...
@@ -126,10 +126,10 @@ static void test_SetApplicationName_GetApplicationName(void)
* to a nonexistent application and then get the name that is
* actually stored */
hres
=
ITask_SetApplicationName
(
test_task
,
non_application_name
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
non_application_name
),
hres
);
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
full_name
=
path_resolve_name
(
non_application_name
);
...
...
@@ -140,9 +140,9 @@ static void test_SetApplicationName_GetApplicationName(void)
/* Clear application name */
hres
=
ITask_SetApplicationName
(
test_task
,
empty
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08x
\n
"
,
wine_dbgstr_w
(
empty
),
hres
);
ok
(
hres
==
S_OK
,
"Failed setting name %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
empty
),
hres
);
hres
=
ITask_GetApplicationName
(
test_task
,
&
stored_name
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetApplicationName failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpiW
(
stored_name
,
empty
),
...
...
@@ -165,7 +165,7 @@ static void test_CreateTrigger(void)
ok
(
hres
==
S_OK
,
"Failed to setup test_task
\n
"
);
hres
=
ITask_CreateTrigger
(
test_task
,
&
trigger_index
,
&
test_trigger
);
ok
(
hres
==
S_OK
,
"Failed to create trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to create trigger: 0x%08
l
x
\n
"
,
hres
);
ITaskTrigger_Release
(
test_trigger
);
ITask_Release
(
test_task
);
...
...
@@ -186,7 +186,7 @@ static void test_SetParameters_GetParameters(void)
/* Get parameters before setting them */
hres
=
ITask_GetParameters
(
test_task
,
&
parameters
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
parameters
,
empty
),
...
...
@@ -196,10 +196,10 @@ static void test_SetParameters_GetParameters(void)
/* Set parameters to a simple string */
hres
=
ITask_SetParameters
(
test_task
,
parameters_a
);
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
parameters_a
),
hres
);
hres
=
ITask_GetParameters
(
test_task
,
&
parameters
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
parameters
,
parameters_a
),
"Got %s, expected %s
\n
"
,
...
...
@@ -209,10 +209,10 @@ static void test_SetParameters_GetParameters(void)
/* Update parameters to a different simple string */
hres
=
ITask_SetParameters
(
test_task
,
parameters_b
);
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
parameters_b
),
hres
);
hres
=
ITask_GetParameters
(
test_task
,
&
parameters
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
parameters
,
parameters_b
),
"Got %s, expected %s
\n
"
,
...
...
@@ -222,10 +222,10 @@ static void test_SetParameters_GetParameters(void)
/* Clear parameters */
hres
=
ITask_SetParameters
(
test_task
,
empty
);
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting parameters %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
empty
),
hres
);
hres
=
ITask_GetParameters
(
test_task
,
&
parameters
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetParameters failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
parameters
,
empty
),
...
...
@@ -251,7 +251,7 @@ static void test_SetComment_GetComment(void)
/* Get comment before setting it*/
hres
=
ITask_GetComment
(
test_task
,
&
comment
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
comment
,
empty
),
...
...
@@ -261,10 +261,10 @@ static void test_SetComment_GetComment(void)
/* Set comment to a simple string */
hres
=
ITask_SetComment
(
test_task
,
comment_a
);
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
comment_a
),
hres
);
hres
=
ITask_GetComment
(
test_task
,
&
comment
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
comment
,
comment_a
),
"Got %s, expected %s
\n
"
,
...
...
@@ -274,10 +274,10 @@ static void test_SetComment_GetComment(void)
/* Update comment to a different simple string */
hres
=
ITask_SetComment
(
test_task
,
comment_b
);
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
comment_b
),
hres
);
hres
=
ITask_GetComment
(
test_task
,
&
comment
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
comment
,
comment_b
),
"Got %s, expected %s
\n
"
,
...
...
@@ -287,10 +287,10 @@ static void test_SetComment_GetComment(void)
/* Clear comment */
hres
=
ITask_SetComment
(
test_task
,
empty
);
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08x
\n
"
,
ok
(
hres
==
S_OK
,
"Failed setting comment %s: %08
l
x
\n
"
,
wine_dbgstr_w
(
empty
),
hres
);
hres
=
ITask_GetComment
(
test_task
,
&
comment
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"GetComment failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
comment
,
empty
),
...
...
@@ -315,40 +315,40 @@ static void test_SetMaxRunTime_GetMaxRunTime(void)
* 3 days * 24 hours * 60 minutes * 60 seconds * 1000 ms = 259200000 */
max_run_time
=
0
;
hres
=
ITask_GetMaxRunTime
(
test_task
,
&
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08x
\n
"
,
hres
);
ok
(
max_run_time
==
259200000
,
"Expected 259200000: %d
\n
"
,
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08
l
x
\n
"
,
hres
);
ok
(
max_run_time
==
259200000
,
"Expected 259200000: %
l
d
\n
"
,
max_run_time
);
/* Basic set test */
max_run_time
=
0
;
hres
=
ITask_SetMaxRunTime
(
test_task
,
1234
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08
l
x
\n
"
,
hres
);
hres
=
ITask_GetMaxRunTime
(
test_task
,
&
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08x
\n
"
,
hres
);
ok
(
max_run_time
==
1234
,
"Expected 1234: %d
\n
"
,
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08
l
x
\n
"
,
hres
);
ok
(
max_run_time
==
1234
,
"Expected 1234: %
l
d
\n
"
,
max_run_time
);
/* Verify that time can be set to zero */
max_run_time
=
1
;
hres
=
ITask_SetMaxRunTime
(
test_task
,
0
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08
l
x
\n
"
,
hres
);
hres
=
ITask_GetMaxRunTime
(
test_task
,
&
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08x
\n
"
,
hres
);
ok
(
max_run_time
==
0
,
"Expected 0: %d
\n
"
,
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08
l
x
\n
"
,
hres
);
ok
(
max_run_time
==
0
,
"Expected 0: %
l
d
\n
"
,
max_run_time
);
/* Check resolution by setting time to one */
max_run_time
=
0
;
hres
=
ITask_SetMaxRunTime
(
test_task
,
1
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08
l
x
\n
"
,
hres
);
hres
=
ITask_GetMaxRunTime
(
test_task
,
&
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08x
\n
"
,
hres
);
ok
(
max_run_time
==
1
,
"Expected 1: %d
\n
"
,
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08
l
x
\n
"
,
hres
);
ok
(
max_run_time
==
1
,
"Expected 1: %
l
d
\n
"
,
max_run_time
);
/* Verify that time can be set to INFINITE */
max_run_time
=
0
;
hres
=
ITask_SetMaxRunTime
(
test_task
,
INFINITE
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set max runtime: 0x%08
l
x
\n
"
,
hres
);
hres
=
ITask_GetMaxRunTime
(
test_task
,
&
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08x
\n
"
,
hres
);
ok
(
max_run_time
==
INFINITE
,
"Expected INFINITE: %d
\n
"
,
max_run_time
);
ok
(
hres
==
S_OK
,
"Failed to get max runtime: 0x%08
l
x
\n
"
,
hres
);
ok
(
max_run_time
==
INFINITE
,
"Expected INFINITE: %
l
d
\n
"
,
max_run_time
);
ITask_Release
(
test_task
);
}
...
...
@@ -379,19 +379,19 @@ static void test_SetAccountInformation_GetAccountInformation(void)
}
ok
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
)
||
hres
==
SCHED_E_CANNOT_OPEN_TASK
,
"Unset account name generated: 0x%08x
\n
"
,
hres
);
"Unset account name generated: 0x%08
l
x
\n
"
,
hres
);
/* Attempt to set to a dummy account without a password */
/* This test passes on WinXP but fails on Win2K */
hres
=
ITask_SetAccountInformation
(
test_task
,
dummy_account_name
,
NULL
);
ok
(
hres
==
S_OK
,
"Failed setting dummy account with no password: %08x
\n
"
,
hres
);
"Failed setting dummy account with no password: %08
l
x
\n
"
,
hres
);
hres
=
ITask_GetAccountInformation
(
test_task
,
&
account_name
);
ok
(
hres
==
S_OK
||
broken
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
)
||
hres
==
SCHED_E_CANNOT_OPEN_TASK
||
hres
==
0x200
),
/* win2k */
"GetAccountInformation failed: %08x
\n
"
,
hres
);
"GetAccountInformation failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
account_name
,
dummy_account_name
),
...
...
@@ -405,13 +405,13 @@ static void test_SetAccountInformation_GetAccountInformation(void)
hres
=
ITask_SetAccountInformation
(
test_task
,
dummy_account_name_b
,
dummy_account_name_b
);
ok
(
hres
==
S_OK
,
"Failed setting dummy account with password: %08x
\n
"
,
hres
);
"Failed setting dummy account with password: %08
l
x
\n
"
,
hres
);
hres
=
ITask_GetAccountInformation
(
test_task
,
&
account_name
);
ok
(
hres
==
S_OK
||
broken
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
)
||
hres
==
SCHED_E_CANNOT_OPEN_TASK
||
hres
==
0x200
),
/* win2k */
"GetAccountInformation failed: %08x
\n
"
,
hres
);
"GetAccountInformation failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
account_name
,
dummy_account_name_b
),
...
...
@@ -422,13 +422,13 @@ static void test_SetAccountInformation_GetAccountInformation(void)
/* Attempt to set to the local system account */
hres
=
ITask_SetAccountInformation
(
test_task
,
empty
,
NULL
);
ok
(
hres
==
S_OK
,
"Failed setting system account: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed setting system account: %08
l
x
\n
"
,
hres
);
hres
=
ITask_GetAccountInformation
(
test_task
,
&
account_name
);
ok
(
hres
==
S_OK
||
broken
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
)
||
hres
==
SCHED_E_CANNOT_OPEN_TASK
||
hres
==
0x200
),
/* win2k */
"GetAccountInformation failed: %08x
\n
"
,
hres
);
"GetAccountInformation failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
ok
(
!
lstrcmpW
(
account_name
,
empty
),
...
...
@@ -456,36 +456,36 @@ static void test_task_state(void)
flags
=
0xdeadbeef
;
hr
=
ITask_GetFlags
(
test_task
,
&
flags
);
ok
(
hr
==
S_OK
,
"GetFlags error %#x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#x
\n
"
,
flags
);
ok
(
hr
==
S_OK
,
"GetFlags error %#
l
x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#
l
x
\n
"
,
flags
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetTaskFlags
(
test_task
,
NULL
);
flags
=
0xdeadbeef
;
hr
=
ITask_GetTaskFlags
(
test_task
,
&
flags
);
ok
(
hr
==
S_OK
,
"GetTaskFlags error %#x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#x
\n
"
,
flags
);
ok
(
hr
==
S_OK
,
"GetTaskFlags error %#
l
x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#
l
x
\n
"
,
flags
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetStatus
(
test_task
,
NULL
);
status
=
0xdeadbeef
;
hr
=
ITask_GetStatus
(
test_task
,
&
status
);
ok
(
hr
==
S_OK
,
"GetStatus error %#x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#x
\n
"
,
status
);
ok
(
hr
==
S_OK
,
"GetStatus error %#
l
x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#
l
x
\n
"
,
status
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetErrorRetryCount
(
test_task
,
NULL
);
hr
=
ITask_GetErrorRetryCount
(
test_task
,
&
val1
);
ok
(
hr
==
E_NOTIMPL
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_NOTIMPL
,
"got %#
l
x
\n
"
,
hr
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetErrorRetryInterval
(
test_task
,
NULL
);
hr
=
ITask_GetErrorRetryInterval
(
test_task
,
&
val1
);
ok
(
hr
==
E_NOTIMPL
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_NOTIMPL
,
"got %#
l
x
\n
"
,
hr
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetIdleWait
(
test_task
,
NULL
,
NULL
);
...
...
@@ -493,7 +493,7 @@ static void test_task_state(void)
val1
=
0xdead
;
val2
=
0xbeef
;
hr
=
ITask_GetIdleWait
(
test_task
,
&
val1
,
&
val2
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
val1
==
10
,
"got %u
\n
"
,
val1
);
ok
(
val2
==
60
,
"got %u
\n
"
,
val2
);
...
...
@@ -502,23 +502,23 @@ static void test_task_state(void)
val
=
0xdeadbeef
;
hr
=
ITask_GetPriority
(
test_task
,
&
val
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
val
==
NORMAL_PRIORITY_CLASS
,
"got %#x
\n
"
,
val
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
val
==
NORMAL_PRIORITY_CLASS
,
"got %#
l
x
\n
"
,
val
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetExitCode
(
test_task
,
NULL
);
val
=
0xdeadbeef
;
hr
=
ITask_GetExitCode
(
test_task
,
&
val
);
ok
(
hr
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#x
\n
"
,
hr
);
ok
(
val
==
0
,
"got %#x
\n
"
,
val
);
ok
(
hr
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#
l
x
\n
"
,
hr
);
ok
(
val
==
0
,
"got %#
l
x
\n
"
,
val
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetMostRecentRunTime
(
test_task
,
NULL
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetMostRecentRunTime
(
test_task
,
&
st
);
ok
(
hr
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#
l
x
\n
"
,
hr
);
ok
(
st
.
wYear
==
0
,
"got %u
\n
"
,
st
.
wYear
);
ok
(
st
.
wMonth
==
0
,
"got %u
\n
"
,
st
.
wMonth
);
ok
(
st
.
wDay
==
0
,
"got %u
\n
"
,
st
.
wDay
);
...
...
@@ -535,10 +535,10 @@ static void save_job(ITask *task)
IPersistFile
*
pfile
;
hr
=
ITask_QueryInterface
(
task
,
&
IID_IPersistFile
,
(
void
**
)
&
pfile
);
ok
(
hr
==
S_OK
,
"QueryInterface error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"QueryInterface error %#
l
x
\n
"
,
hr
);
hr
=
IPersistFile_Save
(
pfile
,
NULL
,
FALSE
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
IPersistFile_Release
(
pfile
);
}
...
...
@@ -559,26 +559,26 @@ static void test_Run(void)
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
wine_test_runW
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_Run
(
task
);
ok
(
hr
==
SCHED_E_TASK_NOT_READY
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_E_TASK_NOT_READY
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_Terminate
(
task
);
ok
(
hr
==
SCHED_E_TASK_NOT_RUNNING
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_E_TASK_NOT_RUNNING
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#x
\n
"
,
status
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#
l
x
\n
"
,
status
);
save_job
(
task
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#x
\n
"
,
status
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_NOT_SCHEDULED
,
"got %#
l
x
\n
"
,
status
);
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
trigger_data
,
0
,
sizeof
(
trigger_data
));
trigger_data
.
cbTriggerSize
=
sizeof
(
trigger_data
);
...
...
@@ -593,32 +593,32 @@ static void test_Run(void)
trigger_data
.
Type
.
Weekly
.
WeeksInterval
=
1
;
trigger_data
.
Type
.
Weekly
.
rgfDaysOfTheWeek
=
0x7f
;
/* every day */
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
trigger_data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITaskTrigger_Release
(
trigger
);
hr
=
ITask_SetApplicationName
(
task
,
cmdW
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_SetParameters
(
task
,
empty
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_SetWorkingDirectory
(
task
,
empty
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
/* Save the task so that the Scheduler service would notice the changes */
save_job
(
task
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#x
\n
"
,
status
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#
l
x
\n
"
,
status
);
hr
=
ITask_Run
(
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
/* According to MSDN the task status doesn't update dynamically */
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#x
\n
"
,
status
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
status
==
SCHED_S_TASK_HAS_NOT_RUN
,
"got %#
l
x
\n
"
,
status
);
ITask_Release
(
task
);
...
...
@@ -632,10 +632,10 @@ static void test_Run(void)
for
(
i
=
0
;
i
<
5
;
i
++
)
{
hr
=
ITaskScheduler_Activate
(
scheduler
,
wine_test_runW
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"Activate error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Activate error %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITask_Release
(
task
);
...
...
@@ -645,15 +645,15 @@ static void test_Run(void)
}
hr
=
ITaskScheduler_Activate
(
scheduler
,
wine_test_runW
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"Activate error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Activate error %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
if
(
status
==
SCHED_S_TASK_RUNNING
)
{
hr
=
ITask_Terminate
(
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITask_Release
(
task
);
...
...
@@ -667,10 +667,10 @@ static void test_Run(void)
for
(
i
=
0
;
i
<
5
;
i
++
)
{
hr
=
ITaskScheduler_Activate
(
scheduler
,
wine_test_runW
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"Activate error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Activate error %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetStatus
(
task
,
&
status
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITask_Release
(
task
);
...
...
@@ -683,7 +683,7 @@ static void test_Run(void)
ITask_Release
(
task
);
hr
=
taskscheduler_delete
(
scheduler
,
wine_test_runW
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
}
static
void
test_SetFlags
(
void
)
...
...
@@ -694,31 +694,31 @@ static void test_SetFlags(void)
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_SetFlags
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
flags
=
0xdeadbeef
;
hr
=
ITask_GetFlags
(
task
,
&
flags
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#x
\n
"
,
flags
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
flags
==
0
,
"got %#
l
x
\n
"
,
flags
);
hr
=
ITask_SetFlags
(
task
,
0xffffffff
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
flags
=
0xdeadbeef
;
hr
=
ITask_GetFlags
(
task
,
&
flags
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
flags
==
0x7fff
,
"got %#x
\n
"
,
flags
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
flags
==
0x7fff
,
"got %#
l
x
\n
"
,
flags
);
hr
=
ITask_SetFlags
(
task
,
0x9234
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
flags
=
0xdeadbeef
;
hr
=
ITask_GetFlags
(
task
,
&
flags
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
flags
==
0x1234
,
"got %#x
\n
"
,
flags
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
flags
==
0x1234
,
"got %#
l
x
\n
"
,
flags
);
ITask_Release
(
task
);
}
...
...
@@ -733,7 +733,7 @@ static void test_workitem_data(void)
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetWorkItemData
(
task
,
&
count
,
NULL
);
...
...
@@ -743,35 +743,35 @@ static void test_workitem_data(void)
count
=
0xdead
;
data
=
(
BYTE
*
)
0xdeadbeef
;
hr
=
ITask_GetWorkItemData
(
task
,
&
count
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
0
,
"got %u
\n
"
,
count
);
ok
(
data
==
NULL
,
"got %p
\n
"
,
data
);
hr
=
ITask_SetWorkItemData
(
task
,
sizeof
(
hello
),
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_SetWorkItemData
(
task
,
0
,
hello
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_SetWorkItemData
(
task
,
sizeof
(
hello
),
hello
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
count
=
0xdead
;
data
=
NULL
;
hr
=
ITask_GetWorkItemData
(
task
,
&
count
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
sizeof
(
hello
),
"got %u
\n
"
,
count
);
ok
(
data
!=
NULL
,
"got NULL
\n
"
);
ok
(
!
memcmp
(
data
,
hello
,
sizeof
(
hello
)),
"data mismatch
\n
"
);
CoTaskMemFree
(
data
);
hr
=
ITask_SetWorkItemData
(
task
,
0
,
NULL
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
count
=
0xdead
;
data
=
(
BYTE
*
)
0xdeadbeef
;
hr
=
ITask_GetWorkItemData
(
task
,
&
count
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
0
,
"got %u
\n
"
,
count
);
ok
(
data
==
NULL
,
"got %p
\n
"
,
data
);
...
...
@@ -785,7 +785,7 @@ START_TEST(task)
CoInitialize
(
NULL
);
hr
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
scheduler
);
ok
(
hr
==
S_OK
,
"failed to create task scheduler: %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"failed to create task scheduler: %#
l
x
\n
"
,
hr
);
test_SetApplicationName_GetApplicationName
();
test_CreateTrigger
();
...
...
dlls/mstask/tests/task_scheduler.c
View file @
c601c701
...
...
@@ -65,7 +65,7 @@ static void test_NewWorkItem(void)
/* Create TaskScheduler */
hres
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
test_task_scheduler
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08
l
x
\n
"
,
hres
);
if
(
hres
!=
S_OK
)
{
skip
(
"Failed to create task scheduler. Skipping tests.
\n
"
);
...
...
@@ -75,7 +75,7 @@ static void test_NewWorkItem(void)
/* Test basic task creation */
hres
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hres
==
S_OK
,
"NewNetworkItem failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"NewNetworkItem failed: %08
l
x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
ITask_Release
(
task
);
...
...
@@ -83,18 +83,18 @@ static void test_NewWorkItem(void)
hres
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
GUID_BAD
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hres
==
CLASS_E_CLASSNOTAVAILABLE
,
"Expected CLASS_E_CLASSNOTAVAILABLE: %08x
\n
"
,
hres
);
"Expected CLASS_E_CLASSNOTAVAILABLE: %08
l
x
\n
"
,
hres
);
/* Task creation attempt using invalid interface ID */
hres
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
GUID_BAD
,
(
IUnknown
**
)
&
task
);
ok
(
hres
==
E_NOINTERFACE
,
"Expected E_NOINTERFACE: %08x
\n
"
,
hres
);
ok
(
hres
==
E_NOINTERFACE
,
"Expected E_NOINTERFACE: %08
l
x
\n
"
,
hres
);
/* Task creation attempt using invalid work item class and interface ID */
hres
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
GUID_BAD
,
&
GUID_BAD
,
(
IUnknown
**
)
&
task
);
ok
(
hres
==
CLASS_E_CLASSNOTAVAILABLE
,
"Expected CLASS_E_CLASSNOTAVAILABLE: %08x
\n
"
,
hres
);
"Expected CLASS_E_CLASSNOTAVAILABLE: %08
l
x
\n
"
,
hres
);
ITaskScheduler_Release
(
test_task_scheduler
);
return
;
...
...
@@ -110,7 +110,7 @@ static void test_Activate(void)
/* Create TaskScheduler */
hres
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
test_task_scheduler
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08
l
x
\n
"
,
hres
);
if
(
hres
!=
S_OK
)
{
skip
(
"Failed to create task scheduler. Skipping tests.
\n
"
);
...
...
@@ -120,7 +120,7 @@ static void test_Activate(void)
/* Attempt to activate a nonexistent task */
hres
=
ITaskScheduler_Activate
(
test_task_scheduler
,
not_task_name
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hres
==
COR_E_FILENOTFOUND
,
"Expected COR_E_FILENOTFOUND: %08x
\n
"
,
hres
);
ok
(
hres
==
COR_E_FILENOTFOUND
,
"Expected COR_E_FILENOTFOUND: %08
l
x
\n
"
,
hres
);
ITaskScheduler_Release
(
test_task_scheduler
);
return
;
...
...
@@ -134,7 +134,7 @@ static void test_GetTargetComputer(void)
/* Create TaskScheduler */
hres
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
test_task_scheduler
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08
l
x
\n
"
,
hres
);
if
(
hres
!=
S_OK
)
{
skip
(
"Failed to create task scheduler.
\n
"
);
...
...
@@ -145,12 +145,12 @@ static void test_GetTargetComputer(void)
{
/* This crashes on w2k */
hres
=
ITaskScheduler_GetTargetComputer
(
test_task_scheduler
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"got 0x%x (expected E_INVALIDARG)
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"got 0x%
l
x (expected E_INVALIDARG)
\n
"
,
hres
);
}
hres
=
ITaskScheduler_GetTargetComputer
(
test_task_scheduler
,
&
oldname
);
ok
((
hres
==
S_OK
)
&&
oldname
&&
oldname
[
0
]
==
'\\'
&&
oldname
[
1
]
==
'\\'
&&
oldname
[
2
],
"got 0x%x and %s (expected S_OK and an unc name)
\n
"
,
hres
,
wine_dbgstr_w
(
oldname
));
"got 0x%
l
x and %s (expected S_OK and an unc name)
\n
"
,
hres
,
wine_dbgstr_w
(
oldname
));
CoTaskMemFree
(
oldname
);
...
...
@@ -175,7 +175,7 @@ static void test_SetTargetComputer(void)
/* Create TaskScheduler */
hres
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
test_task_scheduler
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"CTaskScheduler CoCreateInstance failed: %08
l
x
\n
"
,
hres
);
if
(
hres
!=
S_OK
)
{
skip
(
"Failed to create task scheduler. Skipping tests.
\n
"
);
...
...
@@ -183,24 +183,24 @@ static void test_SetTargetComputer(void)
}
hres
=
ITaskScheduler_GetTargetComputer
(
test_task_scheduler
,
&
oldname
);
ok
(
hres
==
S_OK
,
"got 0x%x and %s (expected S_OK)
\n
"
,
hres
,
wine_dbgstr_w
(
oldname
));
ok
(
hres
==
S_OK
,
"got 0x%
l
x and %s (expected S_OK)
\n
"
,
hres
,
wine_dbgstr_w
(
oldname
));
/* NULL is an alias for the local computer */
hres
=
ITaskScheduler_SetTargetComputer
(
test_task_scheduler
,
NULL
);
ok
(
hres
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got 0x%
l
x (expected S_OK)
\n
"
,
hres
);
hres
=
ITaskScheduler_GetTargetComputer
(
test_task_scheduler
,
&
name
);
ok
((
hres
==
S_OK
&&
!
lstrcmpiW
(
name
,
buffer
)),
"got 0x%x with %s (expected S_OK and %s)
\n
"
,
"got 0x%
l
x with %s (expected S_OK and %s)
\n
"
,
hres
,
wine_dbgstr_w
(
name
),
wine_dbgstr_w
(
buffer
));
CoTaskMemFree
(
name
);
/* The name must be valid */
hres
=
ITaskScheduler_SetTargetComputer
(
test_task_scheduler
,
does_not_existW
);
ok
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_BAD_NETPATH
),
"got 0x%x (expected 0x80070035)
\n
"
,
hres
);
ok
(
hres
==
HRESULT_FROM_WIN32
(
ERROR_BAD_NETPATH
),
"got 0x%
l
x (expected 0x80070035)
\n
"
,
hres
);
/* the name of the target computer is unchanged */
hres
=
ITaskScheduler_GetTargetComputer
(
test_task_scheduler
,
&
name
);
ok
((
hres
==
S_OK
&&
!
lstrcmpiW
(
name
,
buffer
)),
"got 0x%x with %s (expected S_OK and %s)
\n
"
,
"got 0x%
l
x with %s (expected S_OK and %s)
\n
"
,
hres
,
wine_dbgstr_w
(
name
),
wine_dbgstr_w
(
buffer
));
CoTaskMemFree
(
name
);
...
...
@@ -211,19 +211,19 @@ static void test_SetTargetComputer(void)
skip
(
"SetTargetComputer failed with E_ACCESSDENIED (needs admin rights)
\n
"
);
goto
done
;
}
ok
(
hres
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got 0x%
l
x (expected S_OK)
\n
"
,
hres
);
/* the case is ignored */
CharUpperW
(
buffer
);
hres
=
ITaskScheduler_SetTargetComputer
(
test_task_scheduler
,
buffer
);
ok
(
hres
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got 0x%
l
x (expected S_OK)
\n
"
,
hres
);
CharLowerW
(
buffer
);
hres
=
ITaskScheduler_SetTargetComputer
(
test_task_scheduler
,
buffer
);
ok
(
hres
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got 0x%
l
x (expected S_OK)
\n
"
,
hres
);
/* cleanup */
hres
=
ITaskScheduler_SetTargetComputer
(
test_task_scheduler
,
oldname
);
ok
(
hres
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got 0x%
l
x (expected S_OK)
\n
"
,
hres
);
done:
CoTaskMemFree
(
oldname
);
...
...
@@ -243,37 +243,37 @@ static void test_Enum(void)
hr
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
scheduler
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
/* cleanup after previous runs */
taskscheduler_delete
(
scheduler
,
Task1
);
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
Task1
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITaskScheduler_AddWorkItem
(
scheduler
,
Task1
,
(
IScheduledWorkItem
*
)
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITask_Release
(
task
);
hr
=
ITaskScheduler_Enum
(
scheduler
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITaskScheduler_Enum
(
scheduler
,
&
tasks
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
names
=
(
void
*
)
0xdeadbeef
;
fetched
=
0xdeadbeef
;
hr
=
IEnumWorkItems_Next
(
tasks
,
0
,
&
names
,
&
fetched
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
ok
(
names
==
(
void
*
)
0xdeadbeef
,
"got %p
\n
"
,
names
);
ok
(
fetched
==
0xdeadbeef
,
"got %#x
\n
"
,
fetched
);
ok
(
fetched
==
0xdeadbeef
,
"got %#
l
x
\n
"
,
fetched
);
hr
=
IEnumWorkItems_Next
(
tasks
,
1
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
names
=
NULL
;
hr
=
IEnumWorkItems_Next
(
tasks
,
1
,
&
names
,
NULL
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
names
!=
NULL
,
"got NULL
\n
"
);
ok
(
names
[
0
]
!=
NULL
,
"got NULL
\n
"
);
CoTaskMemFree
(
names
[
0
]);
...
...
@@ -281,19 +281,19 @@ static void test_Enum(void)
names
=
(
void
*
)
0xdeadbeef
;
hr
=
IEnumWorkItems_Next
(
tasks
,
2
,
&
names
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hr
);
ok
(
names
==
(
void
*
)
0xdeadbeef
,
"got %p
\n
"
,
names
);
hr
=
IEnumWorkItems_Reset
(
tasks
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
names
=
NULL
;
fetched
=
0xdeadbeef
;
hr
=
IEnumWorkItems_Next
(
tasks
,
1
,
&
names
,
&
fetched
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
names
!=
NULL
,
"got NULL
\n
"
);
ok
(
names
[
0
]
!=
NULL
,
"got NULL
\n
"
);
ok
(
fetched
==
1
,
"got %u
\n
"
,
fetched
);
ok
(
fetched
==
1
,
"got %
l
u
\n
"
,
fetched
);
CoTaskMemFree
(
names
[
0
]);
CoTaskMemFree
(
names
);
...
...
@@ -301,19 +301,19 @@ static void test_Enum(void)
/* do nothing*/
;
hr
=
IEnumWorkItems_Skip
(
tasks
,
1
);
ok
(
hr
==
S_FALSE
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_FALSE
,
"got %#
l
x
\n
"
,
hr
);
names
=
(
void
*
)
0xdeadbeef
;
fetched
=
0xdeadbeef
;
hr
=
IEnumWorkItems_Next
(
tasks
,
1
,
&
names
,
&
fetched
);
ok
(
hr
==
S_FALSE
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_FALSE
,
"got %#
l
x
\n
"
,
hr
);
ok
(
names
==
NULL
,
"got %p
\n
"
,
names
);
ok
(
fetched
==
0
,
"got %u
\n
"
,
fetched
);
ok
(
fetched
==
0
,
"got %
l
u
\n
"
,
fetched
);
IEnumWorkItems_Release
(
tasks
);
hr
=
taskscheduler_delete
(
scheduler
,
Task1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITaskScheduler_Release
(
scheduler
);
}
...
...
@@ -330,31 +330,31 @@ static void test_save_task_curfile(ITask *task)
WCHAR
*
curfile
;
hr
=
ITask_QueryInterface
(
task
,
&
IID_IPersistFile
,
(
void
**
)
&
pfile
);
ok
(
hr
==
S_OK
,
"QueryInterface error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"QueryInterface error %#
l
x
\n
"
,
hr
);
curfile
=
NULL
;
hr
=
IPersistFile_GetCurFile
(
pfile
,
&
curfile
);
ok
(
hr
==
S_OK
,
"GetCurFile error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"GetCurFile error %#
l
x
\n
"
,
hr
);
ok
(
curfile
&&
curfile
[
0
],
"curfile should not be NULL
\n
"
);
ok
(
file_exists
(
curfile
),
"curfile should exist
\n
"
);
hr
=
IPersistFile_Save
(
pfile
,
curfile
,
FALSE
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#
l
x
\n
"
,
hr
);
hr
=
IPersistFile_Save
(
pfile
,
curfile
,
TRUE
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#
l
x
\n
"
,
hr
);
hr
=
IPersistFile_Save
(
pfile
,
NULL
,
FALSE
);
ok
(
hr
==
S_OK
,
"Save error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Save error %#
l
x
\n
"
,
hr
);
hr
=
IPersistFile_Save
(
pfile
,
NULL
,
TRUE
);
ok
(
hr
==
S_OK
,
"Save error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Save error %#
l
x
\n
"
,
hr
);
CoTaskMemFree
(
curfile
);
curfile
=
NULL
;
hr
=
IPersistFile_GetCurFile
(
pfile
,
&
curfile
);
ok
(
hr
==
S_OK
,
"GetCurFile error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"GetCurFile error %#
l
x
\n
"
,
hr
);
ok
(
curfile
&&
curfile
[
0
]
,
"curfile should not be NULL
\n
"
);
CoTaskMemFree
(
curfile
);
...
...
@@ -369,27 +369,27 @@ static WCHAR *get_task_curfile(ITask *task, BOOL should_exist, BOOL is_dirty, in
CLSID
clsid
;
hr
=
ITask_QueryInterface
(
task
,
&
IID_IPersistFile
,
(
void
**
)
&
pfile
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"QueryInterface error %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"QueryInterface error %#
l
x
\n
"
,
hr
);
hr
=
IPersistFile_IsDirty
(
pfile
);
ok_
(
__FILE__
,
line
)(
hr
==
is_dirty
?
S_OK
:
S_FALSE
,
"got %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
is_dirty
?
S_OK
:
S_FALSE
,
"got %#
l
x
\n
"
,
hr
);
curfile
=
NULL
;
hr
=
IPersistFile_GetCurFile
(
pfile
,
&
curfile
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"GetCurFile error %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"GetCurFile error %#
l
x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
curfile
&&
curfile
[
0
]
,
"curfile should not be NULL
\n
"
);
hr
=
IPersistFile_Load
(
pfile
,
curfile
,
STGM_READ
);
if
(
should_exist
)
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"Load error %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"Load error %#
l
x
\n
"
,
hr
);
else
ok_
(
__FILE__
,
line
)(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#
l
x
\n
"
,
hr
);
if
(
0
)
/* crashes under Windows */
hr
=
IPersistFile_GetClassID
(
pfile
,
NULL
);
hr
=
IPersistFile_GetClassID
(
pfile
,
&
clsid
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"GetClassID error %#x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"GetClassID error %#
l
x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
IsEqualCLSID
(
&
clsid
,
&
CLSID_CTask
),
"got %s
\n
"
,
wine_dbgstr_guid
(
&
clsid
));
IPersistFile_Release
(
pfile
);
...
...
@@ -427,28 +427,28 @@ static void test_task_storage(void)
hr
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
scheduler
);
if
(
hr
!=
S_OK
)
{
win_skip
(
"CoCreateInstance(CLSID_CTaskScheduler) error %#x
\n
"
,
hr
);
win_skip
(
"CoCreateInstance(CLSID_CTaskScheduler) error %#
l
x
\n
"
,
hr
);
return
;
}
hr
=
ITaskScheduler_Delete
(
scheduler
,
Task1_ext
);
ok
(
hr
==
E_INVALIDARG
,
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"wrong error %#
l
x
\n
"
,
hr
);
hr
=
ITaskScheduler_Delete
(
scheduler
,
Task1
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#
l
x
\n
"
,
hr
);
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
Task1_ext
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
E_INVALIDARG
,
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"wrong error %#
l
x
\n
"
,
hr
);
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
Task1
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"NewWorkItem error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"NewWorkItem error %#
l
x
\n
"
,
hr
);
curfile
=
get_task_curfile
(
task
,
FALSE
,
FALSE
,
__LINE__
);
ok
(
!
file_exists
(
curfile
),
"curfile should not exist
\n
"
);
ok
(
!
lstrcmpW
(
curfile
,
task1_full_name
),
"name is wrong %s
\n
"
,
wine_dbgstr_w
(
curfile
));
hr
=
ITask_SetComment
(
task
,
Task1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
curfile2
=
get_task_curfile
(
task
,
FALSE
,
TRUE
,
__LINE__
);
ok
(
!
file_exists
(
curfile2
),
"curfile should not exist
\n
"
);
...
...
@@ -456,7 +456,7 @@ static void test_task_storage(void)
CoTaskMemFree
(
curfile2
);
hr
=
ITaskScheduler_NewWorkItem
(
scheduler
,
Task1
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task2
);
ok
(
hr
==
S_OK
,
"NewWorkItem error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"NewWorkItem error %#
l
x
\n
"
,
hr
);
ok
(
task2
!=
task
,
"tasks should not be equal
\n
"
);
curfile2
=
get_task_curfile
(
task2
,
FALSE
,
FALSE
,
__LINE__
);
...
...
@@ -469,32 +469,32 @@ static void test_task_storage(void)
task2
=
(
ITask
*
)
0xdeadbeef
;
hr
=
ITaskScheduler_Activate
(
scheduler
,
Task1
,
&
IID_ITask
,
(
IUnknown
**
)
&
task2
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_NOT_FOUND
),
"wrong error %#
l
x
\n
"
,
hr
);
ok
(
task2
==
(
ITask
*
)
0xdeadbeef
,
"task should not be set to NULL
\n
"
);
hr
=
ITaskScheduler_AddWorkItem
(
scheduler
,
Task2
,
(
IScheduledWorkItem
*
)
task
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#
l
x
\n
"
,
hr
);
curfile
=
get_task_curfile
(
task
,
TRUE
,
FALSE
,
__LINE__
);
ok
(
file_exists
(
curfile
),
"curfile should exist
\n
"
);
ok
(
!
lstrcmpW
(
curfile
,
task2_full_name
),
"name is wrong %s
\n
"
,
wine_dbgstr_w
(
curfile
));
CoTaskMemFree
(
curfile
);
hr
=
ITaskScheduler_AddWorkItem
(
scheduler
,
Task3
,
(
IScheduledWorkItem
*
)
task
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#
l
x
\n
"
,
hr
);
curfile
=
get_task_curfile
(
task
,
TRUE
,
FALSE
,
__LINE__
);
ok
(
file_exists
(
curfile
),
"curfile should exist
\n
"
);
ok
(
!
lstrcmpW
(
curfile
,
task3_full_name
),
"name is wrong %s
\n
"
,
wine_dbgstr_w
(
curfile
));
CoTaskMemFree
(
curfile
);
hr
=
ITaskScheduler_AddWorkItem
(
scheduler
,
Task1
,
(
IScheduledWorkItem
*
)
task
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"AddWorkItem error %#
l
x
\n
"
,
hr
);
curfile
=
get_task_curfile
(
task
,
TRUE
,
FALSE
,
__LINE__
);
ok
(
file_exists
(
curfile
),
"curfile should exist
\n
"
);
ok
(
!
lstrcmpW
(
curfile
,
task1_full_name
),
"name is wrong %s
\n
"
,
wine_dbgstr_w
(
curfile
));
CoTaskMemFree
(
curfile
);
hr
=
ITaskScheduler_AddWorkItem
(
scheduler
,
Task1
,
(
IScheduledWorkItem
*
)
task
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#x
\n
"
,
hr
);
ok
(
hr
==
HRESULT_FROM_WIN32
(
ERROR_FILE_EXISTS
),
"wrong error %#
l
x
\n
"
,
hr
);
curfile
=
get_task_curfile
(
task
,
TRUE
,
FALSE
,
__LINE__
);
ok
(
file_exists
(
curfile
),
"curfile should exist
\n
"
);
...
...
@@ -504,7 +504,7 @@ static void test_task_storage(void)
task
=
NULL
;
hr
=
ITaskScheduler_Activate
(
scheduler
,
Task1
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"Activate error %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Activate error %#
l
x
\n
"
,
hr
);
ok
(
task
!=
NULL
,
"task should not be set to NULL
\n
"
);
curfile
=
get_task_curfile
(
task
,
TRUE
,
FALSE
,
__LINE__
);
...
...
@@ -516,11 +516,11 @@ static void test_task_storage(void)
test_save_task_curfile
(
task
);
hr
=
taskscheduler_delete
(
scheduler
,
Task1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
taskscheduler_delete
(
scheduler
,
Task2
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
taskscheduler_delete
(
scheduler
,
Task3
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ITask_Release
(
task
);
ITaskScheduler_Release
(
scheduler
);
...
...
dlls/mstask/tests/task_trigger.c
View file @
c601c701
...
...
@@ -79,15 +79,15 @@ static BOOL compare_trigger_state(TASK_TRIGGER found_state,
found_state
.
wStartMinute
,
expected_state
.
wStartMinute
);
ok
(
found_state
.
MinutesDuration
==
expected_state
.
MinutesDuration
,
"MinutesDuration: Found %
d but expected %
d
\n
"
,
"MinutesDuration: Found %
ld but expected %l
d
\n
"
,
found_state
.
MinutesDuration
,
expected_state
.
MinutesDuration
);
ok
(
found_state
.
MinutesInterval
==
expected_state
.
MinutesInterval
,
"MinutesInterval: Found %
d but expected %
d
\n
"
,
"MinutesInterval: Found %
ld but expected %l
d
\n
"
,
found_state
.
MinutesInterval
,
expected_state
.
MinutesInterval
);
ok
(
found_state
.
rgFlags
==
expected_state
.
rgFlags
,
"rgFlags: Found %
d but expected %
d
\n
"
,
"rgFlags: Found %
ld but expected %l
d
\n
"
,
found_state
.
rgFlags
,
expected_state
.
rgFlags
);
ok
(
found_state
.
TriggerType
==
expected_state
.
TriggerType
,
...
...
@@ -138,16 +138,16 @@ static void test_SetTrigger_GetTrigger(void)
hres
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
test_task
);
ok
(
hres
==
S_OK
,
"got %#x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got %#
l
x
\n
"
,
hres
);
hres
=
ITask_CreateTrigger
(
test_task
,
&
idx
,
&
test_trigger
);
ok
(
hres
==
S_OK
,
"got %#x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"got %#
l
x
\n
"
,
hres
);
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"got %#x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hres
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"got %#x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"got %#
l
x
\n
"
,
hres
);
/* Setup a trigger with base values for this test run */
GetLocalTime
(
&
time
);
...
...
@@ -161,12 +161,12 @@ static void test_SetTrigger_GetTrigger(void)
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
compare_trigger_state
(
trigger_state
,
empty_trigger_state
);
/* Test setting basic empty trigger */
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
empty_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
...
...
@@ -175,7 +175,7 @@ static void test_SetTrigger_GetTrigger(void)
/* Test setting basic non-empty trigger */
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
...
...
@@ -190,21 +190,21 @@ static void test_SetTrigger_GetTrigger(void)
/* Test setting trigger with invalid cbTriggerSize */
normal_trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
)
-
1
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
)
+
1
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
/* Test setting trigger with invalid Reserved fields */
normal_trigger_state
.
Reserved1
=
80
;
normal_trigger_state
.
Reserved2
=
80
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08
l
x
\n
"
,
hres
);
ok
(
trigger_state
.
Reserved1
==
0
&&
trigger_state
.
Reserved2
==
0
,
"Reserved fields should be set to zero
\n
"
);
normal_trigger_state
.
Reserved1
=
0
;
...
...
@@ -213,23 +213,23 @@ static void test_SetTrigger_GetTrigger(void)
/* Test setting trigger with invalid month */
normal_trigger_state
.
wBeginMonth
=
0
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wBeginMonth
=
13
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wBeginMonth
=
1
;
/* Test setting trigger with invalid begin date */
normal_trigger_state
.
wBeginDay
=
0
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wBeginDay
=
32
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wBeginMonth
=
2
;
normal_trigger_state
.
wBeginDay
=
30
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wBeginMonth
=
1
;
normal_trigger_state
.
wBeginDay
=
1
;
...
...
@@ -238,11 +238,11 @@ static void test_SetTrigger_GetTrigger(void)
normal_trigger_state
.
wEndMonth
=
200
;
normal_trigger_state
.
wEndDay
=
200
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08
l
x
\n
"
,
hres
);
ok
(
trigger_state
.
wEndYear
==
0
,
"End year should be 0: %d
\n
"
,
trigger_state
.
wEndYear
);
ok
(
trigger_state
.
wEndMonth
==
200
,
"End month should be 200: %d
\n
"
,
...
...
@@ -252,7 +252,7 @@ static void test_SetTrigger_GetTrigger(void)
normal_trigger_state
.
rgFlags
=
TASK_TRIGGER_FLAG_DISABLED
|
TASK_TRIGGER_FLAG_HAS_END_DATE
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
rgFlags
=
TASK_TRIGGER_FLAG_DISABLED
;
normal_trigger_state
.
wEndYear
=
2980
;
normal_trigger_state
.
wEndMonth
=
1
;
...
...
@@ -261,40 +261,40 @@ static void test_SetTrigger_GetTrigger(void)
/* Test setting trigger with invalid hour or minute*/
normal_trigger_state
.
wStartHour
=
24
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wStartHour
=
60
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
wStartHour
=
3
;
/* Test setting trigger with invalid duration / interval pairs */
normal_trigger_state
.
MinutesDuration
=
5
;
normal_trigger_state
.
MinutesInterval
=
5
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
MinutesDuration
=
5
;
normal_trigger_state
.
MinutesInterval
=
6
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
MinutesDuration
=
0
;
normal_trigger_state
.
MinutesInterval
=
6
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
E_INVALIDARG
,
"Expected E_INVALIDARG: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
MinutesDuration
=
5
;
normal_trigger_state
.
MinutesInterval
=
0
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
MinutesDuration
=
0
;
normal_trigger_state
.
MinutesInterval
=
0
;
/* Test setting trigger with end date before start date */
normal_trigger_state
.
wEndYear
=
1979
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
rgFlags
=
TASK_TRIGGER_FLAG_DISABLED
|
TASK_TRIGGER_FLAG_HAS_END_DATE
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
normal_trigger_state
.
rgFlags
=
TASK_TRIGGER_FLAG_DISABLED
;
normal_trigger_state
.
wEndYear
=
2980
;
normal_trigger_state
.
wEndMonth
=
1
;
...
...
@@ -306,11 +306,11 @@ static void test_SetTrigger_GetTrigger(void)
normal_trigger_state
.
Type
.
Weekly
.
WeeksInterval
=
2
;
normal_trigger_state
.
Type
.
Weekly
.
rgfDaysOfTheWeek
=
(
TASK_MONDAY
|
TASK_TUESDAY
);
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08
l
x
\n
"
,
hres
);
ok
(
trigger_state
.
Type
.
Weekly
.
WeeksInterval
==
0xcfcf
,
"Expected WeeksInterval set remain untouched: %d
\n
"
,
trigger_state
.
Type
.
Weekly
.
WeeksInterval
);
...
...
@@ -320,16 +320,16 @@ static void test_SetTrigger_GetTrigger(void)
normal_trigger_state
.
TriggerType
=
TASK_TIME_TRIGGER_DAILY
;
normal_trigger_state
.
Type
.
Daily
.
DaysInterval
=
1
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08
l
x
\n
"
,
hres
);
/* Test setting trigger with set wRandomMinutesInterval */
normal_trigger_state
.
wRandomMinutesInterval
=
5
;
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
);
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Expected S_OK: 0x%08
l
x
\n
"
,
hres
);
ok
(
trigger_state
.
wRandomMinutesInterval
==
0
,
"wRandomMinutesInterval should be set to zero
\n
"
);
normal_trigger_state
.
wRandomMinutesInterval
=
0
;
...
...
@@ -337,7 +337,7 @@ static void test_SetTrigger_GetTrigger(void)
/* Test GetTrigger using invalid cbTriggerSiz in pTrigger. In
* contrast to available documentation, this succeeds in practice. */
hres
=
ITaskTrigger_SetTrigger
(
test_trigger
,
&
normal_trigger_state
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08x
\n
"
,
hres
);
ok
(
hres
==
S_OK
,
"Failed to set trigger: 0x%08
l
x
\n
"
,
hres
);
memset
(
&
trigger_state
,
0xcf
,
sizeof
(
trigger_state
));
trigger_state
.
cbTriggerSize
=
sizeof
(
trigger_state
)
-
1
;
hres
=
ITaskTrigger_GetTrigger
(
test_trigger
,
&
trigger_state
);
...
...
@@ -366,60 +366,60 @@ static void test_task_trigger(void)
hr
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
0
,
"got %u
\n
"
,
count
);
hr
=
ITask_DeleteTrigger
(
task
,
0
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetTrigger
(
task
,
0
,
&
trigger
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#
l
x
\n
"
,
hr
);
idx
=
0xdead
;
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
idx
==
0
,
"got %u
\n
"
,
idx
);
hr
=
ITask_GetTrigger
(
task
,
0
,
&
trigger2
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
trigger
!=
trigger2
,
"%p != %p
\n
"
,
trigger
,
trigger2
);
ref
=
ITaskTrigger_Release
(
trigger2
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ref
=
ITaskTrigger_Release
(
trigger
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
1
,
"got %u
\n
"
,
count
);
hr
=
ITask_DeleteTrigger
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
idx
=
0xdead
;
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
idx
==
0
,
"got %u
\n
"
,
idx
);
hr
=
ITask_DeleteTrigger
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
0
,
"got %u
\n
"
,
count
);
ref
=
ITaskTrigger_Release
(
trigger
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ref
=
ITask_Release
(
task
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
}
static
void
time_add_ms
(
SYSTEMTIME
*
st
,
DWORD
ms
)
...
...
@@ -435,11 +435,11 @@ static void time_add_ms(SYSTEMTIME *st, DWORD ms)
st
->
wDay
,
st
->
wMonth
,
st
->
wYear
,
st
->
wDayOfWeek
,
st
->
wHour
,
st
->
wMinute
,
st
->
wSecond
,
st
->
wMilliseconds
);
ret
=
SystemTimeToFileTime
(
st
,
&
ftll
.
ft
);
ok
(
ret
,
"SystemTimeToFileTime error %u
\n
"
,
GetLastError
());
ok
(
ret
,
"SystemTimeToFileTime error %
l
u
\n
"
,
GetLastError
());
ftll
.
ll
+=
ms
*
(
ULONGLONG
)
10000
;
ret
=
FileTimeToSystemTime
(
&
ftll
.
ft
,
st
);
ok
(
ret
,
"FileTimeToSystemTime error %u
\n
"
,
GetLastError
());
ok
(
ret
,
"FileTimeToSystemTime error %
l
u
\n
"
,
GetLastError
());
trace
(
"new: %u/%u/%u wday %u %u:%02u:%02u.%03u
\n
"
,
st
->
wDay
,
st
->
wMonth
,
st
->
wYear
,
st
->
wDayOfWeek
,
st
->
wHour
,
st
->
wMinute
,
st
->
wSecond
,
st
->
wMilliseconds
);
...
...
@@ -482,37 +482,37 @@ static void test_GetNextRunTime(void)
hr
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
if
(
0
)
/* crashes under Windows */
hr
=
ITask_GetNextRunTime
(
task
,
NULL
);
hr
=
ITask_SetFlags
(
task
,
TASK_FLAG_DISABLED
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
SCHED_S_TASK_DISABLED
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_S_TASK_DISABLED
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
st_empty
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
hr
=
ITask_SetFlags
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
SCHED_S_TASK_NO_VALID_TRIGGERS
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_S_TASK_NO_VALID_TRIGGERS
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
st_empty
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
SCHED_S_TASK_NO_VALID_TRIGGERS
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_S_TASK_NO_VALID_TRIGGERS
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
st_empty
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -520,17 +520,17 @@ static void test_GetNextRunTime(void)
/* TASK_TIME_TRIGGER_ONCE */
hr
=
ITaskTrigger_GetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
data
.
rgFlags
&=
~
TASK_TRIGGER_FLAG_DISABLED
;
data
.
TriggerType
=
TASK_TIME_TRIGGER_ONCE
;
/* add 5 minutes to avoid races */
trigger_add_ms
(
&
data
,
5
*
60
*
1000
,
&
cmp
);
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
cmp
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -538,16 +538,16 @@ static void test_GetNextRunTime(void)
/* TASK_TIME_TRIGGER_DAILY */
hr
=
ITaskTrigger_GetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
data
.
rgFlags
&=
~
TASK_TRIGGER_FLAG_DISABLED
;
data
.
TriggerType
=
TASK_TIME_TRIGGER_DAILY
;
data
.
Type
.
Daily
.
DaysInterval
=
1
;
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
cmp
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -555,7 +555,7 @@ static void test_GetNextRunTime(void)
/* TASK_TIME_TRIGGER_WEEKLY */
hr
=
ITaskTrigger_GetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
data
.
rgFlags
&=
~
TASK_TRIGGER_FLAG_DISABLED
;
data
.
TriggerType
=
TASK_TIME_TRIGGER_WEEKLY
;
data
.
Type
.
Weekly
.
WeeksInterval
=
1
;
...
...
@@ -564,11 +564,11 @@ static void test_GetNextRunTime(void)
/* bits: TASK_SUNDAY = 1, TASK_MONDAY = 2, TASK_TUESDAY = 4, etc. */
data
.
Type
.
Weekly
.
rgfDaysOfTheWeek
=
1
<<
cmp
.
wDayOfWeek
;
/* wDayOfWeek is 0 based */
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
cmp
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -581,7 +581,7 @@ static void test_GetNextRunTime(void)
idx
=
0xdead
;
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
idx
==
1
,
"got %u
\n
"
,
idx
);
/* TASK_EVENT_TRIGGER_ON_IDLE = 5
...
...
@@ -591,15 +591,15 @@ static void test_GetNextRunTime(void)
for
(
i
=
5
;
i
<=
7
;
i
++
)
{
hr
=
ITaskTrigger_GetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
data
.
rgFlags
&=
~
TASK_TRIGGER_FLAG_DISABLED
;
data
.
TriggerType
=
i
;
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
cmp
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -608,23 +608,23 @@ static void test_GetNextRunTime(void)
ITaskTrigger_Release
(
trigger
);
hr
=
ITask_DeleteTrigger
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetTrigger
(
task
,
0
,
&
trigger
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
for
(
i
=
5
;
i
<=
7
;
i
++
)
{
hr
=
ITaskTrigger_GetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
data
.
rgFlags
&=
~
TASK_TRIGGER_FLAG_DISABLED
;
data
.
TriggerType
=
i
;
hr
=
ITaskTrigger_SetTrigger
(
trigger
,
&
data
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
memset
(
&
st
,
0xff
,
sizeof
(
st
));
hr
=
ITask_GetNextRunTime
(
task
,
&
st
);
ok
(
hr
==
SCHED_S_EVENT_TRIGGER
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_S_EVENT_TRIGGER
,
"got %#
l
x
\n
"
,
hr
);
ok
(
!
memcmp
(
&
st
,
&
st_empty
,
sizeof
(
st
)),
"got %u/%u/%u wday %u %u:%02u:%02u
\n
"
,
st
.
wDay
,
st
.
wMonth
,
st
.
wYear
,
st
.
wDayOfWeek
,
st
.
wHour
,
st
.
wMinute
,
st
.
wSecond
);
...
...
@@ -661,111 +661,111 @@ static void test_trigger_manager(void)
hr
=
ITaskScheduler_NewWorkItem
(
test_task_scheduler
,
task_name
,
&
CLSID_CTask
,
&
IID_ITask
,
(
IUnknown
**
)
&
task
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
obj_refcount
(
task
)
==
1
,
"got %u
\n
"
,
obj_refcount
(
task
));
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
obj_refcount
(
task
)
==
1
,
"got %
l
u
\n
"
,
obj_refcount
(
task
));
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
0
,
"got %u
\n
"
,
count
);
idx
=
0xdead
;
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
idx
==
0
,
"got %u
\n
"
,
idx
);
ok
(
obj_refcount
(
task
)
==
2
,
"got %u
\n
"
,
obj_refcount
(
task
));
ok
(
obj_refcount
(
task
)
==
2
,
"got %
l
u
\n
"
,
obj_refcount
(
task
));
idx
=
0xdead
;
hr
=
ITask_CreateTrigger
(
task
,
&
idx
,
&
trigger1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
idx
==
1
,
"got %u
\n
"
,
idx
);
ok
(
obj_refcount
(
task
)
==
3
,
"got %u
\n
"
,
obj_refcount
(
task
));
ok
(
obj_refcount
(
task
)
==
3
,
"got %
l
u
\n
"
,
obj_refcount
(
task
));
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
2
,
"got %u
\n
"
,
count
);
hr
=
ITaskTrigger_GetTrigger
(
trigger0
,
&
state0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
state0
.
wBeginYear
=
3000
;
state0
.
rgFlags
=
0
;
state0
.
TriggerType
=
TASK_TIME_TRIGGER_ONCE
;
hr
=
ITaskTrigger_SetTrigger
(
trigger0
,
&
state0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
get_task_trigger
(
task
,
0
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
state
.
wBeginYear
==
3000
,
"got %u
\n
"
,
state
.
wBeginYear
);
ok
(
state
.
TriggerType
==
TASK_TIME_TRIGGER_ONCE
,
"got %u
\n
"
,
state
.
TriggerType
);
hr
=
ITaskTrigger_GetTrigger
(
trigger1
,
&
state1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
state1
.
wBeginYear
=
2000
;
state1
.
rgFlags
=
0
;
state1
.
TriggerType
=
TASK_TIME_TRIGGER_DAILY
;
hr
=
ITaskTrigger_SetTrigger
(
trigger1
,
&
state1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
get_task_trigger
(
task
,
1
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
state
.
wBeginYear
==
2000
,
"got %u
\n
"
,
state
.
wBeginYear
);
ok
(
state
.
TriggerType
==
TASK_TIME_TRIGGER_DAILY
,
"got %u
\n
"
,
state
.
TriggerType
);
ref
=
ITaskTrigger_Release
(
trigger0
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ref
=
ITaskTrigger_Release
(
trigger1
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ok
(
obj_refcount
(
task
)
==
1
,
"got %u
\n
"
,
obj_refcount
(
task
));
ok
(
obj_refcount
(
task
)
==
1
,
"got %
l
u
\n
"
,
obj_refcount
(
task
));
hr
=
get_task_trigger
(
task
,
0
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
state
.
wBeginYear
==
3000
,
"got %u
\n
"
,
state
.
wBeginYear
);
ok
(
state
.
TriggerType
==
TASK_TIME_TRIGGER_ONCE
,
"got %u
\n
"
,
state
.
TriggerType
);
hr
=
get_task_trigger
(
task
,
1
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
state
.
wBeginYear
==
2000
,
"got %u
\n
"
,
state
.
wBeginYear
);
ok
(
state
.
TriggerType
==
TASK_TIME_TRIGGER_DAILY
,
"got %u
\n
"
,
state
.
TriggerType
);
hr
=
ITask_GetTrigger
(
task
,
0
,
&
trigger0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_GetTrigger
(
task
,
1
,
&
trigger1
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITask_DeleteTrigger
(
task
,
0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
get_task_trigger
(
task
,
0
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
state
.
wBeginYear
==
2000
,
"got %u
\n
"
,
state
.
wBeginYear
);
ok
(
state
.
TriggerType
==
TASK_TIME_TRIGGER_DAILY
,
"got %u
\n
"
,
state
.
TriggerType
);
hr
=
get_task_trigger
(
task
,
1
,
&
state
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
SCHED_E_TRIGGER_NOT_FOUND
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITaskTrigger_SetTrigger
(
trigger0
,
&
state0
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
hr
=
ITaskTrigger_SetTrigger
(
trigger1
,
&
state1
);
ok
(
hr
==
E_FAIL
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
E_FAIL
,
"got %#
l
x
\n
"
,
hr
);
count
=
0xdead
;
hr
=
ITask_GetTriggerCount
(
task
,
&
count
);
ok
(
hr
==
S_OK
,
"got %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got %#
l
x
\n
"
,
hr
);
ok
(
count
==
1
,
"got %u
\n
"
,
count
);
ok
(
obj_refcount
(
task
)
==
3
,
"got %u
\n
"
,
obj_refcount
(
task
));
ok
(
obj_refcount
(
task
)
==
3
,
"got %
l
u
\n
"
,
obj_refcount
(
task
));
ref
=
ITaskTrigger_Release
(
trigger0
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ref
=
ITaskTrigger_Release
(
trigger1
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
ref
=
ITask_Release
(
task
);
ok
(
ref
==
0
,
"got %u
\n
"
,
ref
);
ok
(
ref
==
0
,
"got %
l
u
\n
"
,
ref
);
}
START_TEST
(
task_trigger
)
...
...
@@ -776,7 +776,7 @@ START_TEST(task_trigger)
hr
=
CoCreateInstance
(
&
CLSID_CTaskScheduler
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_ITaskScheduler
,
(
void
**
)
&
test_task_scheduler
);
ok
(
hr
==
S_OK
,
"error creating TaskScheduler instance %#x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"error creating TaskScheduler instance %#
l
x
\n
"
,
hr
);
test_SetTrigger_GetTrigger
();
test_task_trigger
();
...
...
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