diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-06-17 10:39:04 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-06-17 10:39:04 +0000 |
commit | 89d6f69a2e66e0e61b2f4a2e85949f6e27e0a1aa (patch) | |
tree | f8d13d75e385713b592d93f4bf82d8665c7d6f48 /sal | |
parent | 22628ede854bb5b6853b78a6d29edd0c23e9059f (diff) |
INTEGRATION: CWS sb17 (1.2.26); FILE MERGED
2004/06/03 08:10:33 sb 1.2.26.2: #109735# Multibyte characters can be represented in URLs with mixtures of escape sequences and ASCII characters.
2004/06/02 10:46:46 sb 1.2.26.1: #109735# Added rtl_UriEn/DecodeStrict.
Diffstat (limited to 'sal')
-rw-r--r-- | sal/qa/rtl/uri/rtl_testuri.cxx | 605 |
1 files changed, 325 insertions, 280 deletions
diff --git a/sal/qa/rtl/uri/rtl_testuri.cxx b/sal/qa/rtl/uri/rtl_testuri.cxx index e299b3520cc0..18dc56d044ef 100644 --- a/sal/qa/rtl/uri/rtl_testuri.cxx +++ b/sal/qa/rtl/uri/rtl_testuri.cxx @@ -2,9 +2,9 @@ * * $RCSfile: rtl_testuri.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: rt $ $Date: 2004-05-03 09:17:49 $ + * last change: $Author: rt $ $Date: 2004-06-17 11:39:04 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -59,11 +59,6 @@ * ************************************************************************/ -// LLA: -// this file is converted to use with testshl2 -// original was placed in sal/test/textenc.cxx - -// #include "osl/diagnose.h" #include "rtl/strbuf.hxx" #include "rtl/textenc.h" #include "rtl/uri.h" @@ -72,196 +67,174 @@ #include "rtl/ustring.h" #include "rtl/ustring.hxx" -#include <stdio.h> - -#include <cppunit/simpleheader.hxx> - -#define TEST_ENSURE(c, m) CPPUNIT_ASSERT_MESSAGE((m), (c)) - -// #if OSL_DEBUG_LEVEL > 0 -// #define TEST_ENSURE(c, m) OSL_ENSURE((c), (m)) -// #else -// #define TEST_ENSURE(c, m) OSL_VERIFY((c)) -// #endif - -namespace rtl_testuri { - -rtl_UriCharClass const eFirstCharClass = rtl_UriCharClassNone; -rtl_UriCharClass const eLastCharClass = rtl_UriCharClassUnoParamValue; +#include "cppunit/simpleheader.hxx" +#include <stdio.h> -// ----------------------------------------------------------------------------- +namespace { -class uri : public CppUnit::TestFixture -{ -public: +struct Test: public CppUnit::TestFixture { void test_Uri(); - CPPUNIT_TEST_SUITE( uri ); - CPPUNIT_TEST( test_Uri ); - CPPUNIT_TEST_SUITE_END( ); + CPPUNIT_TEST_SUITE(Test); + CPPUNIT_TEST(test_Uri); + CPPUNIT_TEST_SUITE_END(); }; -void uri::test_Uri() -{ +void Test::test_Uri() { + rtl_UriCharClass const eFirstCharClass = rtl_UriCharClassNone; + rtl_UriCharClass const eLastCharClass = rtl_UriCharClassUnoParamValue; + rtl::OUStringBuffer aBuffer; rtl::OUString aText1; rtl::OUString aText2; // Check that all characters map back to themselves when encoded/decoded: - aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( - "\0x00\0x01\0x02\0x03\0x04\0x05\0x06\0x07" - "\0x08\0x09\0x0A\0x0B\0x0C\0x0D\0x0E\0x0F" - "\0x10\0x11\0x12\0x13\0x14\0x15\0x16\0x17" - "\0x18\0x19\0x1A\0x1B\0x1C\0x1D\0x1E\0x1F" - "\0x20\0x21\0x22\0x23\0x24\0x25\0x26\0x27" - "\0x28\0x29\0x2A\0x2B\0x2C\0x2D\0x2E\0x2F" - "\0x30\0x31\0x32\0x33\0x34\0x35\0x36\0x37" - "\0x38\0x39\0x3A\0x3B\0x3C\0x3D\0x3E\0x3F" - "\0x40\0x41\0x42\0x43\0x44\0x45\0x46\0x47" - "\0x48\0x49\0x4A\0x4B\0x4C\0x4D\0x4E\0x4F" - "\0x50\0x51\0x52\0x53\0x54\0x55\0x56\0x57" - "\0x58\0x59\0x5A\0x5B\0x5C\0x5D\0x5E\0x5F" - "\0x60\0x61\0x62\0x63\0x64\0x65\0x66\0x67" - "\0x68\0x69\0x6A\0x6B\0x6C\0x6D\0x6E\0x6F" - "\0x70\0x71\0x72\0x73\0x74\0x75\0x76\0x77" - "\0x78\0x79\0x7A\0x7B\0x7C\0x7D\0x7E\0x7F")); + aText1 = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "\0x00\0x01\0x02\0x03\0x04\0x05\0x06\0x07" + "\0x08\0x09\0x0A\0x0B\0x0C\0x0D\0x0E\0x0F" + "\0x10\0x11\0x12\0x13\0x14\0x15\0x16\0x17" + "\0x18\0x19\0x1A\0x1B\0x1C\0x1D\0x1E\0x1F" + "\0x20\0x21\0x22\0x23\0x24\0x25\0x26\0x27" + "\0x28\0x29\0x2A\0x2B\0x2C\0x2D\0x2E\0x2F" + "\0x30\0x31\0x32\0x33\0x34\0x35\0x36\0x37" + "\0x38\0x39\0x3A\0x3B\0x3C\0x3D\0x3E\0x3F" + "\0x40\0x41\0x42\0x43\0x44\0x45\0x46\0x47" + "\0x48\0x49\0x4A\0x4B\0x4C\0x4D\0x4E\0x4F" + "\0x50\0x51\0x52\0x53\0x54\0x55\0x56\0x57" + "\0x58\0x59\0x5A\0x5B\0x5C\0x5D\0x5E\0x5F" + "\0x60\0x61\0x62\0x63\0x64\0x65\0x66\0x67" + "\0x68\0x69\0x6A\0x6B\0x6C\0x6D\0x6E\0x6F" + "\0x70\0x71\0x72\0x73\0x74\0x75\0x76\0x77" + "\0x78\0x79\0x7A\0x7B\0x7C\0x7D\0x7E\0x7F")); aText2 = aText1; {for (rtl_UriCharClass eCharClass = eFirstCharClass; - eCharClass <= eLastCharClass; - eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) + eCharClass <= eLastCharClass; + eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) { - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ASCII_US) - == aText2, - "failure 1"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ASCII_US) - == aText2, - "failure 2"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ISO_8859_1) - == aText2, - "failure 3"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ISO_8859_1) - == aText2, - "failure 4"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 5"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 6"); + CPPUNIT_ASSERT_MESSAGE( + "failure 1", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ASCII_US) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 2", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ASCII_US) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 3", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_1) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 4", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_1) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 5", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 6", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8) + == aText2)); }} - aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( - "\0x00\0x01\0x02\0x03\0x04\0x05\0x06\0x07" - "\0x08\0x09\0x0A\0x0B\0x0C\0x0D\0x0E\0x0F" - "\0x10\0x11\0x12\0x13\0x14\0x15\0x16\0x17" - "\0x18\0x19\0x1A\0x1B\0x1C\0x1D\0x1E\0x1F" - "\0x20\0x21\0x22\0x23\0x24\0x25\0x26\0x27" - "\0x28\0x29\0x2A\0x2B\0x2C\0x2D\0x2E\0x2F" - "\0x30\0x31\0x32\0x33\0x34\0x35\0x36\0x37" - "\0x38\0x39\0x3A\0x3B\0x3C\0x3D\0x3E\0x3F" - "\0x40\0x41\0x42\0x43\0x44\0x45\0x46\0x47" - "\0x48\0x49\0x4A\0x4B\0x4C\0x4D\0x4E\0x4F" - "\0x50\0x51\0x52\0x53\0x54\0x55\0x56\0x57" - "\0x58\0x59\0x5A\0x5B\0x5C\0x5D\0x5E\0x5F" - "\0x60\0x61\0x62\0x63\0x64\0x65\0x66\0x67" - "\0x68\0x69\0x6A\0x6B\0x6C\0x6D\0x6E\0x6F" - "\0x70\0x71\0x72\0x73\0x74\0x75\0x76\0x77" - "\0x78\0x79\0x7A\0x7B\0x7C\0x7D\0x7E\0x7F" - "\0x80\0x81\0x82\0x83\0x84\0x85\0x86\0x87" - "\0x88\0x89\0x8A\0x8B\0x8C\0x8D\0x8E\0x8F" - "\0x90\0x91\0x92\0x93\0x94\0x95\0x96\0x97" - "\0x98\0x99\0x9A\0x9B\0x9C\0x9D\0x9E\0x9F" - "\0xA0\0xA1\0xA2\0xA3\0xA4\0xA5\0xA6\0xA7" - "\0xA8\0xA9\0xAA\0xAB\0xAC\0xAD\0xAE\0xAF" - "\0xB0\0xB1\0xB2\0xB3\0xB4\0xB5\0xB6\0xB7" - "\0xB8\0xB9\0xBA\0xBB\0xBC\0xBD\0xBE\0xBF" - "\0xC0\0xC1\0xC2\0xC3\0xC4\0xC5\0xC6\0xC7" - "\0xC8\0xC9\0xCA\0xCB\0xCC\0xCD\0xCE\0xCF" - "\0xD0\0xD1\0xD2\0xD3\0xD4\0xD5\0xD6\0xD7" - "\0xD8\0xD9\0xDA\0xDB\0xDC\0xDD\0xDE\0xDF" - "\0xE0\0xE1\0xE2\0xE3\0xE4\0xE5\0xE6\0xE7" - "\0xE8\0xE9\0xEA\0xEB\0xEC\0xED\0xEE\0xEF" - "\0xF0\0xF1\0xF2\0xF3\0xF4\0xF5\0xF6\0xF7" - "\0xF8\0xF9\0xFA\0xFB\0xFC\0xFD\0xFE\0xFF")); + aText1 = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "\0x00\0x01\0x02\0x03\0x04\0x05\0x06\0x07" + "\0x08\0x09\0x0A\0x0B\0x0C\0x0D\0x0E\0x0F" + "\0x10\0x11\0x12\0x13\0x14\0x15\0x16\0x17" + "\0x18\0x19\0x1A\0x1B\0x1C\0x1D\0x1E\0x1F" + "\0x20\0x21\0x22\0x23\0x24\0x25\0x26\0x27" + "\0x28\0x29\0x2A\0x2B\0x2C\0x2D\0x2E\0x2F" + "\0x30\0x31\0x32\0x33\0x34\0x35\0x36\0x37" + "\0x38\0x39\0x3A\0x3B\0x3C\0x3D\0x3E\0x3F" + "\0x40\0x41\0x42\0x43\0x44\0x45\0x46\0x47" + "\0x48\0x49\0x4A\0x4B\0x4C\0x4D\0x4E\0x4F" + "\0x50\0x51\0x52\0x53\0x54\0x55\0x56\0x57" + "\0x58\0x59\0x5A\0x5B\0x5C\0x5D\0x5E\0x5F" + "\0x60\0x61\0x62\0x63\0x64\0x65\0x66\0x67" + "\0x68\0x69\0x6A\0x6B\0x6C\0x6D\0x6E\0x6F" + "\0x70\0x71\0x72\0x73\0x74\0x75\0x76\0x77" + "\0x78\0x79\0x7A\0x7B\0x7C\0x7D\0x7E\0x7F" + "\0x80\0x81\0x82\0x83\0x84\0x85\0x86\0x87" + "\0x88\0x89\0x8A\0x8B\0x8C\0x8D\0x8E\0x8F" + "\0x90\0x91\0x92\0x93\0x94\0x95\0x96\0x97" + "\0x98\0x99\0x9A\0x9B\0x9C\0x9D\0x9E\0x9F" + "\0xA0\0xA1\0xA2\0xA3\0xA4\0xA5\0xA6\0xA7" + "\0xA8\0xA9\0xAA\0xAB\0xAC\0xAD\0xAE\0xAF" + "\0xB0\0xB1\0xB2\0xB3\0xB4\0xB5\0xB6\0xB7" + "\0xB8\0xB9\0xBA\0xBB\0xBC\0xBD\0xBE\0xBF" + "\0xC0\0xC1\0xC2\0xC3\0xC4\0xC5\0xC6\0xC7" + "\0xC8\0xC9\0xCA\0xCB\0xCC\0xCD\0xCE\0xCF" + "\0xD0\0xD1\0xD2\0xD3\0xD4\0xD5\0xD6\0xD7" + "\0xD8\0xD9\0xDA\0xDB\0xDC\0xDD\0xDE\0xDF" + "\0xE0\0xE1\0xE2\0xE3\0xE4\0xE5\0xE6\0xE7" + "\0xE8\0xE9\0xEA\0xEB\0xEC\0xED\0xEE\0xEF" + "\0xF0\0xF1\0xF2\0xF3\0xF4\0xF5\0xF6\0xF7" + "\0xF8\0xF9\0xFA\0xFB\0xFC\0xFD\0xFE\0xFF")); aText2 = aText1; {for (rtl_UriCharClass eCharClass = eFirstCharClass; - eCharClass <= eLastCharClass; - eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) + eCharClass <= eLastCharClass; + eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) { - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ISO_8859_1) - == aText2, - "failure 7"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ISO_8859_1), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_ISO_8859_1) - == aText2, - "failure 8"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_UTF8), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 9"); - TEST_ENSURE(rtl::Uri::decode(rtl::Uri::encode( - aText1, - eCharClass, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_UTF8), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 10"); + CPPUNIT_ASSERT_MESSAGE( + "failure 7", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_1) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 8", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_ISO_8859_1), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_1) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 9", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_UTF8), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 10", + (rtl::Uri::decode( + rtl::Uri::encode( + aText1, eCharClass, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_UTF8), + rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8) + == aText2)); }} // Check surrogate handling: @@ -272,71 +245,68 @@ void uri::test_Uri() aBuffer.append(static_cast< sal_Unicode >(0xDFFF)); // %ED%BF%BF aBuffer.append(static_cast< sal_Unicode >('A')); // A aText1 = aBuffer.makeStringAndClear(); - aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%ED%A0%80" - "%F0%90%8F%BF" - "%ED%BF%BF" - "A")); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 11"); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 12"); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 13"); - - aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%ed%a0%80" - "%f0%90%8f%bf" - "%ed%bf%bf" - "A")); + aText2 = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "%ED%A0%80" "%F0%90%8F%BF" "%ED%BF%BF" "A")); + CPPUNIT_ASSERT_MESSAGE( + "failure 11", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeIgnoreEscapes, + RTL_TEXTENCODING_UTF8) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 12", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeKeepEscapes, + RTL_TEXTENCODING_UTF8) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 13", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_UTF8) + == aText2)); + + aText1 = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "%ed%a0%80" "%f0%90%8f%bf" "%ed%bf%bf" "A")); aBuffer.appendAscii(RTL_CONSTASCII_STRINGPARAM("%ED%A0%80")); aBuffer.append(static_cast< sal_Unicode >(0xD800)); aBuffer.append(static_cast< sal_Unicode >(0xDFFF)); aBuffer.appendAscii(RTL_CONSTASCII_STRINGPARAM("%ED%BF%BF")); aBuffer.append(static_cast< sal_Unicode >('A')); aText2 = aBuffer.makeStringAndClear(); - TEST_ENSURE(rtl::Uri::decode(aText1, - rtl_UriDecodeToIuri, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 14"); - TEST_ENSURE(rtl::Uri::decode(aText1, - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 15"); + CPPUNIT_ASSERT_MESSAGE( + "failure 14", + (rtl::Uri::decode(aText1, rtl_UriDecodeToIuri, RTL_TEXTENCODING_UTF8) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 15", + (rtl::Uri::decode( + aText1, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8) + == aText2)); // Check UTF-8 handling: aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%E0%83%BF")); // \U+00FF encoded with three instead of two bytes aText2 = aText1; - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 16"); + CPPUNIT_ASSERT_MESSAGE( + "failure 16", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_UTF8) + == aText2)); aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%EF%BF%BF")); // \U+FFFF is no legal character aText2 = aText1; - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 17"); + CPPUNIT_ASSERT_MESSAGE( + "failure 17", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_UTF8) + == aText2)); // Check IURI handling: @@ -344,22 +314,21 @@ void uri::test_Uri() aBuffer.appendAscii(RTL_CONSTASCII_STRINGPARAM("%30")); aBuffer.append(static_cast< sal_Unicode >(0x00FF)); aText2 = aBuffer.makeStringAndClear(); - TEST_ENSURE(rtl::Uri::decode(aText1, - rtl_UriDecodeToIuri, - RTL_TEXTENCODING_UTF8) - == aText2, - "failure 18"); + CPPUNIT_ASSERT_MESSAGE( + "failure 18", + (rtl::Uri::decode(aText1, rtl_UriDecodeToIuri, RTL_TEXTENCODING_UTF8) + == aText2)); // Check modified rtl_UriCharClassUnoParamValue (removed '[' and ']'): aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("[]%5B%5D")); aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%5B%5D%5B%5D")); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUnoParamValue, - rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ASCII_US) - == aText2, - "failure 19"); + CPPUNIT_ASSERT_MESSAGE( + "failure 19", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUnoParamValue, rtl_UriEncodeCheckEscapes, + RTL_TEXTENCODING_ASCII_US) + == aText2)); // Check Uri::convertRelToAbs: @@ -418,75 +387,151 @@ void uri::test_Uri() { "http!://a/b/c/d;p?q", "g", 0 }, { "http:b/c/d;p?q", "g:h", "g:h" }, { "http:b/c/d;p?q", "g", 0 } }; - for (int i = 0; i < sizeof aRelToAbsTest / sizeof (RelToAbsTest); ++i) - { + for (int i = 0; i < sizeof aRelToAbsTest / sizeof (RelToAbsTest); ++i) { rtl::OUString aAbs; bool bMalformed = false; - try - { - aAbs = rtl::Uri::convertRelToAbs(rtl::OUString::createFromAscii( - aRelToAbsTest[i].pBase), - rtl::OUString::createFromAscii( - aRelToAbsTest[i].pRel)); - } - catch (rtl::MalformedUriException &) - { + try { + aAbs = rtl::Uri::convertRelToAbs( + rtl::OUString::createFromAscii(aRelToAbsTest[i].pBase), + rtl::OUString::createFromAscii(aRelToAbsTest[i].pRel)); + } catch (rtl::MalformedUriException &) { bMalformed = true; } - if (bMalformed ? aRelToAbsTest[i].pAbs != 0 : - aRelToAbsTest[i].pAbs == 0 - || !aAbs.equalsAscii(aRelToAbsTest[i].pAbs)) + if (bMalformed + ? aRelToAbsTest[i].pAbs != 0 + : (aRelToAbsTest[i].pAbs == 0 + || !aAbs.equalsAscii(aRelToAbsTest[i].pAbs))) + { printf( "FAILED convertRelToAbs(%s, %s) -> %s != %s\n", aRelToAbsTest[i].pBase, aRelToAbsTest[i].pRel, - bMalformed ? "<MALFORMED>" : - rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8). - getStr(), - aRelToAbsTest[i].pAbs == 0 ? "<MALFORMED>" : - aRelToAbsTest[i].pAbs); + (bMalformed + ? "<MALFORMED>" + : rtl::OUStringToOString( + aAbs, RTL_TEXTENCODING_UTF8).getStr()), + (aRelToAbsTest[i].pAbs == 0 + ? "<MALFORMED>" : aRelToAbsTest[i].pAbs)); + CPPUNIT_ASSERT(false); + } } // Check encode with unusual text encodings: + { sal_Unicode const aText1U[] = { ' ', '!', 0x0401, 0x045F, 0 }; aText1 = rtl::OUString(aText1U); aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%20!%A1%FF")); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_ISO_8859_5) == aText2, - "failure 20"); + CPPUNIT_ASSERT_MESSAGE( + "failure 20", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeIgnoreEscapes, + RTL_TEXTENCODING_ISO_8859_5) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 20a", + (rtl::Uri::decode( + aText2, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_5) + == aText1)); } { sal_Unicode const aText1U[] = { ' ', '!', 0x0401, 0x0700, 0x045F, 0 }; aText1 = rtl::OUString(aText1U); - aText2 = rtl::OUString(); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_ISO_8859_5) == aText2, - "failure 21"); + sal_Unicode const aText2U[] = { + '%', '2', '0', '!', '%', 'A', '1', 0x0700, '%', 'F', 'F', 0 }; + aText2 = rtl::OUString(aText2U); + CPPUNIT_ASSERT_MESSAGE( + "failure 21", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeIgnoreEscapes, + RTL_TEXTENCODING_ISO_8859_5) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 21a", + (rtl::Uri::decode( + aText2, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_ISO_8859_5) + == aText1)); } { sal_Unicode const aText1U[] = { ' ', '!', 0x028A, 0xD849, 0xDD13, 0 }; aText1 = rtl::OUString(aText1U); - aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( - "%20!%81%30%B1%33%95%39%C5%37")); - TEST_ENSURE(rtl::Uri::encode(aText1, - rtl_UriCharClassUric, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_GB_18030) == aText2, - "failure 22"); + aText2 = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("%20!%81%30%B1%33%95%39%C5%37")); + CPPUNIT_ASSERT_MESSAGE( + "failure 22", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeIgnoreEscapes, + RTL_TEXTENCODING_GB_18030) + == aText2)); + CPPUNIT_ASSERT_MESSAGE( + "failure 22a", + (rtl::Uri::decode( + aText2, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_GB_18030) + == aText1)); } - // printf("test_Uri done\n"); -} + // Check strict mode: -} // namespace rtl_testuri + { + sal_Unicode const aText1U[] = { ' ', '!', 0x0401, 0x0700, 0x045F, 0 }; + aText1 = rtl::OUString(aText1U); + aText2 = rtl::OUString(); + CPPUNIT_ASSERT_MESSAGE( + "failure 23", + (rtl::Uri::encode( + aText1, rtl_UriCharClassUric, rtl_UriEncodeStrict, + RTL_TEXTENCODING_ISO_8859_5) + == aText2)); + } + { + aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%20%C4%80%FF")); + aText2 = rtl::OUString(); + CPPUNIT_ASSERT_MESSAGE( + "failure 24", + (rtl::Uri::decode( + aText1, rtl_UriDecodeStrict, RTL_TEXTENCODING_UTF8) + == aText2)); + } + { + aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%81 ")); + aText2 = rtl::OUString(); + CPPUNIT_ASSERT_MESSAGE( + "failure 25", + (rtl::Uri::decode( + aText1, rtl_UriDecodeStrict, RTL_TEXTENCODING_GB_18030) + == aText2)); + } + { + aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%81%20")); + aText2 = rtl::OUString(); + CPPUNIT_ASSERT_MESSAGE( + "failure 26", + (rtl::Uri::decode( + aText1, rtl_UriDecodeStrict, RTL_TEXTENCODING_GB_18030) + == aText2)); + } + { + aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%81%30%B1%33")); + sal_Unicode const aText2U[] = { 0x028A, 0 }; + aText2 = rtl::OUString(aText2U); + CPPUNIT_ASSERT_MESSAGE( + "failure 27", + (rtl::Uri::decode( + aText1, rtl_UriDecodeStrict, RTL_TEXTENCODING_GB_18030) + == aText2)); + } + { + aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%810%B13")); + sal_Unicode const aText2U[] = { 0x028A, 0 }; + aText2 = rtl::OUString(aText2U); + CPPUNIT_ASSERT_MESSAGE( + "failure 28", + (rtl::Uri::decode( + aText1, rtl_UriDecodeStrict, RTL_TEXTENCODING_GB_18030) + == aText2)); + } +} -// ----------------------------------------------------------------------------- -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( rtl_testuri::uri, "rtl_testuri" ); +} -// ----------------------------------------------------------------------------- +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "rtl_testuri"); NOADDITIONAL; - |