Ξ-W2-T1: the resample bake chain — instrument renders, extension banks, one click re-points and resets
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// Standalone tests for reasampler::model::resample_name — no REAPER, no framework.
|
||||
//
|
||||
// Covers: the first iteration, the chain incrementing rather than stacking, the empty
|
||||
// name, and the tails that are NOT one of ours and must be left alone.
|
||||
|
||||
#include "../src/core/model/resample_name.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
using reasampler::model::nextIterationName;
|
||||
|
||||
static int g_fail = 0;
|
||||
#define CHECK(cond) do { if(!(cond)) { \
|
||||
std::printf("FAIL line %d: %s\n", __LINE__, #cond); ++g_fail; } } while(0)
|
||||
|
||||
int main() {
|
||||
CHECK(nextIterationName("Kick") == "Kick r2");
|
||||
CHECK(nextIterationName("Kick r2") == "Kick r3");
|
||||
CHECK(nextIterationName("Kick r9") == "Kick r10");
|
||||
CHECK(nextIterationName("Kick r10") == "Kick r11");
|
||||
|
||||
// The chain composes: three bakes read as r2, r3, r4 — not "Kick r2 r2 r2".
|
||||
CHECK(nextIterationName(nextIterationName(nextIterationName("Kick"))) == "Kick r4");
|
||||
|
||||
CHECK(nextIterationName("") == "resample r2");
|
||||
CHECK(nextIterationName(" ") == " r2"); // a name of spaces is still a name
|
||||
|
||||
// Tails that are not ours: appended to, never rewritten.
|
||||
CHECK(nextIterationName("Kick r") == "Kick r r2");
|
||||
CHECK(nextIterationName("Kick r0") == "Kick r0 r2");
|
||||
CHECK(nextIterationName("Kick rx") == "Kick rx r2");
|
||||
CHECK(nextIterationName("Kickr2") == "Kickr2 r2"); // no space before the r
|
||||
CHECK(nextIterationName("Kick R2") == "Kick R2 r2"); // capital R is not the marker
|
||||
CHECK(nextIterationName("r2") == "r2 r2"); // no stem to attach the tail to
|
||||
CHECK(nextIterationName("2") == "2 r2");
|
||||
CHECK(nextIterationName("Take 3") == "Take 3 r2"); // digits without the " r"
|
||||
|
||||
// A digit run past the counting bound is left alone rather than wrapping into a low
|
||||
// number that would collide with an existing entry's name.
|
||||
CHECK(nextIterationName("Kick r99999999999999999999") ==
|
||||
"Kick r99999999999999999999 r2");
|
||||
|
||||
if (g_fail == 0) std::printf("resample_name: all tests passed\n");
|
||||
return g_fail ? 1 : 0;
|
||||
}
|
||||
Reference in New Issue
Block a user