src/core/callback-test.cc
changeset 53 ae406f4957d5
parent 16 99e833adbb46
child 54 f860e6f94787
equal deleted inserted replaced
52:72a52d59ee9f 53:ae406f4957d5
    25 
    25 
    26 #ifdef RUN_SELF_TESTS
    26 #ifdef RUN_SELF_TESTS
    27 
    27 
    28 namespace ns3 {
    28 namespace ns3 {
    29 
    29 
    30 static bool g_test5 = false;
    30 static bool gTest5 = false;
    31 static bool g_test6 = false;
    31 static bool gTest6 = false;
    32 static bool g_test7 = false;
    32 static bool gTest7 = false;
    33 
    33 
    34 void test5 (void)
    34 void test5 (void)
    35 {
    35 {
    36 	g_test5 = true;
    36 	gTest5 = true;
    37 }
    37 }
    38 
    38 
    39 void test6 (int)
    39 void test6 (int)
    40 {
    40 {
    41 	g_test6 = true;
    41 	gTest6 = true;
    42 }
    42 }
    43 
    43 
    44 int test7 (int a)
    44 int test7 (int a)
    45 {
    45 {
    46 	g_test7 = true;
    46 	gTest7 = true;
    47 	return a;
    47 	return a;
    48 }
    48 }
    49 
    49 
    50 class CallbackTest : public ns3::Test {
    50 class CallbackTest : public ns3::Test {
    51 private:
    51 private:
    53 	bool m_test2;
    53 	bool m_test2;
    54 	bool m_test3;
    54 	bool m_test3;
    55 	bool m_test4;
    55 	bool m_test4;
    56 public:
    56 public:
    57 	CallbackTest ();
    57 	CallbackTest ();
    58 	virtual bool run_tests (void);
    58 	virtual bool runTests (void);
    59 	void reset (void);
    59 	void reset (void);
    60 	bool is_wrong (void);
    60 	bool isWrong (void);
    61 	void test1 (void);
    61 	void test1 (void);
    62 	int test2 (void);
    62 	int test2 (void);
    63 	void test3 (double a);
    63 	void test3 (double a);
    64 	int test4 (double a, int b);
    64 	int test4 (double a, int b);
    65 	void test8 (Callback<void, int> callback);
    65 	void test8 (Callback<void, int> callback);
    99 CallbackTest::test8 (Callback<void,int> callback)
    99 CallbackTest::test8 (Callback<void,int> callback)
   100 {
   100 {
   101 	callback (3);
   101 	callback (3);
   102 }
   102 }
   103 bool
   103 bool
   104 CallbackTest::is_wrong (void)
   104 CallbackTest::isWrong (void)
   105 {
   105 {
   106 	if (!m_test1 ||
   106 	if (!m_test1 ||
   107 	    !m_test2 ||
   107 	    !m_test2 ||
   108 	    !m_test3 ||
   108 	    !m_test3 ||
   109 	    !m_test4 ||
   109 	    !m_test4 ||
   110 	    !g_test5 ||
   110 	    !gTest5 ||
   111 	    !g_test6 ||
   111 	    !gTest6 ||
   112 	    !g_test7) {
   112 	    !gTest7) {
   113 		return true;
   113 		return true;
   114 	}
   114 	}
   115 	return false;
   115 	return false;
   116 }
   116 }
   117 
   117 
   120 {
   120 {
   121 	m_test1 = false;
   121 	m_test1 = false;
   122 	m_test2 = false;
   122 	m_test2 = false;
   123 	m_test3 = false;
   123 	m_test3 = false;
   124 	m_test4 = false;
   124 	m_test4 = false;
   125 	g_test5 = false;
   125 	gTest5 = false;
   126 	g_test6 = false;
   126 	gTest6 = false;
   127 	g_test7 = false;
   127 	gTest7 = false;
   128 }
   128 }
   129 
   129 
   130   
   130   
   131 bool 
   131 bool 
   132 CallbackTest::run_tests (void)
   132 CallbackTest::runTests (void)
   133 {
   133 {
   134 	bool ok = true;
   134 	bool ok = true;
   135 
   135 
   136 	typedef ns3::Callback<void> A;
   136 	typedef ns3::Callback<void> A;
   137 	typedef ns3::Callback<int> B;
   137 	typedef ns3::Callback<int> B;
   156 	d0 (0.0, 1);
   156 	d0 (0.0, 1);
   157 	e0 ();
   157 	e0 ();
   158 	f0 (1);
   158 	f0 (1);
   159 	g0 (1);
   159 	g0 (1);
   160 
   160 
   161 	if (is_wrong ()) {
   161 	if (isWrong ()) {
   162 		ok = false;
   162 		ok = false;
   163 	}
   163 	}
   164 
   164 
   165 	reset ();
   165 	reset ();
   166 
   166 
   167 	A a1 = ns3::make_callback (&CallbackTest::test1, this);
   167 	A a1 = ns3::makeCallback (&CallbackTest::test1, this);
   168 	B b1 = ns3::make_callback (&CallbackTest::test2, this);
   168 	B b1 = ns3::makeCallback (&CallbackTest::test2, this);
   169 	C c1 = ns3::make_callback (&CallbackTest::test3, this);
   169 	C c1 = ns3::makeCallback (&CallbackTest::test3, this);
   170 	D d1 = ns3::make_callback (&CallbackTest::test4, this);
   170 	D d1 = ns3::makeCallback (&CallbackTest::test4, this);
   171 	E e1 = ns3::make_callback (&test5);
   171 	E e1 = ns3::makeCallback (&test5);
   172 	F f1 = ns3::make_callback (&test6);
   172 	F f1 = ns3::makeCallback (&test6);
   173 	G g1 = ns3::make_callback (&test7);
   173 	G g1 = ns3::makeCallback (&test7);
   174 	
   174 	
   175 	a1 ();
   175 	a1 ();
   176 	b1 ();
   176 	b1 ();
   177 	c1 (0.0);
   177 	c1 (0.0);
   178 	d1 (0.0, 1);
   178 	d1 (0.0, 1);
   182 
   182 
   183 	test8 (f1);
   183 	test8 (f1);
   184 
   184 
   185 	Callback<void, int64_t,int64_t> a2;
   185 	Callback<void, int64_t,int64_t> a2;
   186 
   186 
   187 	if (is_wrong ()) {
   187 	if (isWrong ()) {
   188 		ok = false;
   188 		ok = false;
   189 	}
   189 	}
   190 	return ok;
   190 	return ok;
   191 }
   191 }
   192 
   192 
   193 static CallbackTest g_callback_test;
   193 static CallbackTest gCallbackTest;
   194 
   194 
   195 }; // namespace
   195 }; // namespace
   196 
   196 
   197 #endif /* RUN_SELF_TESTS */
   197 #endif /* RUN_SELF_TESTS */