root/lang/objective-cplusplus/i3/trunk/src/Tester.cpp @ 36128

Revision 36128, 2.2 kB (checked in by saturday06, 4 years ago)

ioajdf

Line 
1#include <PrecompiledHeaders.h>
2#include "Mediator.h"
3#include "Tester.h"
4#include <mil/Synchronize.h>
5
6namespace i3 {
7
8boost::shared_ptr<Tester> tester_ptr;
9
10#define CHECK_VALID { if (!valid) { throw std::logic_error("Tester"); }}
11
12Tester::Tester() : valid(false), mediator(*(std::auto_ptr<Mediator>(new Mediator()))), passed(true), index(0) {
13}
14
15Tester::Tester(Mediator& mediator) : valid(true), mediator(mediator), passed(true), index(0) {
16}
17
18std::string Tester::getName() {
19        CHECK_VALID;
20        synchronized (mutex) {
21                if (passed) {
22                        return "test passed";
23                }
24                return name;
25        }
26
27        return "";
28}
29
30void Tester::pass() {
31        CHECK_VALID;
32
33    std::cout << "Test [" << getName() << "] passed" << std::endl;
34        synchronized (mutex) {
35                passed = true;
36        }
37}
38
39void Tester::next(const char* name_) {
40        CHECK_VALID;
41        synchronized (mutex) {
42                name = name_;
43                passed = false;
44        }
45}
46
47void Tester::run() {
48        CHECK_VALID;
49
50        sleep(3);
51
52    for (;;) {
53                for (int i = 0; i < 100 && this->execute_front(); i++) {
54                        mil::yield();
55                }
56
57                synchronized (mutex) {
58                        if (!passed) {
59                continue;
60            }
61            if (!startNext()) {
62                return;
63            }
64                }
65    }
66}
67
68struct SimplePing {
69};
70
71template <>
72void InputWindow::beforeExecute(SimplePing& e) {
73        if (tester.getName() == "simple ping") {
74                QT_CHECK(true);
75                tester.pass();
76        }
77}
78
79template <>
80void InputWindow::execute(SimplePing& e) {
81}
82
83bool Tester::startNext() {
84        CHECK_VALID;
85
86        index++;
87        if (index == 1) {
88                next("simple ping");
89                SimplePing s;
90                mediator.getInputWindow().post(s, *this);
91        return true;
92        }
93        return false;
94}
95
96}
97
98using namespace i3;
99
100QT_TEST(mediadafd) {
101    char argv1[] = "foo";
102    char argv2[] = "bar";
103    char* argv[] = {argv1, argv2};
104    int argc = _countof(argv);
105
106    exit_status exit_status;
107
108    exit_status = init_os_global_data(argc, argv);
109    QT_CHECK(!exit_status);
110
111    exit_status = init_gui_global_data(argc, argv);
112    QT_CHECK(!exit_status);
113
114    {
115        i3::Mediator mediator;
116        exit_status = mediator.start();
117        if (exit_status) {
118            QT_CHECK(!exit_status);
119        }
120    }
121}
Note: See TracBrowser for help on using the browser.