Rémi Bernon (@rbernon) commented about dlls/dmime/tests/dmime.c:
+ ok(!note.punkUser, "got %p\n", note.punkUser); + ok(note.mtDuration == 1000, "got %ld\n", note.mtDuration); + ok(note.wMusicValue == 60, "got %d\n", note.wMusicValue); + ok(!note.wMeasure, "got %d\n", note.wMeasure); + ok(!note.nOffset, "got %d\n", note.nOffset); + ok(!note.bBeat, "got %d\n", note.bBeat); + ok(!note.bGrid, "got %d\n", note.bGrid); + ok(note.bVelocity == 127, "got %d\n", note.bVelocity); + todo_wine ok(!note.bFlags, "got %#x\n", note.bFlags); + ok(!note.bTimeRange, "got %d\n", note.bTimeRange); + ok(!note.bDurRange, "got %d\n", note.bDurRange); + ok(!note.bVelRange, "got %d\n", note.bVelRange); + ok(note.bPlayModeFlags == DMUS_PLAYMODE_FIXED, "got %#x\n", note.bPlayModeFlags); + ok(!note.bSubChordLevel, "got %d\n", note.bSubChordLevel); + ok(note.bMidiValue == 60, "got %d\n", note.bMidiValue); + ok(!note.cTranspose, "got %d\n", note.cTranspose); You could use `check_dmus_note_pmsg` here, with a few changes let it check bFlags and to note60 initializer. I think it'd make adding more checks easier. I'd only leave the exact time checks separately as that helper doesn't validate them very strictly.
In particular, you could check that `nOffset` has no effect on the new times, and that a very small `mtDuration` still returns `DMUS_S_REQUEUE` (and you should then notice that the -1 duration offset isn't always there). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4438#note_52847