[moulette] switched to boost::signals2
[ozulis.git] / src / moulette / moulette.cc
blob2d50a4db9bc6d7142176394691a37c3b441cd6f2
1 #include <boost/foreach.hpp>
2 #include <boost/bind.hpp>
4 #include <ozulis/core/assert.hh>
5 #include <moulette/test-factory.hh>
6 #include <moulette/testable.hh>
7 #include <moulette/listener.hh>
8 #include "moulette.hh"
10 template class std::vector<moulette::Testable *>;
11 template class ozulis::core::Singleton<moulette::Moulette>;
13 namespace moulette
15 Moulette::Moulette()
16 : ozulis::core::Singleton<Moulette>(),
17 testStarting(),
18 testFinished(),
19 finished(),
20 tests_()
24 Moulette::~Moulette()
26 BOOST_FOREACH(Testable * test, tests_)
27 delete test;
30 void
31 Moulette::addTest(const boost::filesystem::path & path)
33 Testable * test = TestFactory::loadTest(path);
34 if (test)
35 addTest(test);
38 void
39 Moulette::addTest(Testable * test)
41 assert(test);
42 tests_.push_back(test);
45 void
46 Moulette::run()
48 BOOST_FOREACH(Testable * test, tests_)
49 test->run();
50 finished();
53 void
54 Moulette::registerListener(Listener & listener)
56 testStarting.connect(boost::bind(&Listener::testStarting, &listener, _1));
57 testFinished.connect(boost::bind(&Listener::testFinished, &listener, _1));
58 finished.connect(boost::bind(&Listener::finished, &listener));