Mercurial > hg > vamp-plugin-tester
comparison Tester.h @ 0:f89128a316e7
* Commit beginnings of a Vamp plugin test program
author | cannam |
---|---|
date | Thu, 12 Mar 2009 16:23:55 +0000 |
parents | |
children | d8724c5a6d83 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f89128a316e7 |
---|---|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ | |
2 | |
3 /* | |
4 Vamp Plugin Tester | |
5 Chris Cannam, cannam@all-day-breakfast.com | |
6 Centre for Digital Music, Queen Mary, University of London. | |
7 Copyright 2009 QMUL. | |
8 | |
9 This program loads a Vamp plugin and tests its susceptibility to a | |
10 number of common pitfalls, including handling of extremes of input | |
11 data. If you can think of any additional useful tests that are | |
12 easily added, please send them to me. | |
13 | |
14 Permission is hereby granted, free of charge, to any person | |
15 obtaining a copy of this software and associated documentation | |
16 files (the "Software"), to deal in the Software without | |
17 restriction, including without limitation the rights to use, copy, | |
18 modify, merge, publish, distribute, sublicense, and/or sell copies | |
19 of the Software, and to permit persons to whom the Software is | |
20 furnished to do so, subject to the following conditions: | |
21 | |
22 The above copyright notice and this permission notice shall be | |
23 included in all copies or substantial portions of the Software. | |
24 | |
25 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
26 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
27 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
28 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR | |
29 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF | |
30 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
31 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
32 | |
33 Except as contained in this notice, the names of the Centre for | |
34 Digital Music; Queen Mary, University of London; and Chris Cannam | |
35 shall not be used in advertising or otherwise to promote the sale, | |
36 use or other dealings in this Software without prior written | |
37 authorization. | |
38 */ | |
39 | |
40 #ifndef _TESTER_H_ | |
41 #define _TESTER_H_ | |
42 | |
43 #include <string> | |
44 | |
45 #include "Test.h" | |
46 | |
47 class Tester | |
48 { | |
49 public: | |
50 Tester(std::string pluginKey); | |
51 ~Tester(); | |
52 | |
53 bool test(); | |
54 | |
55 class Registrar { | |
56 public: | |
57 Registrar(std::string name) { Tester::registerTest(name, this); } | |
58 virtual Test *makeTest() = 0; | |
59 }; | |
60 | |
61 template <typename T> | |
62 class TestRegistrar : Registrar { | |
63 public: | |
64 TestRegistrar(std::string name) : Registrar(name) { } | |
65 virtual Test *makeTest() { return new T(); } | |
66 }; | |
67 | |
68 static void registerTest(std::string name, Registrar *r) { | |
69 registry()[name] = r; | |
70 } | |
71 | |
72 protected: | |
73 std::string m_key; | |
74 typedef std::map<std::string, Registrar *> Registry; | |
75 static Registry ®istry(); | |
76 }; | |
77 | |
78 #endif | |
79 |