diff options
| author | Vincent Richard <[email protected]> | 2005-08-25 21:25:45 +0000 |
|---|---|---|
| committer | Vincent Richard <[email protected]> | 2005-08-25 21:25:45 +0000 |
| commit | 5d18fce959ea74f99a8683c944c96881b2365bb2 (patch) | |
| tree | d35b9177115606eedd84bbc64eb11aa21ca72878 /tests/utility/urlTest.cpp | |
| parent | Fixed undefined symbol 'UNSPECIFIED_PORT'. (diff) | |
| download | vmime-5d18fce959ea74f99a8683c944c96881b2365bb2.tar.gz vmime-5d18fce959ea74f99a8683c944c96881b2365bb2.zip | |
Moved to CppUnit for unit tests framework.
Diffstat (limited to 'tests/utility/urlTest.cpp')
| -rw-r--r-- | tests/utility/urlTest.cpp | 355 |
1 files changed, 170 insertions, 185 deletions
diff --git a/tests/utility/urlTest.cpp b/tests/utility/urlTest.cpp index 963febda..4ed45dfb 100644 --- a/tests/utility/urlTest.cpp +++ b/tests/utility/urlTest.cpp @@ -17,238 +17,223 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -#include "../lib/unit++/unit++.h" - -#include <iostream> -#include <ostream> - -#include "vmime/vmime.hpp" -#include "vmime/platforms/posix/posixHandler.hpp" +#include "tests/testUtils.hpp" #include "vmime/utility/url.hpp" #include "vmime/utility/urlUtils.hpp" -using namespace unitpp; +#define VMIME_TEST_SUITE urlTest +#define VMIME_TEST_SUITE_MODULE "Utility" -namespace -{ - class urlTest : public suite - { - static const bool parseHelper(vmime::utility::url& u, const vmime::string& str) - { - try - { - u = vmime::utility::url(str); - } - catch (vmime::exceptions::malformed_url) - { - return false; - } - return true; - } +VMIME_TEST_SUITE_BEGIN + VMIME_TEST_LIST_BEGIN + VMIME_TEST(testParse1) + VMIME_TEST(testParse2) + VMIME_TEST(testParse3) + VMIME_TEST(testParse4) + VMIME_TEST(testGenerate) + VMIME_TEST(testUtilsEncode) + VMIME_TEST(testUtilsDecode) + VMIME_TEST_LIST_END - void testParse1() - { - // Test some valid constructions - vmime::utility::url u1("", ""); - - assert_eq("1.1", true, parseHelper(u1, "protocol://user:password@host:12345/path/")); - assert_eq("1.2", "protocol", u1.getProtocol()); - assert_eq("1.3", "user", u1.getUsername()); - assert_eq("1.4", "password", u1.getPassword()); - assert_eq("1.5", "host", u1.getHost()); - assert_eq("1.6", 12345, u1.getPort()); - assert_eq("1.7", "/path/", u1.getPath()); - vmime::utility::url u2("", ""); - - assert_eq("2.1", true, parseHelper(u2, "protocol://user@host:12345/path/")); - assert_eq("2.2", "protocol", u2.getProtocol()); - assert_eq("2.3", "user", u2.getUsername()); - assert_eq("2.4", "", u2.getPassword()); - assert_eq("2.5", "host", u2.getHost()); - assert_eq("2.6", 12345, u2.getPort()); - assert_eq("2.7", "/path/", u2.getPath()); + static const bool parseHelper(vmime::utility::url& u, const vmime::string& str) + { + try + { + u = vmime::utility::url(str); + } + catch (vmime::exceptions::malformed_url) + { + return false; + } - vmime::utility::url u3("", ""); + return true; + } - assert_eq("3.1", true, parseHelper(u3, "protocol://host:12345/path/")); - assert_eq("3.2", "protocol", u3.getProtocol()); - assert_eq("3.3", "", u3.getUsername()); - assert_eq("3.4", "", u3.getPassword()); - assert_eq("3.5", "host", u3.getHost()); - assert_eq("3.6", 12345, u3.getPort()); - assert_eq("3.7", "/path/", u3.getPath()); - vmime::utility::url u4("", ""); + void testParse1() + { + // Test some valid constructions + vmime::utility::url u1("", ""); - assert_eq("4.1", true, parseHelper(u4, "protocol://host/path/")); - assert_eq("4.2", "protocol", u4.getProtocol()); - assert_eq("4.3", "", u4.getUsername()); - assert_eq("4.4", "", u4.getPassword()); - assert_eq("4.5", "host", u4.getHost()); - assert_eq("4.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); - assert_eq("4.7", "/path/", u4.getPath()); + VASSERT_EQ("1.1", true, parseHelper(u1, "protocol://user:password@host:12345/path/")); + VASSERT_EQ("1.2", "protocol", u1.getProtocol()); + VASSERT_EQ("1.3", "user", u1.getUsername()); + VASSERT_EQ("1.4", "password", u1.getPassword()); + VASSERT_EQ("1.5", "host", u1.getHost()); + VASSERT_EQ("1.6", 12345, u1.getPort()); + VASSERT_EQ("1.7", "/path/", u1.getPath()); - vmime::utility::url u5("", ""); + vmime::utility::url u2("", ""); - assert_eq("5.1", true, parseHelper(u5, "protocol://host/")); - assert_eq("5.2", "protocol", u5.getProtocol()); - assert_eq("5.3", "", u5.getUsername()); - assert_eq("5.4", "", u5.getPassword()); - assert_eq("5.5", "host", u5.getHost()); - assert_eq("5.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); - assert_eq("5.7", "", u5.getPath()); + VASSERT_EQ("2.1", true, parseHelper(u2, "protocol://user@host:12345/path/")); + VASSERT_EQ("2.2", "protocol", u2.getProtocol()); + VASSERT_EQ("2.3", "user", u2.getUsername()); + VASSERT_EQ("2.4", "", u2.getPassword()); + VASSERT_EQ("2.5", "host", u2.getHost()); + VASSERT_EQ("2.6", 12345, u2.getPort()); + VASSERT_EQ("2.7", "/path/", u2.getPath()); - vmime::utility::url u6("", ""); + vmime::utility::url u3("", ""); - assert_eq("6.1", true, parseHelper(u4, "protocol://host/path/file")); - assert_eq("6.2", "protocol", u4.getProtocol()); - assert_eq("6.3", "", u4.getUsername()); - assert_eq("6.4", "", u4.getPassword()); - assert_eq("6.5", "host", u4.getHost()); - assert_eq("6.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); - assert_eq("6.7", "/path/file", u4.getPath()); - } + VASSERT_EQ("3.1", true, parseHelper(u3, "protocol://host:12345/path/")); + VASSERT_EQ("3.2", "protocol", u3.getProtocol()); + VASSERT_EQ("3.3", "", u3.getUsername()); + VASSERT_EQ("3.4", "", u3.getPassword()); + VASSERT_EQ("3.5", "host", u3.getHost()); + VASSERT_EQ("3.6", 12345, u3.getPort()); + VASSERT_EQ("3.7", "/path/", u3.getPath()); - void testParse2() - { - // Now, test some ill-formed URLs + vmime::utility::url u4("", ""); - // -- missing protocol - vmime::utility::url u1("", ""); - assert_eq("1", false, parseHelper(u1, "://host")); + VASSERT_EQ("4.1", true, parseHelper(u4, "protocol://host/path/")); + VASSERT_EQ("4.2", "protocol", u4.getProtocol()); + VASSERT_EQ("4.3", "", u4.getUsername()); + VASSERT_EQ("4.4", "", u4.getPassword()); + VASSERT_EQ("4.5", "host", u4.getHost()); + VASSERT_EQ("4.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); + VASSERT_EQ("4.7", "/path/", u4.getPath()); - // -- port can contain only digits - vmime::utility::url u2("", ""); - assert_eq("2", false, parseHelper(u2, "proto://host:abc123")); + vmime::utility::url u5("", ""); - // -- no host specified - vmime::utility::url u3("", ""); - assert_eq("3", false, parseHelper(u3, "proto:///path")); + VASSERT_EQ("5.1", true, parseHelper(u5, "protocol://host/")); + VASSERT_EQ("5.2", "protocol", u5.getProtocol()); + VASSERT_EQ("5.3", "", u5.getUsername()); + VASSERT_EQ("5.4", "", u5.getPassword()); + VASSERT_EQ("5.5", "host", u5.getHost()); + VASSERT_EQ("5.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); + VASSERT_EQ("5.7", "", u5.getPath()); - // -- no protocol separator (://) - vmime::utility::url u4("", ""); - assert_eq("4", false, parseHelper(u4, "protohost/path")); - } + vmime::utility::url u6("", ""); - void testParse3() - { - // Test decoding - vmime::utility::url u1("", ""); + VASSERT_EQ("6.1", true, parseHelper(u4, "protocol://host/path/file")); + VASSERT_EQ("6.2", "protocol", u4.getProtocol()); + VASSERT_EQ("6.3", "", u4.getUsername()); + VASSERT_EQ("6.4", "", u4.getPassword()); + VASSERT_EQ("6.5", "host", u4.getHost()); + VASSERT_EQ("6.6", vmime::utility::url::UNSPECIFIED_PORT, u4.getPort()); + VASSERT_EQ("6.7", "/path/file", u4.getPath()); + } - assert_eq("1.1", true, parseHelper(u1, "pro%12to://user%34:pass%56word@ho%78st:12345/pa%abth/")); - assert_eq("1.2", "pro%12to", u1.getProtocol()); // protocol should not be decoded - assert_eq("1.3", "user\x34", u1.getUsername()); - assert_eq("1.4", "pass\x56word", u1.getPassword()); - assert_eq("1.5", "ho\x78st", u1.getHost()); - assert_eq("1.6", 12345, u1.getPort()); - assert_eq("1.7", "/pa\xabth/", u1.getPath()); - } + void testParse2() + { + // Now, test some ill-formed URLs - void testParse4() - { - // Test parameters - vmime::utility::url u1("", ""); + // -- missing protocol + vmime::utility::url u1("", ""); + VASSERT_EQ("1", false, parseHelper(u1, "://host")); - assert_eq("1.1", true, parseHelper(u1, "proto://host/path?p1=v1&p2=v2")); - assert_eq("1.2", "v1", u1.getParams().getProperty <vmime::string>("p1")); - assert_eq("1.3", "v2", u1.getParams().getProperty <vmime::string>("p2")); - assert_eq("1.4", "/path", u1.getPath()); + // -- port can contain only digits + vmime::utility::url u2("", ""); + VASSERT_EQ("2", false, parseHelper(u2, "proto://host:abc123")); - vmime::utility::url u2("", ""); + // -- no host specified + vmime::utility::url u3("", ""); + VASSERT_EQ("3", false, parseHelper(u3, "proto:///path")); - assert_eq("2.1", true, parseHelper(u2, "proto://host/path?p1=v1&p2")); - assert_eq("2.2", "v1", u2.getParams().getProperty <vmime::string>("p1")); - assert_eq("2.3", "p2", u2.getParams().getProperty <vmime::string>("p2")); - assert_eq("2.4", "/path", u2.getPath()); + // -- no protocol separator (://) + vmime::utility::url u4("", ""); + VASSERT_EQ("4", false, parseHelper(u4, "protohost/path")); + } - vmime::utility::url u3("", ""); + void testParse3() + { + // Test decoding + vmime::utility::url u1("", ""); - assert_eq("3.1", true, parseHelper(u3, "proto://host/?p1=v1&p2=v2")); - assert_eq("3.2", "v1", u3.getParams().getProperty <vmime::string>("p1")); - assert_eq("3.3", "v2", u3.getParams().getProperty <vmime::string>("p2")); - assert_eq("3.4", "", u3.getPath()); + VASSERT_EQ("1.1", true, parseHelper(u1, "pro%12to://user%34:pass%56word@ho%78st:12345/pa%abth/")); + VASSERT_EQ("1.2", "pro%12to", u1.getProtocol()); // protocol should not be decoded + VASSERT_EQ("1.3", "user\x34", u1.getUsername()); + VASSERT_EQ("1.4", "pass\x56word", u1.getPassword()); + VASSERT_EQ("1.5", "ho\x78st", u1.getHost()); + VASSERT_EQ("1.6", 12345, u1.getPort()); + VASSERT_EQ("1.7", "/pa\xabth/", u1.getPath()); + } - vmime::utility::url u4("", ""); + void testParse4() + { + // Test parameters + vmime::utility::url u1("", ""); - assert_eq("4.1", true, parseHelper(u4, "proto://host/path?p1=%3D&%3D=v2")); - assert_eq("4.2", "=", u4.getParams().getProperty <vmime::string>("p1")); - assert_eq("4.3", "v2", u4.getParams().getProperty <vmime::string>("=")); - assert_eq("4.4", "/path", u4.getPath()); - } + VASSERT_EQ("1.1", true, parseHelper(u1, "proto://host/path?p1=v1&p2=v2")); + VASSERT_EQ("1.2", "v1", u1.getParams().getProperty <vmime::string>("p1")); + VASSERT_EQ("1.3", "v2", u1.getParams().getProperty <vmime::string>("p2")); + VASSERT_EQ("1.4", "/path", u1.getPath()); - void testGenerate() - { - vmime::utility::url u1("proto", "host", 12345, "path", "user", "password"); - assert_eq("1", "proto://user:password@host:12345/path", - static_cast <vmime::string>(u1)); + vmime::utility::url u2("", ""); - vmime::utility::url u2("proto", "host"); - assert_eq("2", "proto://host", static_cast <vmime::string>(u2)); + VASSERT_EQ("2.1", true, parseHelper(u2, "proto://host/path?p1=v1&p2")); + VASSERT_EQ("2.2", "v1", u2.getParams().getProperty <vmime::string>("p1")); + VASSERT_EQ("2.3", "p2", u2.getParams().getProperty <vmime::string>("p2")); + VASSERT_EQ("2.4", "/path", u2.getPath()); - vmime::utility::url u3("proto", "host"); - u3.getParams().setProperty("p1", "v1"); - assert_eq("3.1", "proto://host/?p1=v1", - static_cast <vmime::string>(u3)); - u3.getParams().setProperty("p2", "v2"); - assert_eq("3.2", "proto://host/?p1=v1&p2=v2", - static_cast <vmime::string>(u3)); - u3.getParams().setProperty("&", "="); - assert_eq("3.3", "proto://host/?p1=v1&p2=v2&%26=%3D", - static_cast <vmime::string>(u3)); - } + vmime::utility::url u3("", ""); - void testUtilsEncode() - { - assert_eq("1", "%01", vmime::utility::urlUtils::encode("\x01")); - assert_eq("2", "%20", vmime::utility::urlUtils::encode(" ")); - assert_eq("3", "%FF", vmime::utility::urlUtils::encode("\xff")); - assert_eq("4", "a", vmime::utility::urlUtils::encode("a")); - } + VASSERT_EQ("3.1", true, parseHelper(u3, "proto://host/?p1=v1&p2=v2")); + VASSERT_EQ("3.2", "v1", u3.getParams().getProperty <vmime::string>("p1")); + VASSERT_EQ("3.3", "v2", u3.getParams().getProperty <vmime::string>("p2")); + VASSERT_EQ("3.4", "", u3.getPath()); - void testUtilsDecode() - { - for (int i = 0 ; i < 255 ; ++i) - { - std::ostringstream ossTest; - ossTest << "%" << "0123456789ABCDEF"[i / 16] - << "0123456789ABCDEF"[i % 16]; + vmime::utility::url u4("", ""); - std::ostringstream ossNum; - ossNum << i; + VASSERT_EQ("4.1", true, parseHelper(u4, "proto://host/path?p1=%3D&%3D=v2")); + VASSERT_EQ("4.2", "=", u4.getParams().getProperty <vmime::string>("p1")); + VASSERT_EQ("4.3", "v2", u4.getParams().getProperty <vmime::string>("=")); + VASSERT_EQ("4.4", "/path", u4.getPath()); + } - vmime::string res; - res += static_cast <unsigned char>(i); + void testGenerate() + { + vmime::utility::url u1("proto", "host", 12345, "path", "user", "password"); + VASSERT_EQ("1", "proto://user:password@host:12345/path", + static_cast <vmime::string>(u1)); - assert_eq(ossNum.str(), res, - vmime::utility::urlUtils::decode(ossTest.str())); - } + vmime::utility::url u2("proto", "host"); + VASSERT_EQ("2", "proto://host", static_cast <vmime::string>(u2)); - } + vmime::utility::url u3("proto", "host"); + u3.getParams().setProperty("p1", "v1"); + VASSERT_EQ("3.1", "proto://host/?p1=v1", + static_cast <vmime::string>(u3)); + u3.getParams().setProperty("p2", "v2"); + VASSERT_EQ("3.2", "proto://host/?p1=v1&p2=v2", + static_cast <vmime::string>(u3)); + u3.getParams().setProperty("&", "="); + VASSERT_EQ("3.3", "proto://host/?p1=v1&p2=v2&%26=%3D", + static_cast <vmime::string>(u3)); + } - public: + void testUtilsEncode() + { + VASSERT_EQ("1", "%01", vmime::utility::urlUtils::encode("\x01")); + VASSERT_EQ("2", "%20", vmime::utility::urlUtils::encode(" ")); + VASSERT_EQ("3", "%FF", vmime::utility::urlUtils::encode("\xff")); + VASSERT_EQ("4", "a", vmime::utility::urlUtils::encode("a")); + } - urlTest() : suite("vmime::utility::url") + void testUtilsDecode() + { + for (int i = 0 ; i < 255 ; ++i) { - // VMime initialization - vmime::platformDependant::setHandler<vmime::platforms::posix::posixHandler>(); + std::ostringstream ossTest; + ossTest << "%" << "0123456789ABCDEF"[i / 16] + << "0123456789ABCDEF"[i % 16]; - add("Parse1", testcase(this, "Parse1", &urlTest::testParse1)); - add("Parse2", testcase(this, "Parse2", &urlTest::testParse2)); - add("Parse3", testcase(this, "Parse3", &urlTest::testParse3)); - add("Parse4", testcase(this, "Parse4", &urlTest::testParse4)); - add("Generate", testcase(this, "Generate", &urlTest::testGenerate)); - add("UtilsEncode", testcase(this, "UtilsEncode", &urlTest::testUtilsEncode)); - add("UtilsDecode", testcase(this, "UtilsDecode", &urlTest::testUtilsDecode)); + std::ostringstream ossNum; + ossNum << i; - suite::main().add("vmime::utility::url", this); + vmime::string res; + res += static_cast <unsigned char>(i); + + VASSERT_EQ(ossNum.str(), res, + vmime::utility::urlUtils::decode(ossTest.str())); } - }; + } + +VMIME_TEST_SUITE_END - urlTest* theTest = new urlTest(); -} |
