test the ValueTraceSource with an arbitrary class.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sun, 24 Feb 2008 20:18:02 +0100
changeset 2469 181c6a5b14c1
parent 2468 23b763621698
child 2470 254581fb9e9c
child 2471 86f7ea794e83
test the ValueTraceSource with an arbitrary class.
src/core/attribute-test.cc
--- a/src/core/attribute-test.cc	Sun Feb 24 20:04:31 2008 +0100
+++ b/src/core/attribute-test.cc	Sun Feb 24 20:18:02 2008 +0100
@@ -13,6 +13,29 @@
 
 namespace ns3 {
 
+class ValueClassTest 
+{
+public:
+  ValueClassTest () {}
+  VALUE_HELPER_HEADER_1 (ValueClassTest);
+private:
+  int m_v;
+};
+bool operator != (const ValueClassTest &a, const ValueClassTest &b)
+{
+  return true;
+}
+std::ostream & operator << (std::ostream &os, ValueClassTest v)
+{
+  return os;
+}
+std::istream & operator >> (std::istream &is, ValueClassTest &v)
+{
+  return is;
+}
+VALUE_HELPER_HEADER_2 (ValueClassTest);
+VALUE_HELPER_CPP (ValueClassTest);
+
 class AttributeTest : public Test
 {
 public:
@@ -25,8 +48,12 @@
   void NotifySource2 (double a, int b, float c) {
     m_got2 = a;
   }
+  void NotifySourceValue (ValueClassTest old, ValueClassTest n) {
+    m_gotValue = n;
+  }
   int64_t m_got1;
   double m_got2;
+  ValueClassTest m_gotValue;
 };
 
 class Derived : public Object
@@ -113,10 +140,16 @@
 		     MakeIntegerAccessor (&AttributeObjectTest::DoSetIntSrc,
 					  &AttributeObjectTest::DoGetIntSrc),
 		     MakeIntegerChecker<int8_t> ())
+      .AddAttribute ("ValueClassSource", "help text",
+		     ValueClassTest (),
+		     MakeValueClassTestAccessor (&AttributeObjectTest::m_valueSrc),
+		     MakeValueClassTestChecker ())
       .AddTraceSource ("Source1", "help test",
 		       MakeTraceSourceAccessor (&AttributeObjectTest::m_intSrc1))
       .AddTraceSource ("Source2", "help text",
 		       MakeTraceSourceAccessor (&AttributeObjectTest::m_cb))
+      .AddTraceSource ("ValueSource", "help text",
+		       MakeTraceSourceAccessor (&AttributeObjectTest::m_valueSrc))
       ;
         
     return tid;
@@ -173,6 +206,7 @@
   ValueTraceSource<int8_t> m_intSrc1;
   ValueTraceSource<int8_t> m_intSrc2;
   EventTraceSource<double, int, float> m_cb;
+  ValueTraceSource<ValueClassTest> m_valueSrc;
 };
 
 
@@ -422,6 +456,8 @@
   NS_TEST_ASSERT (p->TraceSourceDisconnect ("Source2", MakeCallback (&AttributeTest::NotifySource2, this)));
   p->InvokeCb (-1.0, -5, 0.0);
   NS_TEST_ASSERT_EQUAL (m_got2, 1.0);
+
+  NS_TEST_ASSERT (p->TraceSourceConnect ("ValueSource", MakeCallback (&AttributeTest::NotifySourceValue, this)));