a couple more tests.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed May 07 13:45:04 2008 -0700 (21 months ago)
changeset 30480c66462c3406
parent 3047 84600b3f966c
child 3049 519a31d1729f
a couple more tests.
src/common/packet.cc
     1.1 --- a/src/common/packet.cc	Wed May 07 11:28:17 2008 -0700
     1.2 +++ b/src/common/packet.cc	Wed May 07 13:45:04 2008 -0700
     1.3 @@ -567,6 +567,57 @@
     1.4      : ATestTagBase () {}
     1.5  };
     1.6  
     1.7 +class ATestHeaderBase : public Header
     1.8 +{
     1.9 +public:
    1.10 +  ATestHeaderBase () : Header (), m_error (false) {}
    1.11 +  bool m_error;
    1.12 +};
    1.13 +
    1.14 +template <int N>
    1.15 +class ATestHeader : public ATestHeaderBase
    1.16 +{
    1.17 +public:
    1.18 +  static TypeId GetTypeId (void) {
    1.19 +    std::ostringstream oss;
    1.20 +    oss << "anon::ATestHeader<" << N << ">";
    1.21 +    static TypeId tid = TypeId (oss.str ().c_str ())
    1.22 +      .SetParent<Header> ()
    1.23 +      .AddConstructor<ATestHeader<N> > ()
    1.24 +      .HideFromDocumentation ()
    1.25 +      ;
    1.26 +    return tid;
    1.27 +  }
    1.28 +  virtual TypeId GetInstanceTypeId (void) const {
    1.29 +    return GetTypeId ();
    1.30 +  }
    1.31 +  virtual uint32_t GetSerializedSize (void) const {
    1.32 +    return N;
    1.33 +  }
    1.34 +  virtual void Serialize (Buffer::Iterator iter) const {
    1.35 +    for (uint32_t i = 0; i < N; ++i)
    1.36 +      {
    1.37 +        iter.WriteU8 (N);
    1.38 +      }
    1.39 +  }
    1.40 +  virtual uint32_t Deserialize (Buffer::Iterator iter) {
    1.41 +    for (uint32_t i = 0; i < N; ++i)
    1.42 +      {
    1.43 +        uint8_t v = iter.ReadU8 ();
    1.44 +        if (v != N)
    1.45 +          {
    1.46 +            m_error = true;
    1.47 +          }
    1.48 +      }
    1.49 +    return N;
    1.50 +  }
    1.51 +  virtual void Print (std::ostream &os) const {
    1.52 +  }
    1.53 +  ATestHeader ()
    1.54 +    : ATestHeaderBase () {}
    1.55 +
    1.56 +};
    1.57 +
    1.58  struct Expected
    1.59  {
    1.60    Expected (uint32_t n_, uint32_t start_, uint32_t end_)
    1.61 @@ -702,6 +753,24 @@
    1.62           E (1, 10, 100), E(2, 10, 100), E (4, 10, 100), 
    1.63           E (1, 100, 1000), E(2, 100, 1000), E (5, 100, 1000));
    1.64  
    1.65 +
    1.66 +  // force caching a buffer of the right size.
    1.67 +  frag0 = Create<Packet> (1000);
    1.68 +  frag0->AddHeader (ATestHeader<10> ());
    1.69 +  frag0 = 0;
    1.70 +
    1.71 +  p = Create<Packet> (1000);
    1.72 +  p->AddTag (ATestTag<20> ());
    1.73 +  CHECK (p, 1, E (20, 0, 1000));
    1.74 +  frag0 = p->CreateFragment (10, 90);
    1.75 +  CHECK (p, 1, E (20, 0, 1000));
    1.76 +  CHECK (frag0, 1, E (20, 0, 90));
    1.77 +  p = 0;
    1.78 +  frag0->AddHeader (ATestHeader<10> ());
    1.79 +  CHECK (frag0, 1, E (20, 10, 100));
    1.80 +
    1.81 +  
    1.82 +
    1.83    return result;
    1.84  }
    1.85