MDDK MOUTTST Test Case Descriptions
===================================

Case  1: midiOutGetNumDevs, valid call

    This test returns the number of MIDI output devices currently recognized
by the system. The user must verify that the number returned is correct for
the current system configuration and driver or drivers being tested. Verbose
logging mode is necessary for verification.

Case  2: midiOutGetDevCaps, valid calls, each device
Case  3: midiOutGetDevCaps, wSize = 0
Case  4: midiOutGetDevCaps, wSize = 1

    These tests get the device capabilities for all MIDI output devices present
in the system, and make the call with incorrect size parameter. Verbose logging
mode is necessary to inspect returned information for each device.

Case  5: midiOutOpen
Case  6: midiOutOpen, 2 handles to same device

    These tests open a handle to the current driver with each type of callback
method and when the device is already open. Verbose logging mode will show
parameters passed to and returned by midiOutOpen call.

Case  7: midiOutClose, valid call

    This test case makes a valid call to midiOutClose, and passes or fails by
the return value from MMSYSTEM.

Case  8: midiOutPrepareHeader, valid call
Case  9: midiOutPrepareHeader, twice
Case 10: midiOutPrepareHeader, >64K @ 0K
Case 11: midiOutPrepareHeader, >64K @ 10K
Case 12: midiOutPrepareHeader, >64K @ 70K

    These tests prepare data buffers for output. They are designed to test
headers pointing to buffers smaller than and larger than 64K. Buffers larger
than 64K are tested as chunks of larger locked down buffers. One test covers
trying to prepare a header that has already been prepared.

Case 13: midiOutUnprepareHeader, valid call
Case 14: midiOutUnprepareHeader, twice
Case 15: midiOutUnprepareHeader, not prepared
Case 16: midiOutUnprepareHeader, not marked done
Case 17: midiOutUnprepareHeader, >64K @ 0K
Case 18: midiOutUnprepareHeader, >64K @ 10K
Case 19: midiOutUnprepareHeader, >64K @ 70K

    These tests cover unpreparing headers under various conditions. Most are
analagous to the prepare header tests, with the exceptions of trying to
unprepare a header that hasn't been prepared and one not marked done.

Case 20: midiOutShortMsg, valid calls, down scale, ch. 1
Case 21: midiOutShortMsg, valid calls, up scale, ch. 1
Case 22: midiOutShortMsg, just for grins...
Case 23: midiOutShortMsg, up scale FAST on/off channel 1-8
Case 24: midiOutShortMsg, 8 notes on, then reset
Case 25: midiOutShortMsg, 8 notes on, then all notes off msg
Case 26: midiOutShortMsg, up the scale on\off channel 1 FAST
Case 27: midiOutShortMsg, random notes, random patch changes
Case 28: midiOutShortMsg, random notes, random times
Case 29: midiOutShortMsg, running status format 
Case 30: midiOutShortMsg, running status format - up scale
Case 31: midiOutShortMsg, note with pitchbend
Case 32: midiOutShortMsg, note with aftertouch

    These tests cover sending short messages of various types. Tests will
return pass or fail according to MMSYSTEM return values. User verification
of actual audio output is necessary, and results of each call depend on
hardware/software design and capability.

Case 33: midiOutShortMsg : Note Off
Case 34: midiOutShortMsg : Note On
Case 35: midiOutShortMsg : Polyphonic Key Pressure
Case 36: midiOutShortMsg : Control Change
Case 37: midiOutShortMsg : Program Change
Case 38: midiOutShortMsg : Channel Pressure
Case 39: midiOutShortMsg : Pitchbend
Case 40: midiOutShortMsg : MIDI Time Code Quarter Frame
Case 41: midiOutShortMsg : Song Position Pointer
Case 42: midiOutShortMsg : Song Select
Case 43: midiOutShortMsg : Undefined System Common 0xF4
Case 44: midiOutShortMsg : Undefined System Common 0xF5
Case 45: midiOutShortMsg : Tune Request
Case 46: midiOutShortMsg : Timing Clock
Case 47: midiOutShortMsg : Undefined System Real Time 0xF9
Case 48: midiOutShortMsg : Start
Case 49: midiOutShortMsg : Continue
Case 50: midiOutShortMsg : Stop
Case 51: midiOutShortMsg : Undefined System Real Time 0xFD
Case 52: midiOutShortMsg : Active Sensing
Case 53: midiOutShortMsg : System Reset
      
    These tests cover sending all possible values for each type of short
message. Tests will return pass or fail according to MMSYSTEM return values.

Case 54: midiOutLongMsg, buffer full of short messages
Case 55: midiOutLongMsg, buffer full of short messages, running status format
Case 56: midiOutLongMsg, unprepared header
Case 57: midiOutLongMsg, valid
Case 58: midiOutLongMsg, >64K @ 0K
Case 59: midiOutLongMsg, >64K @ 10K
Case 60: midiOutLongMsg, >64K @ 70K
Case 61: midiOutLongMsg, reuse same buffer twice
       
    These test cases cover sending long messages and are currently only
verified by MMSYSTEM return value.

Case 62: midiOutReset, valid call
Case 63: midiOutReset, twice
Case 64: midiOutReset, then midiOutShortMsg
Case 65: midiOutReset, then midiOutLongMsg
      
    These tests check on reset functionality, and actually will probably leave
notes on if they fail, depending on hardware/software implementation (devices
which do not sustain notes may not).

Case 66: midiOutGetVolume, valid

    This test checks correct handling of getting volume according to whether
the current device supports this or not through return values from MMSYSTEM.

Case 67: midiOutSetVolume, 0000 0000
Case 68: midiOutSetVolume, 0000 FFFF
Case 69: midiOutSetVolume, FFFF 0000
Case 70: midiOutSetVolume, FFFF FFFF
Case 71: midiOutSetVolume, 7FFF 7FFF

    These tests check correct handling of setting volume with various values
according to whether or how the current device supports this through return
values from MMSYSTEM and midiOutGetVolume calls.



MDDK MINTST Test Case Descriptions
==================================

Case  1: midiInGetNumDevs, valid call

    This test returns the number of MIDI input devices currently recognized
by the system. The user must verify that the number returned is correct for
the current system configuration and driver or drivers being tested. Verbose
logging mode is necessary for verification.

Case  2: midiInGetDevCaps, valid calls, each device
Case  3: midiInGetDevCaps, wSize = 0
Case  4: midiInGetDevCaps, wSize = 1

    These tests get the device capabilities for all MIDI input devices present
in the system, and make the call with incorrect size parameter. Verbose logging
mode is necessary to inspect returned information for each device.

Case  5: midiInOpen
Case  6: midiInOpen, 2 handles to same device

    These tests open a handle to the current driver with each type of callback
method and when the device is already open. Verbose logging mode will show
parameters passed to and returned by midiInOpen call.


Case  7: midiInClose, valid call
Case  8: midiInClose, no buffer in queue, started

    These tests cover closing a device with headers having been added,
and input started or not. Verification is through MMSYSTEM return values.

Case  9: midiInPrepareHeader, valid call
Case 10: midiInPrepareHeader, twice
Case 11: midiInPrepareHeader, >64K @ 0K
Case 12: midiInPrepareHeader, >64K @ 10K
Case 13: midiInPrepareHeader, >64K @ 70K

    These tests prepare data buffers for input. They are designed to test
headers pointing to buffers smaller than and larger than 64K. Buffers larger
than 64K are tested as chunks of larger locked down buffers. One test covers
trying to prepare a header that has already been prepared.

Case 14: midiInUnprepareHeader, valid call
Case 15: midiInUnprepareHeader, twice
Case 16: midiInUnprepareHeader, not prepared
Case 17: midiInUnprepareHeader, added, input started
Case 18: midiInUnprepareHeader, added, no input
Case 19: midiInUnprepareHeader, not added, input started
Case 20: midiInUnprepareHeader, >64K @ 0K
Case 21: midiInUnprepareHeader, >64K @ 10K
Case 22: midiInUnprepareHeader, >64K @ 70K

    These tests cover unpreparing headers under various conditions. Most are
analagous to the prepare header tests, with the exceptions of trying to
unprepare a header that hasn't been prepared, and the addition of tests to
cover queue states and input started or not.

Case 23: midiInAddBuffer, valid
Case 24: midiInAddBuffer, size = 1
Case 25: midiInAddBuffer, max size
Case 26: midiInAddBuffer, unprepared
Case 27: midiInAddBuffer, started, no buffer yet
Case 28: midiInAddBuffer, started, buffer already
Case 29: midiInAddBuffer, >64K @ 0K
Case 30: midiInAddBuffer, >64K @ 10K
Case 31: midiInAddBuffer, >64K @ 70K
Case 32: midiInAddBuffer, reuse same buffer twice
Case 33: midiInAddBuffer, series of small buffers

    These tests cover adding buffers to the drivers input buffer queue. Small
and large buffers, unprepared, reusing, and adding a series of buffers are
covered. Verification is by MMSYSTEM return values.

Case 34: midiInStart, valid
Case 35: midiInStart, twice
Case 36: midiInStart, restart stopped
Case 37: midiInStart, no buffers

    These tests cover starting MIDI input under various common conditions.
Verification is by MMSYSTEM return values.

Case 38: midiInStop, valid
Case 39: midiInStop, twice
Case 40: midiInStop, no buffers
Case 41: midiInStop, not started

    These tests cover stopping MIDI input under various common conditions.
Verification is by MMSYSTEM return values.

Case 42: midiInReset, valid
Case 43: midiInReset, twice
Case 44: midiInReset, started, no buffers
Case 45: midiInReset, started, buffers
Case 46: midiInReset, not started, buffers

    These tests cover resetting the driver under various conditions.
Verification is by MMSYSTEM return values.

MDDK MIDIIOT Test Case Descriptions
===================================

Case 1: midiOutShortMsg : Note Off
Case 2: midiOutShortMsg : Note On
Case 3: midiOutShortMsg : Polyphonic Key Pressure
Case 4: midiOutShortMsg : Control Change
Case 5: midiOutShortMsg : Program Change
Case 6: midiOutShortMsg : Channel Pressure
Case 7: midiOutShortMsg : Pitchbend
Case 8: midiOutShortMsg : MIDI Time Code Quarter Frame
Case 9: midiOutShortMsg : Song Position Pointer
Case 10: midiOutShortMsg : Song Select
Case 11: midiOutShortMsg : Undefined System Common 0xF4
Case 12: midiOutShortMsg : Undefined System Common 0xF5
Case 13: midiOutShortMsg : Tune Request
Case 14: midiOutShortMsg : Timing Clock
Case 15: midiOutShortMsg : Undefined System Real Time 0xF9
Case 16: midiOutShortMsg : Start
Case 17: midiOutShortMsg : Continue
Case 18: midiOutShortMsg : Stop
Case 19: midiOutShortMsg : Undefined System Real Time 0xFD
Case 20: midiOutShortMsg : Active Sensing
Case 21: midiOutShortMsg : System Reset

    These tests cover sending, receiving, or both of all possible values for
each type of short message. Tests will return pass or fail according to MMSYSTEM
return values.

Case 22: midiOutShortMsg : Transmission Rate

    This test is designed to determine system message flow capabilities.

Case 23: midiOutLongMsg : valid
Case 24: midiOutLongMsg : buffer >64K offset @ 0K
Case 25: midiOutLongMsg : buffer >64K offset @ 10K
Case 26: midiOutLongMsg : buffer >64K offset @ 70K

    These tests cover sending, receiving, or both of long messages. Tests will
return pass or fail according to MMSYSTEM return values.
