From 11acd2bf7716b6a4fcb8f5de177b031dc196d27a Mon Sep 17 00:00:00 2001
From: dw6 <dw6@wiback.org>
Date: Wed, 19 Sep 2007 16:00:00 +0000
Subject: [PATCH] removed some errors, added basic unit tests

---
 Socket/Protocols/UN/UNAddress.cc              |  11 +++-
 Socket/Protocols/UN/UNAddress.hh              |   7 +-
 Socket/Protocols/UN/UNAddress.test.cc         |  59 +++++++++++++++++
 Socket/Protocols/UN/UNAddressing.cc           |   2 +-
 Socket/Protocols/UN/UNAddressing.hh           |  13 ++--
 Socket/Protocols/UN/UNAddressing.o            | Bin 0 -> 129324 bytes
 Socket/Protocols/UN/UNAddressing.test.cc      |  61 ++++++++++++++++++
 Socket/Protocols/UN/UNAddressing.test.cc~     |  61 ++++++++++++++++++
 Socket/Protocols/UN/UNDatagramSocketHandle.hh |   2 +-
 .../UN/UNDatagramSocketHandle.test.cc         |  56 ++++++++++++++++
 Socket/Protocols/UN/UNProtocol.cc             |   4 +-
 Socket/Protocols/UN/UNProtocol.test.cc        |  54 ++++++++++++++++
 Socket/Protocols/UN/main.test.cc              |  49 ++++++++++++++
 13 files changed, 362 insertions(+), 17 deletions(-)
 create mode 100644 Socket/Protocols/UN/UNAddress.test.cc
 create mode 100644 Socket/Protocols/UN/UNAddressing.o
 create mode 100644 Socket/Protocols/UN/UNAddressing.test.cc
 create mode 100644 Socket/Protocols/UN/UNAddressing.test.cc~
 create mode 100644 Socket/Protocols/UN/UNDatagramSocketHandle.test.cc
 create mode 100644 Socket/Protocols/UN/UNProtocol.test.cc
 create mode 100644 Socket/Protocols/UN/main.test.cc

diff --git a/Socket/Protocols/UN/UNAddress.cc b/Socket/Protocols/UN/UNAddress.cc
index 870f2b984..70aab9a96 100644
--- a/Socket/Protocols/UN/UNAddress.cc
+++ b/Socket/Protocols/UN/UNAddress.cc
@@ -36,9 +36,8 @@ prefix_ senf::UNAddress::UNAddress()
 }
 
 prefix_ senf::UNAddress::UNAddress(boost::filesystem::path p)
-    //:path(p)
 {
-    
+    path = p; 
 }
 
 
@@ -52,12 +51,18 @@ prefix_ senf::UNAddress::UNAddress senf::UNAddress::fromPath(boost::filesystem::
 }
 
 prefix_  std::string senf::UNAddress::pathString()
+    const
 {
     return  path.string();
 }
 
+prefix_ senf::UNAddress::UNAddress senf::UNAddress::clone()
+{
+    senf::UNAddress::UNAddress local_addr = senf::UNAddress::UNAddress(pathString());
+    return  local_addr;
+}
 
-prefix_ const std::ostream & senf::operator<<(std::ostream & os, UNAddress const & addr)
+prefix_ std::ostream & senf::operator<<(std::ostream & os, UNAddress const & addr)
 {
     os << addr.pathString();
     return os;
diff --git a/Socket/Protocols/UN/UNAddress.hh b/Socket/Protocols/UN/UNAddress.hh
index 67a7061ac..e5cb5f2a6 100644
--- a/Socket/Protocols/UN/UNAddress.hh
+++ b/Socket/Protocols/UN/UNAddress.hh
@@ -48,16 +48,17 @@ namespace senf {
         explicit UNAddress(boost::filesystem::path);///< Construct an address constant from given path
         static UNAddress fromString(std::string & s); ///< Convert string to address by interpreting the string as path
         static UNAddress fromPath(boost::filesystem::path & p);///< Convert path to address 
-        static std::string pathString(); ///< Return the path of the address as string
+        UNAddress clone(); ///< Clone object 
+        std::string pathString() const; ///< Return the path of the address as string
 
         /** \brief Base-class for UNAddress exceptions */
         struct AddressException : public std::exception {}; 
 
     private:
-        static boost::filesystem::path path;
+        boost::filesystem::path path;
     };
-const std::ostream & operator<<(std::ostream & os, UNAddress const & addr);
 
+std::ostream & operator<<(std::ostream & os, UNAddress const & addr);
 }
 
 ///////////////////////////////hh.e////////////////////////////////////////
diff --git a/Socket/Protocols/UN/UNAddress.test.cc b/Socket/Protocols/UN/UNAddress.test.cc
new file mode 100644
index 000000000..d6ade16bd
--- /dev/null
+++ b/Socket/Protocols/UN/UNAddress.test.cc
@@ -0,0 +1,59 @@
+// $Id$
+//
+// Copyright (C) 2007 
+//
+// 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.
+//
+// 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.
+//
+// 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.
+
+/** \file
+    \brief UNAddress.test unit tests */
+
+//#include "UNAddress.test.hh"
+//#include "UNAddress.test.ih"
+
+// Custom includes
+#include "UNAddress.hh"
+#include <boost/filesystem/path.hpp>
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#include <iostream>
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+BOOST_AUTO_UNIT_TEST(unAddress)
+{
+    // das koennt sicher mehr sein...
+    std::string testS = "/tmp/senfTestSocket";
+    boost::filesystem::path testp = boost::filesystem::path(testS); 
+    senf::UNAddress addr1 = senf::UNAddress::fromString(testS);
+    senf::UNAddress addr2 = senf::UNAddress::fromPath(testp);
+    BOOST_CHECK( testS == addr1.pathString());
+    BOOST_CHECK( testS == addr2.pathString());
+}
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
diff --git a/Socket/Protocols/UN/UNAddressing.cc b/Socket/Protocols/UN/UNAddressing.cc
index abc278f37..ce957e4b1 100644
--- a/Socket/Protocols/UN/UNAddressing.cc
+++ b/Socket/Protocols/UN/UNAddressing.cc
@@ -55,6 +55,7 @@ prefix_ senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path p)
     return senf::UNSocketAddress::UNSocketAddress(p);
 }
     prefix_ std::string senf::UNSocketAddress::path()
+        const
 {
     return std::string(sockAddr.sun_path);
 }
@@ -80,7 +81,6 @@ prefix_ sockaddr const  * senf::UNSocketAddress::sockaddr_p()
 }
 
 prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
-    const
 {
     return sizeof(sockAddr);
 }
diff --git a/Socket/Protocols/UN/UNAddressing.hh b/Socket/Protocols/UN/UNAddressing.hh
index 25b02d96b..f30cfdd82 100644
--- a/Socket/Protocols/UN/UNAddressing.hh
+++ b/Socket/Protocols/UN/UNAddressing.hh
@@ -42,7 +42,7 @@
 namespace senf {
     /** \brief Unix domain socket address
 
-        UNSocketAddress wraps the standard sockaddr_in datatype. It provides simple accessor methods
+        UNSocketAddress wraps the standard sockaddr_un datatype. It provides simple accessor methods
         to access the path. 
         
         \implementation This implementation is based on sockaddr_un.
@@ -59,14 +59,13 @@ namespace senf {
                                         ///< Construct an address constant from given path
         static UNSocketAddress from_string(std::string const s); ///< Create UNSocketAddress from string
         static UNSocketAddress from_path(boost::filesystem::path const p); ///< Create UNSocketAddress from path
-        static std::string path();  ///< Return path as string
-        static sockaddr_un sockaddr(); 
-
-        struct sockaddr * sockaddr_p();
+        std::string path() const ;  ///< Return path as string
+        struct sockaddr_un sockaddr(); 
+        struct sockaddr * sockaddr_p() ;
         struct sockaddr const * sockaddr_p() const;
-        unsigned sockaddr_len() const;
+        unsigned sockaddr_len();
     private:
-        static struct sockaddr_un sockAddr;
+        struct sockaddr_un sockAddr;
     };
 
     /** \brief Write path  os
diff --git a/Socket/Protocols/UN/UNAddressing.o b/Socket/Protocols/UN/UNAddressing.o
new file mode 100644
index 0000000000000000000000000000000000000000..417b79b4e549314c9bb9bcebcfc7acff861e6872
GIT binary patch
literal 129324
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
P{$nF$^aq>B(Z>8A@V2Tc

literal 0
HcmV?d00001

diff --git a/Socket/Protocols/UN/UNAddressing.test.cc b/Socket/Protocols/UN/UNAddressing.test.cc
new file mode 100644
index 000000000..b3b76e80f
--- /dev/null
+++ b/Socket/Protocols/UN/UNAddressing.test.cc
@@ -0,0 +1,61 @@
+// $Id$
+//
+// Copyright (C) 2007 
+//
+// 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.
+//
+// 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.
+//
+// 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.
+
+/** \file
+    \brief UNAddressing.test unit tests */
+
+//#include "UNAddressing.test.hh"
+//#include "UNAddressing.test.ih"
+
+// Custom includes
+#include "UNAddressing.hh"
+
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+BOOST_AUTO_UNIT_TEST(unSocketAddress)
+{
+    std::string testS = "/tmp/senfTestSocket";
+    senf::UNSocketAddress addr (testS) ; 
+    int mySock = socket(AF_UNIX, SOCK_DGRAM, 0); 
+    if (bind(mySock, addr.sockaddr_p(), addr.sockaddr_len())) { 
+        std::cout << "Error while binding name to unix socket" << std::endl;
+    }
+
+}
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
diff --git a/Socket/Protocols/UN/UNAddressing.test.cc~ b/Socket/Protocols/UN/UNAddressing.test.cc~
new file mode 100644
index 000000000..7f224cfec
--- /dev/null
+++ b/Socket/Protocols/UN/UNAddressing.test.cc~
@@ -0,0 +1,61 @@
+// $Id$
+//
+// Copyright (C) 2007 
+//
+// 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.
+//
+// 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.
+//
+// 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.
+
+/** \file
+    \brief UNAddressing.test unit tests */
+
+//#include "UNAddressing.test.hh"
+//#include "UNAddressing.test.ih"
+
+// Custom includes
+#include "UNAddressing.hh"
+
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+BOOST_AUTO_UNIT_TEST(unSocketAddress)
+{
+    std::string testS = "/tmp/senfTestSocket";
+    senf::UNSocketAddress addr (testS) ; 
+    mySock = socket(AF_UNIX, SOCK_DGRAM, 0); 
+    if (bind(mySock, addr.sockaddr_p(), addr.sockaddr_len())) { 
+        std::cout << "Error while binding name to unix socket" std::endl;
+    }
+
+}
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
diff --git a/Socket/Protocols/UN/UNDatagramSocketHandle.hh b/Socket/Protocols/UN/UNDatagramSocketHandle.hh
index 458a9589e..0956525a2 100644
--- a/Socket/Protocols/UN/UNDatagramSocketHandle.hh
+++ b/Socket/Protocols/UN/UNDatagramSocketHandle.hh
@@ -110,7 +110,7 @@ namespace senf {
     typedef MakeSocketPolicy<
         UNDatagramSocket_Policy,
         UNAddressingPolicy
-        >::policy UDPv6Socket_Policy;
+        >::policy UNDatagramSocket_Policy;
 }
 ///////////////////////////////hh.e////////////////////////////////////////
 //#include "UNDatagramSocketHandle.cci"
diff --git a/Socket/Protocols/UN/UNDatagramSocketHandle.test.cc b/Socket/Protocols/UN/UNDatagramSocketHandle.test.cc
new file mode 100644
index 000000000..d6485740b
--- /dev/null
+++ b/Socket/Protocols/UN/UNDatagramSocketHandle.test.cc
@@ -0,0 +1,56 @@
+// $Id$
+//
+// Copyright (C) 2007 
+//
+// 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.
+//
+// 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.
+//
+// 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.
+
+/** \file
+    \brief UNDatagramSocketHandle.test unit tests */
+
+//#include "UNDatagramSocketHandle.test.hh"
+//#include "UNDatagramSocketHandle.test.ih"
+
+// Custom includes
+#include "UNDatagramSocketHandle.hh"
+
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+BOOST_AUTO_UNIT_TEST(unDatagramSocketHandle)
+{
+    std::string testS = "/tmp/senfTestSocket";
+    senf::UNSocketAddress addr (testS) ; 
+    //senf::UNDatagramSocketHandle init_client(addr); 
+    senf::UNDatagramClientSocketHandle inputSocket(senf::UNSocketAddress(tests));
+}
+
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
diff --git a/Socket/Protocols/UN/UNProtocol.cc b/Socket/Protocols/UN/UNProtocol.cc
index d3afe3f38..d04192d91 100644
--- a/Socket/Protocols/UN/UNProtocol.cc
+++ b/Socket/Protocols/UN/UNProtocol.cc
@@ -33,14 +33,14 @@
 prefix_ void senf::UNProtocol::connect(UNSocketAddress const & address) 
     const 
 {
-    if(::connect(body().fd(),  address.sockaddr_p(), sizeof(address.sockaddr())) < 0)
+    if(::connect(body().fd(), address.sockaddr_p(), sizeof(sockaddr_un)) < 0)
         throw SystemException(errno);
 }
 
 prefix_ void senf::UNProtocol::bind(UNSocketAddress const & address) 
     const 
 {
-    if(::bind(body().fd(), address.sockaddr_p(), sizeof(address.sockaddr())) < 0)
+    if(::bind(body().fd(), address.sockaddr_p(), sizeof(sockaddr_un)) < 0)
         throw SystemException(errno);
 }
 
diff --git a/Socket/Protocols/UN/UNProtocol.test.cc b/Socket/Protocols/UN/UNProtocol.test.cc
new file mode 100644
index 000000000..5ab47b6fc
--- /dev/null
+++ b/Socket/Protocols/UN/UNProtocol.test.cc
@@ -0,0 +1,54 @@
+// $Id$
+//
+// Copyright (C) 2007 
+//
+// 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.
+//
+// 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.
+//
+// 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.
+
+/** \file
+    \brief UNProtocol.test unit tests */
+
+//#include "UNProtocol.test.hh"
+//#include "UNProtocol.test.ih"
+
+// Custom includes
+#include "UNProtocol.hh"
+
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+BOOST_AUTO_UNIT_TEST(unProtocol)
+{
+    std::string testS = "/tmp/senfTestSocket";
+    //zZ leer
+}
+
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
diff --git a/Socket/Protocols/UN/main.test.cc b/Socket/Protocols/UN/main.test.cc
new file mode 100644
index 000000000..91e601da2
--- /dev/null
+++ b/Socket/Protocols/UN/main.test.cc
@@ -0,0 +1,49 @@
+// $Id: main.test.cc 296 2007-07-10 20:39:34Z g0dil $
+//
+// Copyright (C) 2006
+// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
+// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+//     Stefan Bund <stefan.bund@fokus.fraunhofer.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.
+//
+// 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.
+//
+// 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.
+
+// Definition of non-inline non-template functions
+
+//#include "test.hh"
+//#include "test.ih"
+
+// Custom includes
+#define BOOST_AUTO_TEST_MAIN
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/test/test_tools.hpp>
+
+#define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
+
+
+///////////////////////////////cc.e////////////////////////////////////////
+#undef prefix_
+
+
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
+// End:
-- 
GitLab