// Author: Vadim Zeitlin
// RCS-ID: $Id$
// Copyright: (c) 2008 Vadim Zeitlin
-// Licence: wxWidgets licence
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
/*
#if wxUSE_SOCKETS
#include "wx/socket.h"
+#include "wx/url.h"
+#include "wx/sstream.h"
#include "wx/evtloop.h"
#include <memory>
CPPUNIT_TEST( ReadNormal ); \
CPPUNIT_TEST( ReadBlock ); \
CPPUNIT_TEST( ReadNowait ); \
- CPPUNIT_TEST( ReadWaitall )
+ CPPUNIT_TEST( ReadWaitall ); \
+ CPPUNIT_TEST( UrlTest )
CPPUNIT_TEST_SUITE( SocketTestCase );
ALL_SOCKET_TESTS();
{
m_useLoop = useLoop;
if ( useLoop )
+ {
+ m_evtLoopOld = wxEventLoopBase::GetActive();
SetActive(this);
+ }
}
virtual ~SocketTestEventLoop()
{
if ( m_useLoop )
- SetActive(NULL);
+ {
+ wxEventLoopBase::SetActive(m_evtLoopOld);
+ }
}
private:
bool m_useLoop;
+ wxEventLoopBase *m_evtLoopOld;
};
// get the address to connect to, if NULL is returned it means that the
void ReadNowait();
void ReadWaitall();
+ void UrlTest();
+
static bool ms_useLoop;
DECLARE_NO_COPY_CLASS(SocketTestCase)
sock->Read(bufSmall, WXSIZEOF(bufSmall));
CPPUNIT_ASSERT_EQUAL( wxSOCKET_NOERROR, sock->LastError() );
- CPPUNIT_ASSERT_EQUAL( WXSIZEOF(bufSmall), sock->LastCount() );
+ CPPUNIT_ASSERT_EQUAL( WXSIZEOF(bufSmall), (size_t)sock->LastCount() );
char bufBig[102400];
sock->Read(bufSmall, WXSIZEOF(bufSmall));
CPPUNIT_ASSERT_EQUAL( wxSOCKET_NOERROR, sock->LastError() );
- CPPUNIT_ASSERT_EQUAL( WXSIZEOF(bufSmall), sock->LastCount() );
+ CPPUNIT_ASSERT_EQUAL( WXSIZEOF(bufSmall), (size_t)sock->LastCount() );
char bufBig[102400];
sock->Read(buf, WXSIZEOF(buf));
CPPUNIT_ASSERT_EQUAL( wxSOCKET_NOERROR, sock->LastError() );
- CPPUNIT_ASSERT_EQUAL( WXSIZEOF(buf), sock->LastCount() );
+ CPPUNIT_ASSERT_EQUAL( WXSIZEOF(buf), (size_t)sock->LastCount() );
+}
+
+void SocketTestCase::UrlTest()
+{
+ if ( gs_serverHost.empty() )
+ return;
+
+ SocketTestEventLoop loop(ms_useLoop);
+
+ wxURL url("http://" + gs_serverHost);
+
+ const std::auto_ptr<wxInputStream> in(url.GetInputStream());
+ CPPUNIT_ASSERT( in.get() );
+
+ wxStringOutputStream out;
+ CPPUNIT_ASSERT_EQUAL( wxSTREAM_EOF, in->Read(out).GetLastError() );
}
#endif // wxUSE_SOCKETS