What the tests cover¶
Native provider (normal and fast-harness profiles):
- Keyed Sidechain in native32 and native64 with the auxiliary bus active as
stereo, active as mono, inactive declared as stereo, and inactive declared as
mono. Each case runs 2000 blocks of 0 to 64 frames, including zero-frame
blocks, and every output sample must equal the closed form exactly. A 5.1
auxiliary request must be refused with the module's returned
kResultFalse. - Event Probe in native32 and native64 with 2000 variable and zero-frame
blocks. Every block carries all nine input event kinds plus
Markerpoints. Marker point 0 takes an offset no event uses where one is free, so most blocks show a lone NoteOn impulse. Each impulse, each echoed event payload, the count CC and theDigestparameter must match an independent FNV-1a implementation in the test file. - On the AUDIO worker, around every process call, the test counts C++
operator new/deleteand reads the module's Rust allocation counter. Both must stay at zero.
Direct SDK robustness (ravet-vst3-reference-robustness-tests, f32 and f64):
- Event Probe, refused blocks:
- 2049 events, a negative event count and a failed
getEvent; - 4097 points, 1 event plus 4096 points, and 2048 events plus 2049 points;
- a negative point count, a failed
getPoint, a null queue and a negative queue count; - a payload one byte over capacity, a combined payload overflow, and over-long text;
- null data and null text with nonzero sizes;
- negative, at-frames, past-frames and minimum-integer offsets for events and points, and nonzero offsets in zero-frame blocks;
- null outputs, no output bus, a null channel array, a null left or right channel, a mono output, frames above the maximum, negative frames, a sample-size mismatch, and processing before activation.
Each refusal must be silent, post nothing, and leave the digest unchanged:
a twin instance that never saw the block must agree on the next good block.
- Event Probe, admitted blocks:
- capacity edges: 2048 events plus 2048 points, 4096 points, and a payload
of exactly the capacity;
- empty payloads, and events on other buses or of unknown or output-only
kinds, which must be ignored even with invalid offsets;
- a malformed non-Marker queue, which must be ignored;
- an empty event list, a null event list, a parameter-only block, null
output lists, and a zero-frame block with no output bus.
- Event Probe, pinned behaviours: the documented host-output-refusal exception,
and the digest reset on reactivation.
- Keyed Sidechain with 0, 1 and 2 key channels:
- silence-flag combinations on main and key inputs with garbage in the
flagged buffers;
- every malformed-buffer refusal;
- zero-frame blocks with no buffers;
- setActive(true) before initialize.
- Every call, refused or not, reads the module's Rust allocation counter and
requires zero.
Rust Graph bank (vst3-hosted-audio):
- Keyed Sidechain bank with three children (stereo active, mono active, stereo
inactive) placed in a canonical
Graph, in f32 and f64. - Event Probe bank whose rich lanes carry all nine event kinds and
Markerpoints. The test checks impulses, echoed output events, the count CC and theDigestparameter against closed forms. - Each run processes 600 Graph blocks of 0 to 64 frames on one AUDIO worker.
allocation-countermeasures everyGraph::processcall (host-side Rust heap) and must see zero heap operations. Nodes are returned and the bank is reclaimed on MAIN.