// Licence: wxWidgets licence
///////////////////////////////////////////////////////////////////////////////
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
// For compilers that support precompilation, includes "wx/wx.h"
// and "wx/cppunit.h"
#include "testprec.h"
#include "wx/osx/private.h"
#endif
+#include "wx/socket.h"
+
using namespace std;
using CppUnit::Test;
using CppUnit::TestSuite;
using CppUnit::TestFactoryRegistry;
+
+// ----------------------------------------------------------------------------
+// helper classes
+// ----------------------------------------------------------------------------
+
// exception class for MSVC debug CRT assertion failures
#ifdef wxUSE_VC_CRTDBG
{
msg << "wxWidgets assert: " << e.m_cond << " failed "
"at " << e.m_file << ":" << e.m_line << " in " << e.m_func
- << " with message " << e.m_msg;
+ << " with message '" << e.m_msg << "'";
}
#endif // wxDEBUG_LEVEL
#ifdef wxUSE_VC_CRTDBG
IMPLEMENT_APP_NO_MAIN(TestApp)
+
+// ----------------------------------------------------------------------------
+// global functions
+// ----------------------------------------------------------------------------
+
#ifdef wxUSE_VC_CRTDBG
static int TestCrtReportHook(int reportType, char *message, int *)
return -1;
}
+extern void SetFilterEventFunc(FilterEventFunc func)
+{
+ wxGetApp().SetFilterEventFunc(func);
+}
+
+extern void SetProcessEventFunc(ProcessEventFunc func)
+{
+ wxGetApp().SetProcessEventFunc(func);
+}
+
+extern bool IsNetworkAvailable()
+{
+ // NOTE: we could use wxDialUpManager here if it was in wxNet; since it's in
+ // wxCore we use a simple rough test:
+
+ wxSocketBase::Initialize();
+
+ wxIPV4address addr;
+ if (!addr.Hostname("www.google.com") || !addr.Service("www"))
+ {
+ wxSocketBase::Shutdown();
+ return false;
+ }
+
+ wxSocketClient sock;
+ bool online = sock.Connect(addr);
+
+ wxSocketBase::Shutdown();
+
+ return online;
+}
+
+// helper of OnRun(): gets the test with the given name, returning NULL (and
+// not an empty test suite) if there is no such test
+static Test *GetTestByName(const wxString& name)
+{
+ Test *
+ test = TestFactoryRegistry::getRegistry(string(name.mb_str())).makeTest();
+ if ( test )
+ {
+ TestSuite * const suite = dynamic_cast<TestSuite *>(test);
+ if ( !suite || !suite->countTestCases() )
+ {
+ // it's a bogus test, don't use it
+ delete test;
+ test = NULL;
+ }
+ }
+
+ return test;
+}
+
+
+// ----------------------------------------------------------------------------
+// TestApp
+// ----------------------------------------------------------------------------
+
TestApp::TestApp()
: m_list(false),
m_longlist(false)
return TestAppBase::ProcessEvent(event);
}
-extern void SetFilterEventFunc(FilterEventFunc func)
-{
- wxGetApp().SetFilterEventFunc(func);
-}
-
-extern void SetProcessEventFunc(ProcessEventFunc func)
-{
- wxGetApp().SetProcessEventFunc(func);
-}
-
-// helper of OnRun(): gets the test with the given name, returning NULL (and
-// not an empty test suite) if there is no such test
-static Test *GetTestByName(const wxString& name)
-{
- Test *
- test = TestFactoryRegistry::getRegistry(string(name.mb_str())).makeTest();
- if ( test )
- {
- TestSuite * const suite = dynamic_cast<TestSuite *>(test);
- if ( !suite || !suite->countTestCases() )
- {
- // it's a bogus test, don't use it
- delete test;
- test = NULL;
- }
- }
-
- return test;
-}
-
// Run
//
int TestApp::OnRun()
// Test wxURL & wxURI compat?
#define TEST_URL wxUSE_URL
-// Define this as 1 to test network connections, this is disabled by default as
-// some machines running automatic builds don't allow outgoing connections and
-// so the tests fail
-#define TEST_NETWORK 0
-
// ----------------------------------------------------------------------------
// test class
// ----------------------------------------------------------------------------
{
wxURL url("http://user:password@wxwidgets.org");
- CPPUNIT_ASSERT(url.GetError() == wxURL_NOERR);
-
-#if TEST_NETWORK
- wxInputStream* pInput = url.GetInputStream();
-
- CPPUNIT_ASSERT( pInput != NULL );
-#endif
-
+ CPPUNIT_ASSERT( url.GetError() == wxURL_NOERR );
CPPUNIT_ASSERT( url == wxURL("http://user:password@wxwidgets.org") );
wxURI uri("http://user:password@wxwidgets.org");
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: tests/uris/url.cpp
+// Purpose: wxURL unit test
+// Author: Francesco Montorsi
+// Created: 2009-5-31
+// RCS-ID: $Id: uris.cpp 58272 2009-01-21 17:02:11Z VZ $
+// Copyright: (c) 2009 Francesco Montorsi
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif // WX_PRECOMP
+
+#include "wx/url.h"
+#include "wx/mstream.h"
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class URLTestCase : public CppUnit::TestCase
+{
+public:
+ URLTestCase();
+ ~URLTestCase();
+
+private:
+ CPPUNIT_TEST_SUITE( URLTestCase );
+ CPPUNIT_TEST( GetInputStream );
+ CPPUNIT_TEST_SUITE_END();
+
+ void GetInputStream();
+
+ DECLARE_NO_COPY_CLASS(URLTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( URLTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( URLTestCase, "URLTestCase" );
+
+
+URLTestCase::URLTestCase()
+{
+ wxSocketBase::Initialize();
+}
+
+URLTestCase::~URLTestCase()
+{
+ wxSocketBase::Shutdown();
+}
+
+void URLTestCase::GetInputStream()
+{
+ if (!IsNetworkAvailable()) // implemented in test.cpp
+ {
+ wxLogWarning("No network connectivity; skipping the URLTestCase::GetInputStream test unit.");
+ return;
+ }
+
+ wxURL url("http://wxwidgets.org/logo9.jpg");
+ CPPUNIT_ASSERT_EQUAL(wxURL_NOERR, url.GetError());
+
+ wxInputStream *in_stream = url.GetInputStream();
+ CPPUNIT_ASSERT(in_stream && in_stream->IsOk());
+
+ wxMemoryOutputStream ostream;
+ CPPUNIT_ASSERT(in_stream->Read(ostream).GetLastError() == wxSTREAM_EOF);
+
+ // wx logo image currently is 13219 bytes
+ CPPUNIT_ASSERT(ostream.GetSize() == 13219);
+}
+