00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "traced-callback.h"
00021
00022 #ifdef RUN_SELF_TESTS
00023
00024 #include "test.h"
00025
00026 namespace ns3 {
00027
00028 class TracedCallbackTest : public Test
00029 {
00030 public:
00031 TracedCallbackTest ();
00032 virtual ~TracedCallbackTest ();
00033 virtual bool RunTests (void);
00034 private:
00035 void CbOne (uint8_t a, double b);
00036 void CbTwo (uint8_t a, double b);
00037
00038 bool m_one;
00039 bool m_two;
00040 };
00041
00042 TracedCallbackTest::TracedCallbackTest ()
00043 : Test ("TracedCallback")
00044 {}
00045 TracedCallbackTest::~TracedCallbackTest ()
00046 {}
00047 void
00048 TracedCallbackTest::CbOne (uint8_t a, double b)
00049 {
00050 m_one = true;
00051 }
00052 void
00053 TracedCallbackTest::CbTwo (uint8_t a, double b)
00054 {
00055 m_two = true;
00056 }
00057 bool
00058 TracedCallbackTest::RunTests (void)
00059 {
00060 bool result = true;
00061
00062 TracedCallback<uint8_t,double> trace;
00063 trace.ConnectWithoutContext (MakeCallback (&TracedCallbackTest::CbOne, this));
00064 trace.ConnectWithoutContext (MakeCallback (&TracedCallbackTest::CbTwo, this));
00065 m_one = false;
00066 m_two = false;
00067 trace (1, 2);
00068 NS_TEST_ASSERT (m_one);
00069 NS_TEST_ASSERT (m_two);
00070
00071 trace.DisconnectWithoutContext (MakeCallback (&TracedCallbackTest::CbOne, this));
00072 m_one = false;
00073 m_two = false;
00074 trace (1, 2);
00075 NS_TEST_ASSERT (!m_one);
00076 NS_TEST_ASSERT (m_two);
00077 trace.DisconnectWithoutContext (MakeCallback (&TracedCallbackTest::CbTwo, this));
00078 m_one = false;
00079 m_two = false;
00080 trace (1, 2);
00081 NS_TEST_ASSERT (!m_one);
00082 NS_TEST_ASSERT (!m_two);
00083
00084 trace.ConnectWithoutContext (MakeCallback (&TracedCallbackTest::CbOne, this));
00085 trace.ConnectWithoutContext (MakeCallback (&TracedCallbackTest::CbTwo, this));
00086 m_one = false;
00087 m_two = false;
00088 trace (1, 2);
00089 NS_TEST_ASSERT (m_one);
00090 NS_TEST_ASSERT (m_two);
00091
00092 return result;
00093 }
00094
00095 static TracedCallbackTest g_eventTraceTest;
00096
00097 }
00098
00099 #endif