switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Packets / PacketImpl.test.cc
index 13db554..6a8d538 100644 (file)
@@ -2,23 +2,28 @@
 //
 // Copyright (C) 2007
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-//     Stefan Bund <g0dil@berlios.de>
 //
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at 
+// http://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief PacketImpl unit tests */
 #include "Packets.hh"
 #include "main.test.hh"
 
+#include <sstream>
 #include <senf/Utils/auto_unit_test.hh>
 #include <boost/test/test_tools.hpp>
 
 #define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace {
     struct VoidPacket : public senf::PacketTypeBase {};
@@ -44,7 +50,7 @@ namespace {
 // only validate PacketInterpreterBase as far as to ensure that a failure of one test is not due to
 // an error in PacketInterpreterbase
 
-BOOST_AUTO_UNIT_TEST(packetImpl_mem)
+SENF_AUTO_UNIT_TEST(packetImpl_mem)
 {
     senf::detail::PacketImpl * p (new senf::detail::PacketImpl());
     BOOST_CHECK_EQUAL(p->refcount(), 0);
@@ -58,9 +64,9 @@ BOOST_AUTO_UNIT_TEST(packetImpl_mem)
     // refcount ..
 
 
-    p->add_ref(2);
-    BOOST_CHECK_EQUAL(p->refcount(), 3);
-    p->release(2);
+    p->add_ref();
+    BOOST_CHECK_EQUAL(p->refcount(), 2);
+    p->release();
     BOOST_CHECK_EQUAL(p->refcount(), 1);
 
     {
@@ -74,7 +80,7 @@ BOOST_AUTO_UNIT_TEST(packetImpl_mem)
             senf::pool_alloc_mixin< senf::PacketInterpreter<VoidPacket> >::allocCounter(), 1u);
 #endif
         senf::PacketInterpreterBase::ptr pi2 (pi);
-        BOOST_CHECK_EQUAL(p->refcount(), 3);
+        BOOST_CHECK_EQUAL(p->refcount(), 2);
     }
     BOOST_CHECK_EQUAL(p->refcount(),1);
 
@@ -101,12 +107,12 @@ BOOST_AUTO_UNIT_TEST(packetImpl_mem)
 #endif
 }
 
-BOOST_AUTO_UNIT_TEST(packetImpl_data)
+SENF_AUTO_UNIT_TEST(packetImpl_data)
 {
     senf::PacketInterpreterBase::ptr pi (senf::PacketInterpreter<VoidPacket>::create());
     senf::detail::PacketImpl * p (senf::detail::packet::test::TestDriver::impl(pi));
 
-    senf::detail::PacketImpl::byte data[] = 
+    senf::detail::PacketImpl::byte data[] =
         { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
 
     p->insert(&pi->data(),p->begin(),data, data+sizeof(data));
@@ -114,7 +120,7 @@ BOOST_AUTO_UNIT_TEST(packetImpl_data)
     BOOST_CHECK_EQUAL(p->begin()[0], 0x00u);
     BOOST_CHECK_EQUAL(p->begin()[7], 0x07u);
     BOOST_CHECK_EQUAL(pi->data().size(), p->size());
-    
+
     p->insert(&pi->data(),p->begin()+2,0xf0u);
     BOOST_CHECK_EQUAL(p->size(),9u);
     BOOST_CHECK_EQUAL(p->begin()[8], 0x07u);
@@ -131,7 +137,7 @@ BOOST_AUTO_UNIT_TEST(packetImpl_data)
     BOOST_CHECK_EQUAL(p->size(),16u);
     BOOST_CHECK_EQUAL(p->begin()[0], 0x01u);
     BOOST_CHECK_EQUAL(pi->data().size(), p->size());
-    
+
     p->erase(&pi->data(),p->begin()+2, p->begin()+7);
     BOOST_CHECK_EQUAL(p->size(),11u);
     BOOST_CHECK_EQUAL(p->begin()[2], 0x07u);
@@ -147,31 +153,36 @@ BOOST_AUTO_UNIT_TEST(packetImpl_data)
     BOOST_CHECK(pi->data().begin() == p->begin());
 }
 
-BOOST_AUTO_UNIT_TEST(packetImpl_interpreters)
+SENF_AUTO_UNIT_TEST(packetImpl_interpreters)
 {
     senf::detail::PacketImpl * p (new senf::detail::PacketImpl());
     p->add_ref();
 
     {
-        senf::PacketInterpreterBase::ptr pi2 (
+        senf::PacketInterpreterBase::ptr pi3 (
             senf::detail::packet::test::TestDriver::create<VoidPacket>(
                 p,p->begin(),p->end(),senf::PacketInterpreterBase::Append));
-        senf::PacketInterpreterBase::ptr pi3 (
+        senf::PacketInterpreterBase::ptr pi4 (
             senf::detail::packet::test::TestDriver::create<VoidPacket>(
                 p,p->end(),p->end(),senf::PacketInterpreterBase::Append));
         senf::PacketInterpreterBase::ptr pi1 (
             senf::detail::packet::test::TestDriver::create<VoidPacket>(
                 p,p->begin(),p->end(),senf::PacketInterpreterBase::Prepend));
+        senf::PacketInterpreterBase::ptr pi2 (
+            senf::detail::packet::test::TestDriver::create<VoidPacket>(
+                p,p->begin(),p->end(),pi3));
 
         BOOST_CHECK_EQUAL(p->first(), pi1.get());
         BOOST_CHECK_EQUAL(p->next(p->first()), pi2.get());
         BOOST_CHECK_EQUAL(p->next(p->next(p->first())), pi3.get());
-        BOOST_CHECK( !p->next(p->next(p->next(p->first()))) );
+        BOOST_CHECK_EQUAL(p->next(p->next(p->next(p->first()))), pi4.get());
+        BOOST_CHECK( !p->next(p->next(p->next(p->next(p->first())))) );
 
-        BOOST_CHECK_EQUAL(p->last(), pi3.get());
-        BOOST_CHECK_EQUAL(p->prev(p->last()), pi2.get());
-        BOOST_CHECK_EQUAL(p->prev(p->prev(p->last())), pi1.get());
-        BOOST_CHECK( !p->prev(p->prev(p->prev(p->last()))) );
+        BOOST_CHECK_EQUAL(p->last(), pi4.get());
+        BOOST_CHECK_EQUAL(p->prev(p->last()), pi3.get());
+        BOOST_CHECK_EQUAL(p->prev(p->prev(p->last())), pi2.get());
+        BOOST_CHECK_EQUAL(p->prev(p->prev(p->prev(p->last()))), pi1.get());
+        BOOST_CHECK( !p->prev(p->prev(p->prev(p->prev(p->last())))) );
 
         p->insert(&pi2->data(),p->begin(),10,0x00u);
         BOOST_CHECK_EQUAL(pi1->data().size(), 10u);
@@ -180,12 +191,12 @@ BOOST_AUTO_UNIT_TEST(packetImpl_interpreters)
         BOOST_CHECK( pi1->data().begin() == p->begin() );
         BOOST_CHECK( pi2->data().begin() == p->begin() );
         BOOST_CHECK( pi3->data().begin() == p->end() );
-        
+
         p->insert(&pi3->data(),p->end(), 0x00u);
         BOOST_CHECK_EQUAL(pi1->data().size(), 11u);
         BOOST_CHECK_EQUAL(pi2->data().size(), 11u);
         BOOST_CHECK_EQUAL(pi3->data().size(), 1u);
-        
+
         p->insert(&pi1->data(),p->end(), 2, 0x00u);
         BOOST_CHECK_EQUAL(pi1->data().size(), 13u);
         BOOST_CHECK_EQUAL(pi2->data().size(), 11u);
@@ -207,7 +218,7 @@ BOOST_AUTO_UNIT_TEST(packetImpl_interpreters)
 #endif
 }
 
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 
 \f