summaryrefslogtreecommitdiff
path: root/sal/qa/osl/socket/osl_SocketAddr.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/qa/osl/socket/osl_SocketAddr.cxx')
-rw-r--r--sal/qa/osl/socket/osl_SocketAddr.cxx855
1 files changed, 0 insertions, 855 deletions
diff --git a/sal/qa/osl/socket/osl_SocketAddr.cxx b/sal/qa/osl/socket/osl_SocketAddr.cxx
deleted file mode 100644
index 99aa7d09c19a..000000000000
--- a/sal/qa/osl/socket/osl_SocketAddr.cxx
+++ /dev/null
@@ -1,855 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.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://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-/** test coder preface:
- 1. the BSD socket function will meet "unresolved external symbol error" on Windows platform
- if you are not including ws2_32.lib in makefile.mk, the including format will be like this:
-
- .IF "$(OS)" == "WNT"
- SHL1STDLIBS += $(SOLARLIBDIR)$/cppunit.lib
- SHL1STDLIBS += ws2_32.lib
- .ENDIF
-
- likewise on Solaris platform.
- .IF "$(OS)" != "WNT"
- SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a
- SHL1STDLIBS += -lsocket -ldl -lnsl
- .ENDIF
-
- 2. since the Socket implementation of osl is only IPv4 oriented, our test are mainly focus on IPv4
- category.
-
- 3. some fragment of Socket source implementation are lack of comment so it is hard for testers
- guess what the exact functionality or usage of a member. Hope the Socket section's comment
- will be added.
-
- 4. following functions are declared but not implemented:
- inline sal_Bool SAL_CALL operator== (const SocketAddr & Addr) const;
- */
-
-#include <sal/types.h>
-#include <cppunit/TestFixture.h>
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/plugin/TestPlugIn.h>
-
-#include "sockethelper.hxx"
-
-using namespace osl;
-
-using ::rtl::OUString;
-using ::rtl::OUStringToOString;
-using ::rtl::OString;
-
-#define IP_PORT_ZERO 0
-#define IP_PORT_FTP 21
-#define IP_PORT_TELNET 23
-#define IP_PORT_HTTP1 80
-#define IP_PORT_HTTP2 8080
-
-#define IP_PORT_MYPORT 8881 //8888
-#define IP_PORT_MYPORT2 8883 //8890
-#define IP_PORT_MYPORT3 8884 //8891
-#define IP_PORT_INVAL 99999
-#define IP_PORT_MYPORT4 8885 //8892
-#define IP_PORT_NETBIOS_DGM 138
-
-namespace osl_SocketAddr
-{
-
- /** testing the methods:
- inline SocketAddr();
- inline SocketAddr(const SocketAddr& Addr);
- inline SocketAddr(const oslSocketAddr , __osl_socket_NoCopy nocopy );
- inline SocketAddr(oslSocketAddr Addr);
- inline SocketAddr( const ::rtl::OUString& strAddrOrHostName, sal_Int32 nPort );
- */
-
- class ctors : public CppUnit::TestFixture
- {
- public:
-
- void ctors_none()
- {
- /// SocketAddr constructor.
- ::osl::SocketAddr saSocketAddr;
-
- // oslSocketResult aResult;
- // rtl::OUString suHost = saSocketAddr.getLocalHostname( &aResult);
-
- // rtl::OUString suHost2 = getThisHostname();
-
- CPPUNIT_ASSERT_MESSAGE("test for none parameter constructor function: check if the socket address was created successfully",
- sal_True == saSocketAddr.is( ) );
- }
-
- void ctors_none_000()
- {
- /// SocketAddr constructor.
- ::osl::SocketAddr saSocketAddr;
-
- oslSocketResult aResult;
- rtl::OUString suHost = saSocketAddr.getLocalHostname( &aResult);
- rtl::OUString suHost2 = getThisHostname();
-
- sal_Bool bOk = compareUString(suHost, suHost2);
-
- rtl::OUString suError ("Host names should be the same. From SocketAddr.getLocalHostname() it is'");
- suError += suHost;
- suError += rtl::OUString("', from getThisHostname() it is '");
- suError += suHost2;
- suError += rtl::OUString("'.");
-
- CPPUNIT_ASSERT_MESSAGE(STD_STRING(suError), sal_True == bOk);
- }
-
- void ctors_copy()
- {
- /// SocketAddr copy constructor.
- ::osl::SocketAddr saSocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- ::osl::SocketAddr saCopySocketAddr( saSocketAddr );
-
- sal_Int32 nPort = saCopySocketAddr.getPort( );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr copy constructor function: copy constructor, do an action of copy construction then check the port with original set.",
- ( sal_True == saCopySocketAddr.is( ) ) && ( nPort == IP_PORT_HTTP1 ) );
- }
-
- void ctors_copy_no_001()
- {
- ::osl::SocketAddr* pSocketAddr = new ::osl::SocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- CPPUNIT_ASSERT_MESSAGE("check for new SocketAddr", pSocketAddr != NULL);
-
- oslSocketAddr psaOSLSocketAddr = pSocketAddr->getHandle( );
-
- ::osl::SocketAddr* pSocketAddrCopy = new ::osl::SocketAddr( psaOSLSocketAddr, SAL_NO_COPY );
-
- pSocketAddrCopy->setPort( IP_PORT_HTTP2 );
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr no copy constructor function: do a no copy constructor on a given SocketAddr instance, modify the new instance's port, check the original one.",
- pSocketAddr->getPort( ) == IP_PORT_HTTP2 );
-
- delete pSocketAddrCopy;
- // LLA: don't do this also: delete pSocketAddr;
- }
-
- void ctors_copy_no_002()
- {
- ::osl::SocketAddr* pSocketAddr = new ::osl::SocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- CPPUNIT_ASSERT_MESSAGE("check for new SocketAddr", pSocketAddr != NULL);
- oslSocketAddr psaOSLSocketAddr = pSocketAddr->getHandle( );
- ::osl::SocketAddr* pSocketAddrCopy = new ::osl::SocketAddr( psaOSLSocketAddr, SAL_NO_COPY );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr no copy constructor function: do a no copy constructor on a given SocketAddr instance, modify the new instance's port, check the original one.",
- pSocketAddr->getHandle( ) == pSocketAddrCopy->getHandle( ) );
-
- delete pSocketAddrCopy;
- }
-
- void ctors_copy_handle_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- ::osl::SocketAddr saSocketAddrCopy( saSocketAddr.getHandle( ) );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr copy handle constructor function: copy another Socket's handle, get its port to check copy effect.",
- saSocketAddrCopy.getPort( ) == IP_PORT_HTTP1 );
- }
-
- void ctors_copy_handle_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- ::osl::SocketAddr saSocketAddrCopy( saSocketAddr.getHandle( ) );
- saSocketAddrCopy.setPort( IP_PORT_HTTP2 );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr copy handle constructor function: copy another Socket's handle, the original one should not be changed.",
- saSocketAddr.getPort( ) != IP_PORT_HTTP2 );
- }
-
- void ctors_hostname_port_001()
- {
- /// tcpip-specific constructor.
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP );
- printUString( saSocketAddr.getHostname( ), "ctors_hostname_port_001:getHostname");
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr tcpip specificy constructor function: do a constructor using tcpip spec, check the result.",
- saSocketAddr.is( ) == sal_True &&
- ( saSocketAddr.getPort( ) == IP_PORT_FTP )
- );
- }
-
- //same as is_002
- void ctors_hostname_port_002()
- {
- /// tcpip-specific constructor.
- ::osl::SocketAddr saSocketAddr( rtl::OUString("123.345.67.89"), IP_PORT_MYPORT2 );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr tcpip specificy constructor function: using an invalid IP address, the socketaddr ctors should fail", sal_False == saSocketAddr.is( ));
- }
- CPPUNIT_TEST_SUITE( ctors );
- CPPUNIT_TEST( ctors_none );
- CPPUNIT_TEST( ctors_none_000 );
- CPPUNIT_TEST( ctors_copy );
- CPPUNIT_TEST( ctors_copy_no_001 );
- CPPUNIT_TEST( ctors_copy_no_002 );
- CPPUNIT_TEST( ctors_copy_handle_001 );
- CPPUNIT_TEST( ctors_copy_handle_002 );
- CPPUNIT_TEST( ctors_hostname_port_001 );
- CPPUNIT_TEST( ctors_hostname_port_002 );
- CPPUNIT_TEST_SUITE_END();
-
- }; // class ctors
-
- /** testing the method:
- inline sal_Bool is() const;
- */
-
- class is : public CppUnit::TestFixture
- {
- public:
- void is_001()
- {
- ::osl::SocketAddr saSocketAddr;
-
- CPPUNIT_ASSERT_MESSAGE("test for is() function: create an unknown type socket, it should be True when call is.",
- sal_True == saSocketAddr.is( ) );
- }
- // refer to setPort_003()
- void is_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_INVAL );
-
- CPPUNIT_ASSERT_MESSAGE("test for is() function: create a tcp-ip socket using invalid port number",
- sal_True == saSocketAddr.is( ) );
- }
-
- void is_003()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("123.345.67.89"), IP_PORT_MYPORT );
-
- CPPUNIT_ASSERT_MESSAGE("test for is() function: create a tcp-ip socket using invalid Ip number",
- sal_True != saSocketAddr.is( ) );
- }
-
- CPPUNIT_TEST_SUITE( is );
- CPPUNIT_TEST( is_001 );
- CPPUNIT_TEST( is_002 );
- CPPUNIT_TEST( is_003 );
- CPPUNIT_TEST_SUITE_END();
-
- }; // class is
-
- /** testing the method:
- inline ::rtl::OUString SAL_CALL getHostname( oslSocketResult *pResult = 0 ) const;
- */
-
- class getHostname : public CppUnit::TestFixture
- {
- public:
- void setUp()
- {
- }
-
- void tearDown()
- {
- }
-
- void getHostname_000()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.107"), IP_PORT_FTP );
- rtl::OUString suResult = saSocketAddr.getHostname( 0 );
-
- }
-
- /** it will search the Ip in current machine's /etc/hosts at first, if find, then return the
- mapped hostname, otherwise, it will search via DNS server, and often return hostname+ Domain name
- like "sceri.PRC.Sun.COM"
- The process is same as Socket::getLocalHost(), but getLocalHost can only return hostname of the current machine.
- */
- void getHostname_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.107"), IP_PORT_FTP );
- rtl::OUString suResult = saSocketAddr.getHostname( 0 );
- rtl::OUString suError = outputError(suResult, rtl::OUString("sceri.PRC.Sun.COM"), "test for getHostname(0)");
- sal_Bool bOK = compareUString( suResult, rtl::OUString("sceri.PRC.Sun.COM") );
- // search the returned hostname in /etc/hosts, if find, and the IP in the row is same as IP
- // in the Addr, it's right also.
- if ( bOK == sal_False)
- {
- rtl::OString aString = ::rtl::OUStringToOString( suResult, RTL_TEXTENCODING_ASCII_US );
- if ( compareUString( getIPbyName( aString ), rtl::OUString("129.158.217.107") ) == sal_True )
- bOK = sal_True;
- }
- CPPUNIT_ASSERT_MESSAGE( STD_STRING(suError), sal_True == bOK);
- }
-
-// LLA: now we have to control, if this behaviour is right.
-// LLA: this function does not work in company (Linux, Windows) but at home
- void getHostname_002()
- {
- rtl::OUString suHostname ("cn-1.germany.sun.com");
- rtl::OString aString = ::rtl::OUStringToOString( suHostname, RTL_TEXTENCODING_ASCII_US );
- rtl::OUString aHostIP = getIPbyName( aString );
-
- ::osl::SocketAddr saSocketAddr( rtl::OUString("localhost"), IP_PORT_FTP );
- sal_Bool bOK = saSocketAddr.setHostname( suHostname );
- CPPUNIT_ASSERT_MESSAGE("#SocketAddr.setHostname failed", sal_True == bOK );
- oslSocketResult aResult;
- rtl::OUString suResult = saSocketAddr.getHostname( &aResult );
- CPPUNIT_ASSERT_MESSAGE("SocketAddr.getHostname failed.", aResult == osl_Socket_Ok);
-
- rtl::OUString suError = outputError(suResult, suHostname, "test for getHostname(0)");
- bOK = compareUString( suResult, suHostname );
- if ( bOK == sal_False)
- {
- rtl::OString aStringResult = ::rtl::OUStringToOString( suResult, RTL_TEXTENCODING_ASCII_US );
- rtl::OString aStringHostname = ::rtl::OUStringToOString( suHostname, RTL_TEXTENCODING_ASCII_US );
- if ( compareUString( getIPbyName( aStringResult ) , getIPbyName( aStringHostname ) ) == sal_True )
- {
- bOK = sal_True;
- }
- }
-
- CPPUNIT_ASSERT_MESSAGE( STD_STRING(suError), sal_True == bOK );
- }
-
- CPPUNIT_TEST_SUITE( getHostname );
- CPPUNIT_TEST( getHostname_001 );
- CPPUNIT_TEST( getHostname_002 );
- CPPUNIT_TEST_SUITE_END();
-
- }; // class getHostname
-
- /** testing the method:
- inline sal_Int32 SAL_CALL getPort() const;
- */
-
- class getPort : public CppUnit::TestFixture
- {
- public:
- void getPort_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP );
-
- CPPUNIT_ASSERT_MESSAGE( "test for getPort() function: get a normal port number.",
- IP_PORT_FTP == saSocketAddr.getPort( ) );
- }
-
- void getPort_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.202"), IP_PORT_INVAL );
-
- //t_print("#getPort_002: Port number is %d \n", saSocketAddr.getPort( ));
-
- CPPUNIT_ASSERT_MESSAGE( "test for getPort( ) function: give an invalid port to a SocketAddr, get the port to see if it can detect. it did not pass in (W32).",
- saSocketAddr.getPort( )>=1 && saSocketAddr.getPort( ) <= 65535 );
- }
- //two cases will return OSL_INVALID_PORT: 1. not valid SocketAddr
- //2. SocketAddr family is not osl_Socket_FamilyInet, but case 2 could not be constructed
- void getPort_003()
- {
- rtl::OUString suInvalidIP ("123.345.67.89");
- ::osl::SocketAddr saSocketAddr( suInvalidIP, IP_PORT_MYPORT );
-
- CPPUNIT_ASSERT_MESSAGE( "test for getPort( ) function: give an invalid IP to a SocketAddr, get the port to see returned value. ",
- saSocketAddr.getPort( ) == OSL_INVALID_PORT );
- }
-
- CPPUNIT_TEST_SUITE( getPort );
- CPPUNIT_TEST( getPort_001 );
- CPPUNIT_TEST( getPort_002 );
- CPPUNIT_TEST( getPort_003 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class getPort
-
- /** testing the method:
- inline sal_Bool SAL_CALL setPort( sal_Int32 nPort );
- rfc1413.txt: TCP port numbers are from 1-65535
- rfc1700.txt: 0/tcp Reserved ; 0/udp Reserved
- */
-
- class setPort : public CppUnit::TestFixture
- {
- public:
- void setPort_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP );
- sal_Bool bOK = saSocketAddr.setPort( IP_PORT_TELNET );
-
- CPPUNIT_ASSERT_MESSAGE( "test for setPort() function: modify a port number setting, and check it.",
- ( sal_True == bOK ) &&
- ( IP_PORT_TELNET == saSocketAddr.getPort( ) ) );
- }
-
- /** 0 to 1024 is known as the reserved port range (traditionally only root can assign programs to ports in
- this range) and the ephemeral port range from 1025 to 65535.
- As many of you programmers will know, when you specify the source port of 0 when you connect to a host,
- the OS automatically reassigns the port number to high numbered ephemeral port. The same happens if you
- try to bind a listening socket to port 0.
- http://www.securiteam.com/securityreviews/5XP0Q2AAKS.html
- another: http://www.muq.org/~cynbe/muq/mufref_564.html
- */
- void setPort_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP );
- sal_Bool bOK = saSocketAddr.setPort( IP_PORT_ZERO );
-
- oslSocket sHandle = osl_createSocket( osl_Socket_FamilyInet, osl_Socket_TypeStream, osl_Socket_ProtocolIp );
- ::osl::Socket sSocket(sHandle);
- sSocket.setOption( osl_Socket_OptionReuseAddr, 1 );//sal_True);
- sal_Bool bOK1 = sSocket.bind( saSocketAddr );
- CPPUNIT_ASSERT_MESSAGE( "bind SocketAddr failed", bOK1 == sal_True );
-
- sal_Int32 newPort = sSocket.getLocalPort();
- //t_print("#new port is %d\n", newPort );
-
- CPPUNIT_ASSERT_MESSAGE( "test for setPort() function: port number should be in 1 ~ 65535, set port 0, it should be converted to a port number between 1024~65535.",
- ( 1024 <= newPort ) && ( 65535 >= newPort ) && ( bOK == sal_True ) );
-
- }
-
- void setPort_003()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP);
- sal_Bool bOK = saSocketAddr.setPort( IP_PORT_INVAL );
- //on Linux, getPort return 34463
- //t_print("#Port number is %d \n", saSocketAddr.getPort( ));
-
- CPPUNIT_ASSERT_MESSAGE( "test for setPort( ) function: set an address with invalid port. it should return error or convert it to a valid port.",
- ( ( 1 <= saSocketAddr.getPort( ) ) && ( 65535 >= saSocketAddr.getPort( ) ) &&( bOK == sal_True ) ) ||
- bOK == sal_False);
- }
-
- /* this is not a inet-addr => can't set port */
- void setPort_004()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("123.345.67.89"), IP_PORT_FTP);
- sal_Bool bOK = saSocketAddr.setPort( IP_PORT_MYPORT );
-
- CPPUNIT_ASSERT_MESSAGE( "test for setPort( ) function: set an invalid address with valid port. it should return error.",
- bOK == sal_False);
- }
-
- CPPUNIT_TEST_SUITE( setPort );
- CPPUNIT_TEST( setPort_001 );
- CPPUNIT_TEST( setPort_002 );
- CPPUNIT_TEST( setPort_003 );
- CPPUNIT_TEST( setPort_004 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class setPort
-
- /** tester comment:
-
- In the following two functions, it use ::rtl::ByteSequence as an intermediate storage for address,
- the ByteSequence object can hold sal_Int8 arrays, which is raged [-127, 127], in case of IP addr
- that is greater than 127, say 129.158.217.202, it will stored as -127, -98, -39, -54, it is unique
- in the range of sal_Int8, but lack of readability.
- so may be a sal_uInt8 array is better.
- */
-
- /** testing the method:
- inline sal_Bool SAL_CALL setAddr( const ::rtl::ByteSequence & address );
- */
-
- class setAddr : public CppUnit::TestFixture
- {
- public:
- void setAddr_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
- saSocketAddr.setAddr( UStringIPToByteSequence( rtl::OUString("127.0.0.1") ) );
- ::rtl::ByteSequence bsSocketAddr = saSocketAddr.getAddr( 0 );
- sal_Bool bOK = sal_False;
-
- // if ( ( bsSocketAddr[0] == 127 ) && ( bsSocketAddr[1] == 0 ) && ( bsSocketAddr[2] == 0 ) && ( bsSocketAddr[3] == 1 ) )
- // bOK = sal_True;
- bOK = ifIpv4is( bsSocketAddr, 127, 0, 0, 1 );
-
- CPPUNIT_ASSERT_MESSAGE( "test for setAddr() function: construct Addr with \"129.158.217.202\", set it to \"127.0.0.1\", and check the correctness ",
- sal_True == bOK );
- }
-
- CPPUNIT_TEST_SUITE( setAddr );
- CPPUNIT_TEST( setAddr_001 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class setAddr
-
- /** testing the method:
- inline ::rtl::ByteSequence SAL_CALL getAddr( oslSocketResult *pResult = 0 ) const;
- */
-
- class getAddr : public CppUnit::TestFixture
- {
- public:
- void getAddr_001()
- {
- oslSocketResult SocketResult;
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_FTP );
- ::rtl::ByteSequence bsSocketAddr = saSocketAddr.getAddr( &SocketResult );
-
- sal_Bool bOK = sal_False;
-
- //if ( ( osl_Socket_Ok == SocketResult ) &&( bsSocketAddr[0] == 127 ) && ( bsSocketAddr[1] == 0 ) &&( bsSocketAddr[2] == 0 ) && ( bsSocketAddr[3] == 1 ) )
- // bOK = sal_True;
- bOK = ifIpv4is( bsSocketAddr, 127, 0, 0, 1 );
-
- CPPUNIT_ASSERT_MESSAGE( "test for getAddr() function: construct a socketaddr with IP assigned, get the address to check correctness.Caught unknown exception on (Win32)",
- sal_True == bOK && SocketResult == osl_Socket_Ok);
- }
-
- CPPUNIT_TEST_SUITE( getAddr );
- CPPUNIT_TEST( getAddr_001 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class getAddr
-
- /** testing the methods:
- inline SocketAddr & SAL_CALL operator= (oslSocketAddr Addr);
- inline SocketAddr & SAL_CALL operator= (const SocketAddr& Addr);
- inline SocketAddr & SAL_CALL assign( oslSocketAddr Addr, __osl_socket_NoCopy nocopy );
- inline sal_Bool SAL_CALL operator== (oslSocketAddr Addr) const;
- inline sal_Bool SAL_CALL operator== (const SocketAddr & Addr) const; /// not implemented.
- */
-
- class operator_equal : public CppUnit::TestFixture
- {
- public:
- void operator_equal_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_TELNET);
- ::osl::SocketAddr saSocketAddrEqual( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
-
- saSocketAddrEqual = saSocketAddr;
- sal_Bool bOK = sal_False;
- ::rtl::ByteSequence bsSocketAddr = saSocketAddrEqual.getAddr( 0 );
-
- // if ( ( IP_PORT_TELNET == saSocketAddrEqual.getPort( ) ) &&( bsSocketAddr[0] == 127 ) && ( bsSocketAddr[1] == 0 ) &&( bsSocketAddr[2] == 0 ) && ( bsSocketAddr[3] == 1 ) )
- if ( ( IP_PORT_TELNET == saSocketAddrEqual.getPort( ) ) && ( ifIpv4is( bsSocketAddr, 127, 0, 0, 1 ) == sal_True ) )
- bOK = sal_True;
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal() function: use operator= to assign Ip1 to Ip2, check its modification.",
- sal_True == bOK );
- }
-
- void operator_equal_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.199"), IP_PORT_TELNET);
- ::osl::SocketAddr saSocketAddrEqual( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
-
- saSocketAddrEqual = saSocketAddr;
- CPPUNIT_ASSERT_MESSAGE( "after assign, the assigned SocketAddr is not same as the original Addr",
- IP_PORT_TELNET == saSocketAddrEqual.getPort( ) );
- saSocketAddrEqual.setPort( IP_PORT_MYPORT3 );
- saSocketAddr.setPort( IP_PORT_HTTP2 );
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal() function: perform an equal action, then try to change the original address's port. it should not be changed ( handle released), it did not pass in (W32), this is under discussion.",
- IP_PORT_MYPORT3 == saSocketAddrEqual.getPort( ) );
- }
-
- void operator_equal_const_001()
- {
- const ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_TELNET);
- ::osl::SocketAddr saSocketAddrEqual( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
-
- saSocketAddrEqual = saSocketAddr;
- sal_Bool bOK = sal_False;
- ::rtl::ByteSequence bsSocketAddr = saSocketAddrEqual.getAddr( 0 );
-
- // if ( ( IP_PORT_TELNET == saSocketAddrEqual.getPort( ) ) &&( bsSocketAddr[0] == 127 ) && ( bsSocketAddr[1] == 0 ) &&( bsSocketAddr[2] == 0 ) && ( bsSocketAddr[3] == 1 ) )
- if ( ( IP_PORT_TELNET == saSocketAddrEqual.getPort( ) ) && ifIpv4is( bsSocketAddr, 127, 0, 0, 1 ) == sal_True )
- bOK = sal_True;
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal_const() function: use operator= const to assign Ip1 to Ip2, verify the change on the second one.",
- sal_True == bOK );
- }
-
- void operator_equal_const_002()
- {
- const ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_TELNET);
- ::osl::SocketAddr saSocketAddrEqual( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
-
- saSocketAddrEqual = saSocketAddr;
- saSocketAddrEqual.setPort( IP_PORT_HTTP1 );
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal_const() function: change the second instance, the first one should not be altered, since it does not released the handle.",
- IP_PORT_HTTP1 != saSocketAddr.getPort( ) );
- }
-
- void operator_equal_assign_001()
- {
- ::osl::SocketAddr* pSocketAddr = new ::osl::SocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_TELNET );
- CPPUNIT_ASSERT_MESSAGE("check for new SocketAddr", pSocketAddr != NULL);
- ::osl::SocketAddr* pSocketAddrAssign = new ::osl::SocketAddr( rtl::OUString("129.158.217.202"), IP_PORT_FTP );
- oslSocketAddr poslSocketAddr = pSocketAddr->getHandle( );
- //if( m_handle ) osl_destroySocketAddr( m_handle ); so pSocketAddrAssign had been destroyed and then point to pSocketAddr
- pSocketAddrAssign->assign(poslSocketAddr, SAL_NO_COPY);
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr no copy constructor function: do a no copy constructor on a given SocketAddr instance, modify the new instance's port, check the original one.",
- pSocketAddrAssign->getPort( ) == IP_PORT_TELNET );
-
- delete pSocketAddrAssign;
- }
-
- void operator_is_equal_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("127.0.0.1"), IP_PORT_TELNET);
- ::osl::SocketAddr saSocketAddrequal( rtl::OUString("127.0.0.1"), IP_PORT_TELNET );
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal_equal() function: check two identical Address.",
- sal_True == ( saSocketAddrequal == saSocketAddr.getHandle( ) ) );
- }
-
- void operator_is_equal_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("129.158.217.202"), IP_PORT_FTP);
- ::osl::SocketAddr saSocketAddrequal( rtl::OUString("127.0.0.1"), IP_PORT_TELNET );
-
- CPPUNIT_ASSERT_MESSAGE( "test for operator_equal_equal() function: check two different Address.",
- sal_False == ( saSocketAddrequal == saSocketAddr.getHandle( ) ) );
- }
-
- CPPUNIT_TEST_SUITE( operator_equal );
- CPPUNIT_TEST( operator_equal_001 );
- CPPUNIT_TEST( operator_equal_002 );
- CPPUNIT_TEST( operator_equal_const_001 );
- CPPUNIT_TEST( operator_equal_const_002 );
- CPPUNIT_TEST( operator_equal_assign_001 );
- CPPUNIT_TEST( operator_is_equal_001 );
- CPPUNIT_TEST( operator_is_equal_002 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class operator_equal
-
- /** testing the method:
- inline oslSocketAddr SAL_CALL getHandle() const;
- */
-
- class getSocketAddrHandle : public CppUnit::TestFixture
- {
- public:
-
- void getSocketAddrHandle_001()
- {
- ::osl::SocketAddr* pSocketAddr = new ::osl::SocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- CPPUNIT_ASSERT_MESSAGE("check for new SocketAddr", pSocketAddr != NULL);
- oslSocketAddr psaOSLSocketAddr = pSocketAddr->getHandle( );
- ::osl::SocketAddr* pSocketAddrCopy = new ::osl::SocketAddr( psaOSLSocketAddr, SAL_NO_COPY );
-
- CPPUNIT_ASSERT_MESSAGE("test for SocketAddr no copy constructor function: do a no copy constructor on a given SocketAddr instance, modify the new instance's port, check the original one.",
- pSocketAddr->getHandle( ) == pSocketAddrCopy->getHandle( ) );
-
- delete pSocketAddrCopy;
- }
-
- void getSocketAddrHandle_002()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("deuce.PRC.Sun.COM"), IP_PORT_MYPORT4 );
- oslSocketAddr poslSocketAddr = saSocketAddr.getHandle( );
-
- sal_Bool bOK = ( saSocketAddr == poslSocketAddr );
- //t_print("getSocketAddrHandle_002\n");
- CPPUNIT_ASSERT_MESSAGE( "test for getHandle() function: use getHandle() function as an intermediate way to create identical address.",
- sal_True == bOK );
- }
-
- CPPUNIT_TEST_SUITE( getSocketAddrHandle );
- CPPUNIT_TEST( getSocketAddrHandle_001 );
- CPPUNIT_TEST( getSocketAddrHandle_002 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class getSocketAddrHandle
-
- /** testing the method:
- static inline ::rtl::OUString SAL_CALL getLocalHostname( oslSocketResult *pResult = 0);
- */
-
- class getLocalHostname : public CppUnit::TestFixture
- {
- public:
- /* the process of getLocalHostname: 1.gethostname (same as /bin/hostname) returned name A
- 2. search A in /etc/hosts, if there is an alias name is A, return the name in the same row
- */
-
- void getLocalHostname_000()
- {
- // _osl_getFullQualifiedDomainName( );
- oslSocketResult aResult = osl_Socket_Error;
- rtl::OUString suHostname = osl::SocketAddr::getLocalHostname(&aResult);
- CPPUNIT_ASSERT_MESSAGE("getLocalHostname failed", aResult == osl_Socket_Ok);
- }
-
- void getLocalHostname_001()
- {
- oslSocketResult *pResult = NULL;
- //printSocketResult(*pResult);
- ::rtl::OUString suResult = ::osl::SocketAddr::getLocalHostname( pResult );
-
- // LLA: IMHO localhost, or hostname by itself should be ok.
- rtl::OUString suThisHost = getThisHostname( );
- bool bOk = false;
- if ( suThisHost == "localhost" )
- {
- bOk = true;
- }
- else
- {
- if (suThisHost.equals(suResult))
- {
- bOk = true;
- }
- }
-
- ::rtl::OUString suError;
- suError = outputError(suResult, getThisHostname( ), "test for getLocalHostname() function");
-
- CPPUNIT_ASSERT_MESSAGE( STD_STRING(suError), bOk == true );
- }
-
- CPPUNIT_TEST_SUITE( getLocalHostname );
- CPPUNIT_TEST( getLocalHostname_000 );
- CPPUNIT_TEST( getLocalHostname_001 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class getLocalHostname
-
- /** testing the method:
- static inline void SAL_CALL resolveHostname( const ::rtl::OUString & strHostName , SocketAddr & Addr );
- */
-
- class resolveHostname : public CppUnit::TestFixture
- {
- public:
- void resolveHostname_001()
- {
- ::osl::SocketAddr saSocketAddr;
- ::osl::SocketAddr::resolveHostname( rtl::OUString("127.0.0.1"), saSocketAddr );
- ::rtl::ByteSequence bsSocketAddr = saSocketAddr.getAddr( 0 );
- sal_Bool bOK = sal_False;
-
- if ( ( bsSocketAddr[0] == 127 ) && ( bsSocketAddr[1] == 0 ) &&( bsSocketAddr[2] == 0 ) && ( bsSocketAddr[3] == 1 ) )
- bOK = sal_True;
-
- CPPUNIT_ASSERT_MESSAGE( "test for resolveHostname() function: try to resolve localhost to 127.0.0.1.",
- sal_True == bOK );
- }
-
- CPPUNIT_TEST_SUITE( resolveHostname );
- CPPUNIT_TEST( resolveHostname_001 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class resolveHostname
-
- /** testing the method:
- static inline sal_Int32 SAL_CALL getServicePort(
- const ::rtl::OUString& strServiceName,
- const ::rtl::OUString & strProtocolName= ::rtl::OUString("tcp") );
- */
-
- class gettheServicePort : public CppUnit::TestFixture
- {
- public:
- void gettheServicePort_001()
- {
- rtl::OUString suServiceFTP ("ftp");
- rtl::OUString suProtocolTCP ("tcp");
-
- CPPUNIT_ASSERT_MESSAGE( "test for getServicePort() function: try to get ftp service port on TCP protocol.",
- IP_PORT_FTP== ::osl::SocketAddr::getServicePort( suServiceFTP, suProtocolTCP ) );
- }
-
- void gettheServicePort_002()
- {
- rtl::OUString suServiceTELNET ("telnet");
- rtl::OUString suProtocolTCP ("tcp");
- CPPUNIT_ASSERT_MESSAGE( "test for getServicePort() function: try to get telnet service port on TCP protocol.",
- IP_PORT_TELNET== ::osl::SocketAddr::getServicePort( suServiceTELNET, suProtocolTCP ) );
- }
-
- void gettheServicePort_003()
- {
- //Solaris has no service called "https", please see /etc/services
- rtl::OUString suServiceNETBIOS ("netbios-dgm");
- rtl::OUString suProtocolUDP ("udp");
- CPPUNIT_ASSERT_MESSAGE( "test for getServicePort() function: try to get netbios-ssn service port on UDP protocol.",
- IP_PORT_NETBIOS_DGM == ::osl::SocketAddr::getServicePort( suServiceNETBIOS, suProtocolUDP ) );
- }
-
- void gettheServicePort_004()
- {
- rtl::OUString suProtocolUDP("udp" );
- CPPUNIT_ASSERT_MESSAGE( "test for getServicePort() function: try to get a service port which is not exist.",
- OSL_INVALID_PORT == ::osl::SocketAddr::getServicePort( ::rtl::OUString("notexist"), suProtocolUDP ) );
- }
-
- CPPUNIT_TEST_SUITE( gettheServicePort );
- CPPUNIT_TEST( gettheServicePort_001 );
- CPPUNIT_TEST( gettheServicePort_002 );
- CPPUNIT_TEST( gettheServicePort_003 );
- CPPUNIT_TEST( gettheServicePort_004 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class gettheServicePort
-
- /** testing the method:
-
- */
-
- class getFamilyOfSocketAddr : public CppUnit::TestFixture
- {
- public:
- void getFamilyOfSocketAddr_001()
- {
- ::osl::SocketAddr saSocketAddr( rtl::OUString("localhost"), IP_PORT_HTTP1 );
- oslSocketAddr psaOSLSocketAddr = saSocketAddr.getHandle( );
- CPPUNIT_ASSERT_EQUAL(
- osl_Socket_FamilyInet,
- osl_getFamilyOfSocketAddr( psaOSLSocketAddr ) );
-
- CPPUNIT_ASSERT_MESSAGE( "test for osl_getFamilyOfSocketAddr.",
- osl_getFamilyOfSocketAddr( psaOSLSocketAddr ) == osl_Socket_FamilyInet );
- }
-
- CPPUNIT_TEST_SUITE( getFamilyOfSocketAddr );
- CPPUNIT_TEST( getFamilyOfSocketAddr_001 );
- CPPUNIT_TEST_SUITE_END( );
-
- }; // class getFamilyOfSocketAddr
-
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::ctors);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::is);
-//TODO: enable Test with valid host names
-//CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getHostname);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getPort);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::setPort);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::setAddr);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getAddr);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::operator_equal);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getSocketAddrHandle);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getLocalHostname);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::resolveHostname);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::gettheServicePort);
-CPPUNIT_TEST_SUITE_REGISTRATION(osl_SocketAddr::getFamilyOfSocketAddr);
-
-} // namespace osl_SocketAddr
-
-// this macro creates an empty function, which will called by the RegisterAllFunctions()
-// to let the user the possibility to also register some functions by hand.
-CPPUNIT_PLUGIN_IMPLEMENT();
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */