aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp.test/inc/dsa.h
blob: 93de295063812c99ee3a357a76acf5208fcbb259 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef   __meowpp_h__
#define   __meowpp_h__

#include "meowpp/Usage.h"
#include "meowpp/oo/ObjBase.h"
#include "meowpp/oo/ObjSelector.h"

extern int count;

class TestFunction: public meow::ObjBase{
  public:
    virtual ~TestFunction(){ };
    virtual bool run() = 0;
    virtual std::string name       () const = 0;
    virtual std::string description() const = 0;
};

#define TEST(__A,__B) \
class Test##__A: public TestFunction{ \
  public: \
          \
  meow::ObjBase* create() const{ return new Test##__A(); } \
  bool run(); \
  std::string name() const{ return std::string(#__A); } \
  std::string description() const{ return std::string(__B); } \
}; \
static meow::ObjSelector<0> _(meow::stringPrintf("%d", count++), new Test##__A(), true); \
inline bool Test##__A::run()

#endif // __meowpp_h__