From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/tests/dmime.c | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+)
diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index 344571d2801..2f2592da6fe 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -3933,6 +3933,7 @@ static void test_tempo_track_play(void) {.lTime = 4000, .dblTempo = 50}, }; IDirectMusicPerformance *performance; + MUSIC_TIME next_time; IDirectMusicSegment *segment; IDirectMusicGraph *graph; IDirectMusicTrack *track; @@ -4015,6 +4016,49 @@ static void test_tempo_track_play(void) ok(hr == S_OK, "got %#lx\n", hr); IDirectMusicTrack_Release(track);
+ hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 0, NULL, NULL); + ok(hr == E_POINTER, "got %#lx\n", hr); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 0, NULL, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + + memset(¶m, 0xcd, sizeof(param)); + next_time = 0xdeadbeef; + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 0, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 100, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == 100, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 80, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 100, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 200, "got next_time %lu\n", next_time); + ok(param.mtTime == 0, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 80, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 199, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 101, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == -99, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 80, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 200, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 100, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == -100, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 80, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 299, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 1, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == -199, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 80, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 300, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + todo_wine ok(next_time == 3700, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == -100, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 20, "got dblTempo %f\n", param.dblTempo); + hr = IDirectMusicSegment_GetParam(segment, &GUID_TempoParam, -1, DMUS_SEG_ALLTRACKS, 5000, &next_time, ¶m); + todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(next_time == 0, "got next_time %lu\n", next_time); + todo_wine ok(param.mtTime == -1000, "got mtTime %ld\n", param.mtTime); + todo_wine ok(param.dblTempo == 50, "got dblTempo %f\n", param.dblTempo); +
/* now play the segment, and check produced messages */