Convert BUrl tests to the UnitTester framework.
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
SubDir HAIKU_TOP src tests kits net url ;
|
SubDir HAIKU_TOP src tests kits net url ;
|
||||||
|
|
||||||
Application url_test
|
UnitTestLib servicekittest.so :
|
||||||
: url_test.cpp
|
ServiceKitTestAddon.cpp
|
||||||
|
|
||||||
|
UrlTest.cpp
|
||||||
|
|
||||||
: be $(TARGET_NETWORK_LIBS) $(HAIKU_NETAPI_LIB) $(TARGET_LIBSTDC++)
|
: be $(TARGET_NETWORK_LIBS) $(HAIKU_NETAPI_LIB) $(TARGET_LIBSTDC++)
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <TestSuite.h>
|
||||||
|
#include <TestSuiteAddon.h>
|
||||||
|
|
||||||
|
#include "UrlTest.h"
|
||||||
|
|
||||||
|
|
||||||
|
BTestSuite*
|
||||||
|
getTestSuite()
|
||||||
|
{
|
||||||
|
BTestSuite* suite = new BTestSuite("ServicesKit");
|
||||||
|
|
||||||
|
UrlTest::AddTests(*suite);
|
||||||
|
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010, Christophe Huriaux
|
||||||
|
* Copyright 2014, Haiku, inc.
|
||||||
|
* Distributed under the terms of the MIT licence
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "UrlTest.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include <NetworkKit.h>
|
||||||
|
|
||||||
|
#include <cppunit/TestCaller.h>
|
||||||
|
#include <cppunit/TestSuite.h>
|
||||||
|
|
||||||
|
|
||||||
|
UrlTest::UrlTest()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UrlTest::~UrlTest()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Test if rebuild url are the same length of parsed one
|
||||||
|
void UrlTest::LengthTest()
|
||||||
|
{
|
||||||
|
int8 testIndex;
|
||||||
|
BUrl testUrl;
|
||||||
|
|
||||||
|
const char* kTestLength[] =
|
||||||
|
{
|
||||||
|
"http://user:[email protected]:80/path?query#fragment",
|
||||||
|
"http://user:[email protected]:80/path?query#",
|
||||||
|
"http://user:[email protected]:80/path?query",
|
||||||
|
"http://user:[email protected]:80/path?",
|
||||||
|
"http://user:[email protected]:80/path",
|
||||||
|
"http://user:[email protected]:80/",
|
||||||
|
"http://user:[email protected]",
|
||||||
|
"http://user:pass@",
|
||||||
|
"http://www.foo.com",
|
||||||
|
"http://",
|
||||||
|
"http:"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (testIndex = 0; kTestLength[testIndex] != NULL; testIndex++)
|
||||||
|
{
|
||||||
|
NextSubTest();
|
||||||
|
testUrl.SetUrlString(kTestLength[testIndex]);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(strlen(kTestLength[testIndex]) == strlen(testUrl.UrlString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char* url;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
const char* protocol;
|
||||||
|
const char* userName;
|
||||||
|
const char* password;
|
||||||
|
const char* host;
|
||||||
|
int16 port;
|
||||||
|
const char* path;
|
||||||
|
const char* request;
|
||||||
|
const char* fragment;
|
||||||
|
} expected;
|
||||||
|
} ExplodeTest;
|
||||||
|
|
||||||
|
|
||||||
|
const ExplodeTest kTestExplode[] =
|
||||||
|
// Url
|
||||||
|
// Protocol User Password Hostname Port Path Request Fragment
|
||||||
|
// -------- --------- --------- --------- ---- ---------- ---------- ------------
|
||||||
|
{
|
||||||
|
{ "http://user:pass@host:80/path?query#fragment",
|
||||||
|
{ "http", "user", "pass", "host", 80, "/path", "query", "fragment" } },
|
||||||
|
{ "http://www.host.tld/path?query#fragment",
|
||||||
|
{ "http", "", "", "www.host.tld",0, "/path", "query", "fragment" } }
|
||||||
|
};
|
||||||
|
|
||||||
|
void UrlTest::ExplodeImplodeTest()
|
||||||
|
{
|
||||||
|
uint8 testIndex;
|
||||||
|
BUrl testUrl;
|
||||||
|
|
||||||
|
for (testIndex = 0; testIndex < (sizeof(kTestExplode) / sizeof(ExplodeTest)); testIndex++)
|
||||||
|
{
|
||||||
|
NextSubTest();
|
||||||
|
testUrl.SetUrlString(kTestExplode[testIndex].url);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].url)
|
||||||
|
== BString(testUrl.UrlString()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.protocol)
|
||||||
|
== BString(testUrl.Protocol()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.userName)
|
||||||
|
== BString(testUrl.UserName()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.password)
|
||||||
|
== BString(testUrl.Password()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.host)
|
||||||
|
== BString(testUrl.Host()));
|
||||||
|
CPPUNIT_ASSERT(kTestExplode[testIndex].expected.port == testUrl.Port());
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.path)
|
||||||
|
== BString(testUrl.Path()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.request)
|
||||||
|
== BString(testUrl.Request()));
|
||||||
|
CPPUNIT_ASSERT(BString(kTestExplode[testIndex].expected.fragment)
|
||||||
|
== BString(testUrl.Fragment()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
UrlTest::PathOnly()
|
||||||
|
{
|
||||||
|
BUrl test = "lol";
|
||||||
|
CPPUNIT_ASSERT(test.HasPath());
|
||||||
|
CPPUNIT_ASSERT(test.Path() == "lol");
|
||||||
|
CPPUNIT_ASSERT(test.UrlString() == "lol");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* static */ void
|
||||||
|
UrlTest::AddTests(BTestSuite& parent)
|
||||||
|
{
|
||||||
|
CppUnit::TestSuite& suite = *new CppUnit::TestSuite("UrlTest");
|
||||||
|
|
||||||
|
suite.addTest(new CppUnit::TestCaller<UrlTest>(
|
||||||
|
"UrlTest::LengthTest", &UrlTest::LengthTest));
|
||||||
|
suite.addTest(new CppUnit::TestCaller<UrlTest>(
|
||||||
|
"UrlTest::ExplodeImplodeTest", &UrlTest::ExplodeImplodeTest));
|
||||||
|
suite.addTest(new CppUnit::TestCaller<UrlTest>("UrlTest::PathOnly",
|
||||||
|
&UrlTest::PathOnly));
|
||||||
|
|
||||||
|
parent.addTest("UrlTest", &suite);
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Haiku, inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef URL_TEST_H
|
||||||
|
#define URL_TEST_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <TestCase.h>
|
||||||
|
#include <TestSuite.h>
|
||||||
|
|
||||||
|
|
||||||
|
class UrlTest: public BTestCase {
|
||||||
|
public:
|
||||||
|
UrlTest();
|
||||||
|
virtual ~UrlTest();
|
||||||
|
|
||||||
|
void LengthTest();
|
||||||
|
void ExplodeImplodeTest();
|
||||||
|
void PathOnly();
|
||||||
|
|
||||||
|
static void AddTests(BTestSuite& suite);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
#include <cstdlib>
|
|
||||||
#include <cstring>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include <NetworkKit.h>
|
|
||||||
|
|
||||||
#ifdef ASSERT
|
|
||||||
#undef ASSERT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define REPORT(assert, line) cout << "ASSERT() failed at line " << line << ": " << #assert << endl
|
|
||||||
#define ASSERT(assertion) { if (!(assertion)) { REPORT(assertion, __LINE__ ); } }
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
const char* url;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
const char* protocol;
|
|
||||||
const char* userName;
|
|
||||||
const char* password;
|
|
||||||
const char* host;
|
|
||||||
int16 port;
|
|
||||||
const char* path;
|
|
||||||
const char* request;
|
|
||||||
const char* fragment;
|
|
||||||
} expected;
|
|
||||||
} ExplodeTest;
|
|
||||||
|
|
||||||
|
|
||||||
const char* kTestLength[] =
|
|
||||||
{
|
|
||||||
"http://user:[email protected]:80/path?query#fragment",
|
|
||||||
"http://user:[email protected]:80/path?query#",
|
|
||||||
"http://user:[email protected]:80/path?query",
|
|
||||||
"http://user:[email protected]:80/path?",
|
|
||||||
"http://user:[email protected]:80/path",
|
|
||||||
"http://user:[email protected]:80/",
|
|
||||||
"http://user:[email protected]",
|
|
||||||
"http://user:pass@",
|
|
||||||
"http://www.foo.com",
|
|
||||||
"http://",
|
|
||||||
"http:"
|
|
||||||
};
|
|
||||||
|
|
||||||
const ExplodeTest kTestExplode[] =
|
|
||||||
// Url
|
|
||||||
// Protocol User Password Hostname Port Path Request Fragment
|
|
||||||
// -------- --------- --------- --------- ---- ---------- ---------- ------------
|
|
||||||
{
|
|
||||||
{ "http://user:pass@host:80/path?query#fragment",
|
|
||||||
{ "http", "user", "pass", "host", 80, "/path", "query", "fragment" } },
|
|
||||||
{ "http://www.host.tld/path?query#fragment",
|
|
||||||
{ "http", "", "", "www.host.tld",0, "/path", "query", "fragment" } }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Test if rebuild url are the same length of parsed one
|
|
||||||
void lengthTest()
|
|
||||||
{
|
|
||||||
int8 testIndex;
|
|
||||||
BUrl testUrl;
|
|
||||||
|
|
||||||
for (testIndex = 0; kTestLength[testIndex] != NULL; testIndex++)
|
|
||||||
{
|
|
||||||
testUrl.SetUrlString(kTestLength[testIndex]);
|
|
||||||
|
|
||||||
cout << "`" << kTestLength[testIndex] << "' vs `" << testUrl.UrlString() << "'" << endl;
|
|
||||||
ASSERT(strlen(kTestLength[testIndex]) == strlen(testUrl.UrlString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void explodeImplodeTest()
|
|
||||||
{
|
|
||||||
uint8 testIndex;
|
|
||||||
BUrl testUrl;
|
|
||||||
|
|
||||||
for (testIndex = 0; testIndex < (sizeof(kTestExplode) / sizeof(ExplodeTest)); testIndex++)
|
|
||||||
{
|
|
||||||
testUrl.SetUrlString(kTestExplode[testIndex].url);
|
|
||||||
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].url) == BString(testUrl.UrlString()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.protocol) == BString(testUrl.Protocol()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.userName) == BString(testUrl.UserName()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.password) == BString(testUrl.Password()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.host) == BString(testUrl.Host()));
|
|
||||||
ASSERT(kTestExplode[testIndex].expected.port == testUrl.Port());
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.path) == BString(testUrl.Path()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.request) == BString(testUrl.Request()));
|
|
||||||
ASSERT(BString(kTestExplode[testIndex].expected.fragment) == BString(testUrl.Fragment()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
using std::cout;
|
|
||||||
using std::endl;
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int, char**)
|
|
||||||
{
|
|
||||||
cout << "Running lengthTest:" << endl;
|
|
||||||
lengthTest();
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
cout << "Running explodeImplodeTest:" << endl;
|
|
||||||
explodeImplodeTest();
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
BUrl test = "lol";
|
|
||||||
cout << "Path: " << test.HasPath() << " -> " << test.Path() << endl;
|
|
||||||
cout << "Rebuild: " << test.UrlString() << endl;
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user