53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
#include "Core/Object.h"
|
|
#include "Core/Signal.h"
|
|
#include "testing-prototype.h"
|
|
#include <iostream>
|
|
|
|
using namespace uLib;
|
|
|
|
class Ping : public Object {
|
|
public:
|
|
signals:
|
|
void PingSignal(int count);
|
|
public slots:
|
|
void OnPong(int count) {
|
|
std::cout << "Ping received Pong " << count << std::endl;
|
|
if (count > 0)
|
|
ULIB_SIGNAL_EMIT(Ping::PingSignal, count - 1);
|
|
}
|
|
};
|
|
|
|
void Ping::PingSignal(int count) { ULIB_SIGNAL_EMIT(Ping::PingSignal, count); }
|
|
|
|
class Pong : public Object {
|
|
public:
|
|
signals:
|
|
void PongSignal(int count);
|
|
public slots:
|
|
void OnPing(int count) {
|
|
std::cout << "Pong received Ping " << count << std::endl;
|
|
if (count > 0)
|
|
ULIB_SIGNAL_EMIT(Pong::PongSignal, count - 1);
|
|
}
|
|
};
|
|
|
|
void Pong::PongSignal(int count) { ULIB_SIGNAL_EMIT(Pong::PongSignal, count); }
|
|
|
|
int main() {
|
|
BEGIN_TESTING(PingPong);
|
|
Ping ping;
|
|
Pong pong;
|
|
|
|
std::cout << "Connecting ping to pong" << std::endl;
|
|
Object::connect(&ping, &Ping::PingSignal, &pong, &Pong::OnPing);
|
|
|
|
std::cout << "Connecting pong to ping" << std::endl;
|
|
Object::connect(&pong, &Pong::PongSignal, &ping, &Ping::OnPong);
|
|
|
|
std::cout << "Emitting PingSignal(5)" << std::endl;
|
|
ping.PingSignal(5);
|
|
|
|
END_TESTING;
|
|
return 0;
|
|
}
|