1 #include "test-suite.h"
2 #include "../Misc/MsgParsing.h"
3 
4 class PluginTest
5 {
6     public:
setUp()7         void setUp() {}
8 
tearDown()9         void tearDown() {}
10 
testExtracting()11         void testExtracting() {
12             std::size_t res;
13             int part, kit, vc;
14             bool isFm;
15 
16             // test a full string with OscilSmp
17             res = zyn::idsFromMsg("/part1/kit2/adpars/VoicePar3/OscilSmp", &part, &kit, &vc, &isFm);
18             TS_ASSERT(res);
19             TS_ASSERT_EQUAL_INT(part, 1);
20             TS_ASSERT_EQUAL_INT(kit, 2);
21             TS_ASSERT_EQUAL_INT(vc, 3);
22             TS_ASSERT(!isFm);
23             // translate back into string
24             std::string str = zyn::buildVoiceParMsg(&part, &kit, &vc, &isFm);
25             TS_ASSERT_EQUAL_STR("/part1/kit2/adpars/VoicePar3/OscilSmp", str.c_str());
26 
27             // same with FMSmp
28             res = zyn::idsFromMsg("/part11/kit12/adpars/VoicePar13/FMSmp", &part, &kit, &vc, &isFm);
29             TS_ASSERT(res);
30             TS_ASSERT_EQUAL_INT(part, 11);
31             TS_ASSERT_EQUAL_INT(kit, 12);
32             TS_ASSERT_EQUAL_INT(vc, 13);
33             TS_ASSERT(isFm);
34             // translate back into string
35             str = zyn::buildVoiceParMsg(&part, &kit, &vc, &isFm);
36             TS_ASSERT_EQUAL_STR("/part11/kit12/adpars/VoicePar13/FMSmp", str.c_str());
37 
38             // check return values
39             TS_ASSERT(!zyn::idsFromMsg("/part", &part, &kit, nullptr));
40             TS_ASSERT(!zyn::idsFromMsg("/part1", &part, &kit, nullptr));
41             TS_ASSERT(!zyn::idsFromMsg("/part1/kit", &part, &kit, nullptr));
42             TS_ASSERT(zyn::idsFromMsg("/part1/kit2", &part, &kit, nullptr));
43             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2", &part, &kit, &vc));
44             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2/adpars/", &part, &kit, &vc));
45             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2/adpars/", &part, &kit, &vc));
46             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2/adpars/VoicePar", &part, &kit, &vc));
47             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2/adpars/VoicePar/", &part, &kit, &vc));
48             TS_ASSERT(zyn::idsFromMsg("/part1/kit2/adpars/VoicePar0/", &part, &kit, &vc));
49             TS_ASSERT(zyn::idsFromMsg("/part1/kit2/adpars/VoicePar0/XXX", &part, &kit, &vc));
50             TS_ASSERT(!zyn::idsFromMsg("/part1/kit2/adpars/VoicePar0/XXX", &part, &kit, &vc, &isFm));
51             TS_ASSERT(zyn::idsFromMsg("/part1/kit2/adpars/VoicePar0/OscilSmp", &part, &kit, &vc, &isFm));
52             TS_ASSERT(zyn::idsFromMsg("/part1/kit2/adpars/VoicePar0/FMSmp", &part, &kit, &vc, &isFm));
53         }
54 };
55 
main()56 int main()
57 {
58     PluginTest test;
59     RUN_TEST(testExtracting);
60     return test_summary();
61 }
62