src/core/callback-test.cc
changeset 122 6b8f1eda5c57
parent 110 9ac6d63bfe33
child 131 f4fb87e77034
equal deleted inserted replaced
121:f8bc1a370b82 122:6b8f1eda5c57
    29 
    29 
    30 static bool gTest5 = false;
    30 static bool gTest5 = false;
    31 static bool gTest6 = false;
    31 static bool gTest6 = false;
    32 static bool gTest7 = false;
    32 static bool gTest7 = false;
    33 
    33 
    34 void test5 (void)
    34 void Test5 (void)
    35 {
    35 {
    36     gTest5 = true;
    36     gTest5 = true;
    37 }
    37 }
    38 
    38 
    39 void test6 (int)
    39 void Test6 (int)
    40 {
    40 {
    41     gTest6 = true;
    41     gTest6 = true;
    42 }
    42 }
    43 
    43 
    44 int test7 (int a)
    44 int Test7 (int a)
    45 {
    45 {
    46     gTest7 = true;
    46     gTest7 = true;
    47     return a;
    47     return a;
    48 }
    48 }
    49 
    49 
    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 runTests (void);
    58     virtual bool RunTests (void);
    59     void reset (void);
    59     void Reset (void);
    60     bool isWrong (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);
    66 };
    66 };
    67 
    67 
    68 CallbackTest::CallbackTest ()
    68 CallbackTest::CallbackTest ()
    69     : ns3::Test ("Callback"),
    69     : ns3::Test ("Callback"),
    70       m_test1 (false),
    70       m_test1 (false),
    72       m_test3 (false),
    72       m_test3 (false),
    73       m_test4 (false)
    73       m_test4 (false)
    74 {}
    74 {}
    75 
    75 
    76 void 
    76 void 
    77 CallbackTest::test1 (void)
    77 CallbackTest::Test1 (void)
    78 {
    78 {
    79     m_test1 = true;
    79     m_test1 = true;
    80 }
    80 }
    81 int 
    81 int 
    82 CallbackTest::test2 (void)
    82 CallbackTest::Test2 (void)
    83 {
    83 {
    84     m_test2 = true;
    84     m_test2 = true;
    85     return 2;
    85     return 2;
    86 }
    86 }
    87 void 
    87 void 
    88 CallbackTest::test3 (double a)
    88 CallbackTest::Test3 (double a)
    89 {
    89 {
    90     m_test3 = true;
    90     m_test3 = true;
    91 }
    91 }
    92 int 
    92 int 
    93 CallbackTest::test4 (double a, int b)
    93 CallbackTest::Test4 (double a, int b)
    94 {
    94 {
    95     m_test4 = true;
    95     m_test4 = true;
    96     return 4;
    96     return 4;
    97 }
    97 }
    98 void
    98 void
    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::isWrong (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 ||
   114     }
   114     }
   115     return false;
   115     return false;
   116 }
   116 }
   117 
   117 
   118 void
   118 void
   119 CallbackTest::reset (void)
   119 CallbackTest::Reset (void)
   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;
   127     gTest7 = false;
   127     gTest7 = false;
   128 }
   128 }
   129 
   129 
   130   
   130   
   131 bool 
   131 bool 
   132 CallbackTest::runTests (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;
   139     typedef ns3::Callback<int, double, int> D;
   139     typedef ns3::Callback<int, double, int> D;
   140     typedef ns3::Callback<void> E;
   140     typedef ns3::Callback<void> E;
   141     typedef ns3::Callback<void,int> F;
   141     typedef ns3::Callback<void,int> F;
   142     typedef ns3::Callback<int,int> G;
   142     typedef ns3::Callback<int,int> G;
   143     
   143     
   144     A a0 (this, &CallbackTest::test1);
   144     A a0 (this, &CallbackTest::Test1);
   145     B b0;
   145     B b0;
   146     b0 = B (this, &CallbackTest::test2);
   146     b0 = B (this, &CallbackTest::Test2);
   147     C c0 = C (this, &CallbackTest::test3);
   147     C c0 = C (this, &CallbackTest::Test3);
   148     D d0 = D (this, &CallbackTest::test4);
   148     D d0 = D (this, &CallbackTest::Test4);
   149     E e0 = E (&test5);
   149     E e0 = E (&Test5);
   150     F f0 = F (&test6);
   150     F f0 = F (&Test6);
   151     G g0 = G (&test7);
   151     G g0 = G (&Test7);
   152 
   152 
   153     a0 ();
   153     a0 ();
   154     b0 ();
   154     b0 ();
   155     c0 (0.0);
   155     c0 (0.0);
   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 (isWrong ()) {
   161     if (IsWrong ()) {
   162         ok = false;
   162         ok = false;
   163     }
   163     }
   164 
   164 
   165     reset ();
   165     Reset ();
   166 
   166 
   167     A a1 = ns3::makeCallback (&CallbackTest::test1, this);
   167     A a1 = ns3::MakeCallback (&CallbackTest::Test1, this);
   168     B b1 = ns3::makeCallback (&CallbackTest::test2, this);
   168     B b1 = ns3::MakeCallback (&CallbackTest::Test2, this);
   169     C c1 = ns3::makeCallback (&CallbackTest::test3, this);
   169     C c1 = ns3::MakeCallback (&CallbackTest::Test3, this);
   170     D d1 = ns3::makeCallback (&CallbackTest::test4, this);
   170     D d1 = ns3::MakeCallback (&CallbackTest::Test4, this);
   171     E e1 = ns3::makeCallback (&test5);
   171     E e1 = ns3::MakeCallback (&Test5);
   172     F f1 = ns3::makeCallback (&test6);
   172     F f1 = ns3::MakeCallback (&Test6);
   173     G g1 = ns3::makeCallback (&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);
   179     e1 ();
   179     e1 ();
   180     f1 (1);
   180     f1 (1);
   181     g1 (2);
   181     g1 (2);
   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 (isWrong ()) {
   187     if (IsWrong ()) {
   188         ok = false;
   188         ok = false;
   189     }
   189     }
   190     return ok;
   190     return ok;
   191 }
   191 }
   192 
   192