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
b2441ad6
Commit
b2441ad6
authored
Jan 22, 2024
by
Eric Pouech
Committed by
Alexandre Julliard
Jan 29, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dmime/tests: Add some tests for loops on wave tracks.
Signed-off-by:
Eric Pouech
<
epouech@codeweavers.com
>
parent
7aef55a9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
19 deletions
+70
-19
dmime.c
dlls/dmime/tests/dmime.c
+70
-19
No files found.
dlls/dmime/tests/dmime.c
View file @
b2441ad6
...
...
@@ -3542,7 +3542,7 @@ static void test_notification_pmsg(void)
IDirectMusicTool_Release
(
tool
);
}
static
void
test_wave_pmsg
(
void
)
static
void
test_wave_pmsg
(
unsigned
num_repeats
)
{
static
const
DWORD
message_types
[]
=
{
...
...
@@ -3550,17 +3550,25 @@ static void test_wave_pmsg(void)
DMUS_PMSGT_WAVE
,
};
IDirectMusicPerformance
*
performance
;
IDirectMusicSegmentState
*
state
;
IDirectMusicSegment
*
segment
;
IDirectMusicLoader8
*
loader
;
IDirectMusicGraph
*
graph
;
WCHAR
test_wav
[
MAX_PATH
];
IDirectMusicTool
*
tool
;
DMUS_WAVE_PMSG
*
wave
;
DWORD
mt_start_ref
;
MUSIC_TIME
length
;
DMUS_PMSG
*
msg
;
DWORD
value
;
HRESULT
hr
;
unsigned
i
;
DWORD
ret
;
if
(
num_repeats
)
winetest_push_context
(
"with %u repeats"
,
num_repeats
);
else
winetest_push_context
(
"without any repeats"
);
hr
=
test_tool_create
(
message_types
,
ARRAY_SIZE
(
message_types
),
&
tool
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
...
...
@@ -3599,6 +3607,12 @@ static void test_wave_pmsg(void)
ok
(
length
==
1
,
"got %lu
\n
"
,
length
);
if
(
num_repeats
)
{
hr
=
IDirectMusicSegment_SetRepeats
(
segment
,
num_repeats
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
}
/* without Download, no DMUS_PMSGT_WAVE is sent */
hr
=
IDirectMusicPerformance_PlaySegment
(
performance
,
segment
,
0
,
0
,
NULL
);
...
...
@@ -3611,10 +3625,14 @@ static void test_wave_pmsg(void)
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
ret
=
test_tool_wait_message
(
tool
,
500
,
&
msg
);
todo_wine_if
(
num_repeats
)
ok
(
!
ret
,
"got %#lx
\n
"
,
ret
);
ok
(
msg
->
dwType
==
DMUS_PMSGT_DIRTY
,
"got %p
\n
"
,
msg
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
msg
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
if
(
!
ret
)
{
ok
(
msg
->
dwType
==
DMUS_PMSGT_DIRTY
,
"got %p
\n
"
,
msg
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
msg
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
}
ret
=
test_tool_wait_message
(
tool
,
100
,
&
msg
);
ok
(
ret
==
WAIT_TIMEOUT
,
"got %#lx
\n
"
,
ret
);
...
...
@@ -3626,7 +3644,7 @@ static void test_wave_pmsg(void)
hr
=
IDirectMusicSegment8_Download
((
IDirectMusicSegment8
*
)
segment
,
(
IUnknown
*
)
performance
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
hr
=
IDirectMusicPerformance_PlaySegment
(
performance
,
segment
,
0
,
0
,
NULL
);
hr
=
IDirectMusicPerformance_PlaySegment
(
performance
,
segment
,
0
,
0
,
&
state
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
ret
=
test_tool_wait_message
(
tool
,
500
,
&
msg
);
...
...
@@ -3635,24 +3653,54 @@ static void test_wave_pmsg(void)
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
msg
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
ret
=
test_tool_wait_message
(
tool
,
500
,
(
DMUS_PMSG
**
)
&
wave
);
ok
(
!
ret
,
"got %#lx
\n
"
,
ret
);
ok
(
wave
->
dwType
==
DMUS_PMSGT_WAVE
,
"got %p
\n
"
,
wave
);
ok
(
!!
wave
->
punkUser
,
"got %p
\n
"
,
wave
->
punkUser
);
ok
(
wave
->
rtStartOffset
==
0
,
"got %I64d
\n
"
,
wave
->
rtStartOffset
);
ok
(
wave
->
rtDuration
==
1000000
,
"got %I64d
\n
"
,
wave
->
rtDuration
);
ok
(
wave
->
lOffset
==
0
,
"got %lu
\n
"
,
wave
->
lOffset
);
ok
(
wave
->
lVolume
==
0
,
"got %lu
\n
"
,
wave
->
lVolume
);
ok
(
wave
->
lPitch
==
0
,
"got %lu
\n
"
,
wave
->
lPitch
);
ok
(
wave
->
bFlags
==
0
,
"got %#x
\n
"
,
wave
->
bFlags
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
(
DMUS_PMSG
*
)
wave
);
hr
=
IDirectMusicPerformance_ReferenceToMusicTime
(
performance
,
1000000
,
&
length
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
/* assuming not modified tempo */
length
=
round
((
1000000
*
120
.
0
*
DMUS_PPQ
)
/
600000000
.
0
);
for
(
i
=
0
;
i
<=
num_repeats
;
i
++
)
{
ret
=
test_tool_wait_message
(
tool
,
500
,
(
DMUS_PMSG
**
)
&
wave
);
todo_wine_if
(
num_repeats
&&
ret
)
ok
(
!
ret
,
"got %#lx
\n
"
,
ret
);
if
(
ret
)
continue
;
ok
(
wave
->
dwType
==
DMUS_PMSGT_WAVE
,
"got %p
\n
"
,
wave
);
ok
(
wave
->
dwSize
==
sizeof
(
*
wave
),
"got %lu
\n
"
,
wave
->
dwSize
);
ok
(
!!
wave
->
punkUser
,
"got %p
\n
"
,
wave
->
punkUser
);
ok
((
wave
->
dwFlags
&
DMUS_PMSGF_REFTIME
)
&&
(
wave
->
dwFlags
&
DMUS_PMSGF_MUSICTIME
),
"got %lx
\n
"
,
wave
->
dwFlags
);
if
(
i
==
0
)
mt_start_ref
=
wave
->
mtTime
;
else
todo_wine
ok
(
wave
->
mtTime
==
mt_start_ref
+
length
*
i
,
"got %lu (%lu,%lu)
\n
"
,
wave
->
mtTime
,
mt_start_ref
,
i
*
length
);
ok
(
wave
->
rtStartOffset
==
0
,
"got %I64d
\n
"
,
wave
->
rtStartOffset
);
ok
(
wave
->
rtDuration
==
1000000
,
"got %I64d
\n
"
,
wave
->
rtDuration
);
ok
(
wave
->
lOffset
==
0
,
"got %lu
\n
"
,
wave
->
lOffset
);
ok
(
wave
->
lVolume
==
0
,
"got %lu
\n
"
,
wave
->
lVolume
);
ok
(
wave
->
lPitch
==
0
,
"got %lu
\n
"
,
wave
->
lPitch
);
ok
(
wave
->
bFlags
==
0
,
"got %#x
\n
"
,
wave
->
bFlags
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
(
DMUS_PMSG
*
)
wave
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
}
ret
=
test_tool_wait_message
(
tool
,
500
,
&
msg
);
todo_wine_if
(
num_repeats
)
ok
(
!
ret
,
"got %#lx
\n
"
,
ret
);
ok
(
msg
->
dwType
==
DMUS_PMSGT_DIRTY
,
"got %p
\n
"
,
msg
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
msg
);
if
(
!
ret
)
{
ok
(
msg
->
dwType
==
DMUS_PMSGT_DIRTY
,
"got %p
\n
"
,
msg
);
hr
=
IDirectMusicPerformance_FreePMsg
(
performance
,
msg
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
}
hr
=
IDirectMusicSegment_GetRepeats
(
segment
,
&
value
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
ok
(
value
==
num_repeats
,
"got %lu
\n
"
,
value
);
hr
=
IDirectMusicSegmentState_GetRepeats
(
state
,
&
value
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
ok
(
value
==
num_repeats
,
"got %lu
\n
"
,
value
);
hr
=
IDirectMusicSegment8_Unload
((
IDirectMusicSegment8
*
)
segment
,
(
IUnknown
*
)
performance
);
ok
(
hr
==
S_OK
,
"got %#lx
\n
"
,
hr
);
...
...
@@ -3670,6 +3718,8 @@ static void test_wave_pmsg(void)
IDirectMusicPerformance_Release
(
performance
);
IDirectMusicTool_Release
(
tool
);
winetest_pop_context
();
}
static
void
test_sequence_track
(
void
)
...
...
@@ -4664,7 +4714,8 @@ START_TEST(dmime)
test_performance_time
();
test_performance_pmsg
();
test_notification_pmsg
();
test_wave_pmsg
();
test_wave_pmsg
(
0
);
test_wave_pmsg
(
10
);
test_sequence_track
();
test_band_track_play
();
test_tempo_track_play
();
...
...
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