66 lines
1.8 KiB
C++
66 lines
1.8 KiB
C++
|
|
|
|
#ifndef MULTICASTERTEST_H
|
|
#define MULTICASTERTEST_H
|
|
|
|
#include "Multicaster.h"
|
|
|
|
#ifndef CPPUNIT_TESTCASE_H
|
|
#include "TestCase.h"
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
class MulticasterTest : public TestCase
|
|
{
|
|
public:
|
|
class Observer : public MulticastObserver
|
|
{
|
|
public:
|
|
int m_state;
|
|
std::string m_lastAddressReceived;
|
|
|
|
Observer () : m_state (0) {}
|
|
Observer (std::string initialAddress, int state)
|
|
: m_lastAddressReceived (initialAddress), m_state (state) {}
|
|
|
|
virtual void accept (std::string address, Value Value)
|
|
{ m_lastAddressReceived = address; m_state++; }
|
|
|
|
};
|
|
|
|
Multicaster *m_multicaster;
|
|
Observer *m_o1;
|
|
Observer *m_o2;
|
|
Observer *m_o3;
|
|
Observer *m_o4;
|
|
|
|
|
|
public:
|
|
void setUp ();
|
|
void tearDown ();
|
|
|
|
void testSinglePublish ();
|
|
void testMultipleHomogenousPublish ();
|
|
void testMultipleHeterogenousPublish ();
|
|
void testSingleUnsubscribe ();
|
|
void testMultipleUnsubscribe ();
|
|
void testSimpleUnsubscribeAll ();
|
|
void testComplexUnsubscribeAll ();
|
|
|
|
public:
|
|
MulticasterTest (std::string name);
|
|
virtual ~MulticasterTest ();
|
|
|
|
static Test *suite ();
|
|
|
|
};
|
|
|
|
|
|
inline bool operator== (const MulticasterTest::Observer& o1, const MulticasterTest::Observer& o2)
|
|
{ return o1.m_state == o2.m_state && o1.m_lastAddressReceived == o2.m_lastAddressReceived; }
|
|
|
|
|
|
#endif |