diff options
Diffstat (limited to 'sal/qa/rtl/uri')
-rw-r--r-- | sal/qa/rtl/uri/makefile.mk | 75 | ||||
-rw-r--r-- | sal/qa/rtl/uri/rtl_Uri.cxx | 300 | ||||
-rw-r--r-- | sal/qa/rtl/uri/rtl_testuri.cxx | 548 |
3 files changed, 0 insertions, 923 deletions
diff --git a/sal/qa/rtl/uri/makefile.mk b/sal/qa/rtl/uri/makefile.mk deleted file mode 100644 index 5d3fc19dc..000000000 --- a/sal/qa/rtl/uri/makefile.mk +++ /dev/null @@ -1,75 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=sal -TARGET=qa_rtl_uritest - -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -CFLAGS+= $(LFS_CFLAGS) -CXXFLAGS+= $(LFS_CFLAGS) - -CFLAGSCXX += $(CPPUNIT_CFLAGS) - -# --- BEGIN -------------------------------------------------------- -SHL1OBJS= \ - $(SLO)$/rtl_Uri.obj -SHL1TARGET= rtl_uri_simple -SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) - -SHL1IMPLIB= i$(SHL1TARGET) -DEF1NAME =$(SHL1TARGET) -SHL1VERSIONMAP = $(PRJ)$/qa$/export.map - -# END -------------------------------------------------------------- - -# --- BEGIN -------------------------------------------------------- -SHL2OBJS= \ - $(SLO)$/rtl_testuri.obj -SHL2TARGET= rtl_Uri -SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) - -SHL2IMPLIB= i$(SHL2TARGET) -DEF2NAME =$(SHL2TARGET) -SHL2VERSIONMAP = $(PRJ)$/qa$/export.map - -# END -------------------------------------------------------------- - -#------------------------------- All object files ------------------------------- -# do this here, so we get right dependencies -# SLOFILES=$(SHL1OBJS) - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk -.INCLUDE : $(PRJ)$/qa$/cppunit_local.mk diff --git a/sal/qa/rtl/uri/rtl_Uri.cxx b/sal/qa/rtl/uri/rtl_Uri.cxx deleted file mode 100644 index 1f9f99613..000000000 --- a/sal/qa/rtl/uri/rtl_Uri.cxx +++ /dev/null @@ -1,300 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sal.hxx" -#include <stdlib.h> -#include <rtl/ustring.hxx> -#include <rtl/strbuf.hxx> -#include <rtl/uri.hxx> -#include <osl/thread.h> -#include <osl/file.hxx> - -#include <testshl/simpleheader.hxx> - -// ----------------------------------------------------------------------------- - -namespace Stringtest -{ - rtl::OString toHex(unsigned char _c) - { - rtl::OStringBuffer sStrBuf; - static char cHex[] = "0123456789ABCDEF"; - - int nhigh = int(_c) >> 4 & 0xf; - int nlow = int(_c) & 0xf; - sStrBuf.append( cHex[nhigh] ); - sStrBuf.append( cHex[nlow] ); - return sStrBuf.makeStringAndClear(); - } - - rtl::OString escapeString(rtl::OString const& _sStr) - { - rtl::OStringBuffer sStrBuf; - sal_Int32 nLength = _sStr.getLength(); - for(int i=0;i<nLength;++i) - { - unsigned char c = (unsigned char)_sStr[i]; - if (c > 127) - { - sStrBuf.append("%"); - sStrBuf.append(toHex(c)); - } - else - { - sStrBuf.append((char)c); - } - } - return sStrBuf.makeStringAndClear(); - } - - // ----------------------------------------------------------------------------- - - class Convert : public CppUnit::TestFixture - { - rtl::OUString m_aStr; - public: - /* - rtl::OString toUTF8(rtl::OUString const& _suStr) - { - rtl::OString sStrAsUTF8 = rtl::OUStringToOString(_suStr, RTL_TEXTENCODING_UTF8); - t_print("%s\n", escapeString(sStrAsUTF8).getStr()); - return sStrAsUTF8; - } - */ - rtl::OUString fromUTF8(rtl::OString const& _suStr) - { - rtl::OUString suStr = rtl::OStringToOUString(_suStr, RTL_TEXTENCODING_UTF8); - return suStr; - } - - rtl::OString convertToOString(rtl::OUString const& _suStr) - { - return rtl::OUStringToOString(_suStr, osl_getThreadTextEncoding()/*RTL_TEXTENCODING_ASCII_US*/); - } - - void showContent(rtl::OUString const& _suStr) - { - rtl::OString sStr = convertToOString(_suStr); - t_print("%s\n", sStr.getStr()); - } - - void toUTF8_mech(rtl::OUString const& _suStr, rtl_UriEncodeMechanism _eMechanism) - { - rtl::OUString suStr; - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassNone, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassUric, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassUricNoSlash, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassRelSegment, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassRegName, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassUserinfo, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassPchar, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - suStr = rtl::Uri::encode(_suStr, rtl_UriCharClassUnoParamValue, _eMechanism, RTL_TEXTENCODING_UTF8); - showContent(suStr); - } - - void toUTF8(rtl::OUString const& _suStr) - { - t_print("rtl_UriEncodeIgnoreEscapes \n"); - toUTF8_mech(_suStr, rtl_UriEncodeIgnoreEscapes); - t_print("\n"); - t_print("# rtl_UriEncodeKeepEscapes\n"); - toUTF8_mech(_suStr, rtl_UriEncodeKeepEscapes); - t_print("\n"); - t_print("# rtl_UriEncodeCheckEscapes\n"); - toUTF8_mech(_suStr, rtl_UriEncodeCheckEscapes); - t_print("\n"); - } - - void test_FromUTF8_001() - { - // string --> ustring - rtl::OString sStrUTF8("h%C3%A4llo"); - rtl::OUString suStrUTF8 = rtl::OStringToOUString(sStrUTF8, RTL_TEXTENCODING_ASCII_US); - - // UTF8 --> real ustring - rtl::OUString suStr_UriDecodeToIuri = rtl::Uri::decode(suStrUTF8, rtl_UriDecodeToIuri, RTL_TEXTENCODING_UTF8); - showContent(suStr_UriDecodeToIuri); - - // string --> ustring - rtl::OString sStr("h\xE4llo"); - rtl::OUString suString = rtl::OStringToOUString(sStr, RTL_TEXTENCODING_ISO_8859_15); - - CPPUNIT_ASSERT_MESSAGE("Strings must be equal", suString.equals(suStr_UriDecodeToIuri) == sal_True); - - // ustring --> ustring (UTF8) - rtl::OUString suStr2 = rtl::Uri::encode(suStr_UriDecodeToIuri, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8); - showContent(suStr2); - - CPPUNIT_ASSERT_MESSAGE("Strings must be equal", suStr2.equals(suStrUTF8) == sal_True); - // suStr should be equal to suStr2 - } - - // "%C3%84qypten"; - // testshl2 ../../../unxlngi4.pro/lib/libConvert.so "-onlyerrors" - // # Type: 'Directory' file name '%E6%89%8B%E6%9C%BA%E5%8F%B7%E7%A0%81' - // # Type: 'Directory' file name '%E6%9C%AA%E5%91%BD%E5%90%8Dzhgb18030' - // # Type: 'Regular file' file name '%E5%B7%A5%E4%BD%9C' - // # Type: 'Regular file' file name '%E4%BA%8C%E6%89%8B%E6%88%BF%E4%B9%B0%E5%8D%96%E5%90%88%E5%90%8C%E8%8D%89%E7%A8%BF.doc' - // ls - rtl::OString getFileTypeName(osl::FileStatus const& _aStatus) - { - rtl::OString sType; - if (_aStatus.isValid(osl_FileStatus_Mask_Type)) - { - osl::FileStatus::Type aType = _aStatus.getFileType(); - if (aType == osl::FileStatus::Directory) - { - sType = "Directory"; - } - else if (aType == osl::FileStatus::Regular) - { - sType = "Regular file"; - } - else if (aType == osl::FileStatus::Volume) - { - sType = "Volume"; - } - else if (aType == osl::FileStatus::Fifo) - { - sType = "Fifo"; - } - else if (aType == osl::FileStatus::Socket) - { - sType = "Socket"; - } - else if (aType == osl::FileStatus::Link) - { - sType = "Link"; - } - else if (aType == osl::FileStatus::Special) - { - sType = "Special"; - } - else if (aType == osl::FileStatus::Unknown) - { - sType = "Unknown"; - } - else - { - sType = "Not handled yet"; - } - } - else - { - sType = "ERROR: osl_FileStatus_Mask_Type not set for FileStatus!"; - } - return sType; - } - - - void test_UTF8_files() - { -#ifdef UNX - rtl::OUString suDirURL(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///tmp/atestdir"))); -#else /* Windows */ - rtl::OUString suDirURL(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///c:/temp/atestdir"))); -#endif - osl::Directory aDir(suDirURL); - aDir.open(); - if (aDir.isOpen()) - { - osl::DirectoryItem aItem; - osl::FileStatus aStatus(osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_Attributes | osl_FileStatus_Mask_Type); - while (aDir.getNextItem(aItem) == ::osl::FileBase::E_None) - { - if (osl::FileBase::E_None == aItem.getFileStatus(aStatus) && - aStatus.isValid(osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_Attributes)) - { - rtl::OString sType = getFileTypeName(aStatus); - - rtl::OUString suFilename = aStatus.getFileName(); - // rtl::OUString suFullFileURL; - - rtl::OUString suStrUTF8 = rtl::Uri::encode(suFilename, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8); - rtl::OString sStrUTF8 = convertToOString(suStrUTF8); - t_print("Type: '%s' file name '%s'\n", sType.getStr(), sStrUTF8.getStr()); - } - } - aDir.close(); - } - else - { - rtl::OString sStr; - sStr = rtl::OUStringToOString(suDirURL, osl_getThreadTextEncoding()); - t_print("can't open dir:'%s'\n", sStr.getStr()); - } - } - - void test_FromUTF8() - { - rtl::OString sStr("h%C3%A4llo"); - rtl::OUString suStr = rtl::OStringToOUString(sStr, osl_getThreadTextEncoding()); - -// rtl_UriEncodeIgnoreEscapes, -// rtl_UriEncodeKeepEscapes, -// rtl_UriEncodeCheckEscapes, -// rtl::OUString suStr2 = rtl::Uri::encode(suStr, rtl_UriCharClassRegName, rtl_UriEncodeCheckEscapes, RTL_TEXTENCODING_UTF8); - rtl::OUString suStr_UriDecodeNone = rtl::Uri::decode(suStr, rtl_UriDecodeNone, RTL_TEXTENCODING_UTF8); - showContent(suStr_UriDecodeNone); - toUTF8(suStr_UriDecodeNone); - - rtl::OUString suStr_UriDecodeToIuri = rtl::Uri::decode(suStr, rtl_UriDecodeToIuri, RTL_TEXTENCODING_UTF8); - showContent(suStr_UriDecodeToIuri); - toUTF8(suStr_UriDecodeToIuri); - - rtl::OUString suStr_UriDecodeWithCharset = rtl::Uri::decode(suStr, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8); - showContent(suStr_UriDecodeWithCharset); - toUTF8(suStr_UriDecodeWithCharset); - } - - CPPUNIT_TEST_SUITE( Convert ); - CPPUNIT_TEST( test_FromUTF8_001 ); -// CPPUNIT_TEST( test_UTF8_files ); -// CPPUNIT_TEST( test_FromUTF8 ); - CPPUNIT_TEST_SUITE_END( ); - }; - -} - - -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( Stringtest::Convert, "Stringtest" ); - -// LLA: doku anpassen!!! - -NOADDITIONAL; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/qa/rtl/uri/rtl_testuri.cxx b/sal/qa/rtl/uri/rtl_testuri.cxx deleted file mode 100644 index fe8ed6c41..000000000 --- a/sal/qa/rtl/uri/rtl_testuri.cxx +++ /dev/null @@ -1,548 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sal.hxx" - -#include "rtl/strbuf.hxx" -#include "rtl/textenc.h" -#include "rtl/uri.h" -#include "rtl/uri.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" - -#include "testshl/simpleheader.hxx" - -#include <cstddef> -#include <stdio.h> - -namespace { - -struct Test: public CppUnit::TestFixture { - void test_Uri(); - - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(test_Uri); - CPPUNIT_TEST_SUITE_END(); -}; - -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")); - aText2 = aText1; - {for (rtl_UriCharClass eCharClass = eFirstCharClass; - eCharClass <= eLastCharClass; - eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) - { - 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")); - aText2 = aText1; - {for (rtl_UriCharClass eCharClass = eFirstCharClass; - eCharClass <= eLastCharClass; - eCharClass = static_cast< rtl_UriCharClass >(eCharClass + 1)) - { - 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: - - aBuffer.append(static_cast< sal_Unicode >(0xD800)); // %ED%A0%80 - aBuffer.append(static_cast< sal_Unicode >(0xD800)); // %F0%90%8F%BF - aBuffer.append(static_cast< sal_Unicode >(0xDFFF)); - 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")); - 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(); - 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; - 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; - CPPUNIT_ASSERT_MESSAGE( - "failure 17", - (rtl::Uri::encode( - aText1, rtl_UriCharClassUric, rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_UTF8) - == aText2)); - - // Check IURI handling: - - aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%30%C3%BF")); - aBuffer.appendAscii(RTL_CONSTASCII_STRINGPARAM("%30")); - aBuffer.append(static_cast< sal_Unicode >(0x00FF)); - aText2 = aBuffer.makeStringAndClear(); - 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")); - CPPUNIT_ASSERT_MESSAGE( - "failure 19", - (rtl::Uri::encode( - aText1, rtl_UriCharClassUnoParamValue, rtl_UriEncodeCheckEscapes, - RTL_TEXTENCODING_ASCII_US) - == aText2)); - - // Check Uri::convertRelToAbs: - - struct RelToAbsTest - { - char const * pBase; - char const * pRel; - char const * pAbs; - }; - static RelToAbsTest const aRelToAbsTest[] - = { // The following tests are taken from RFC 2396: - { "http://a/b/c/d;p?q", "g:h", "g:h" }, - { "http://a/b/c/d;p?q", "g", "http://a/b/c/g" }, - { "http://a/b/c/d;p?q", "./g", "http://a/b/c/g" }, - { "http://a/b/c/d;p?q", "g/", "http://a/b/c/g/" }, - { "http://a/b/c/d;p?q", "/g", "http://a/g" }, - { "http://a/b/c/d;p?q", "//g", "http://g" }, - { "http://a/b/c/d;p?q", "?y", "http://a/b/c/?y" }, - { "http://a/b/c/d;p?q", "g?y", "http://a/b/c/g?y" }, - { "http://a/b/c/d;p?q", "#s", "http://a/b/c/d;p?q#s" }, - { "http://a/b/c/d;p?q", "g#s", "http://a/b/c/g#s" }, - { "http://a/b/c/d;p?q", "g?y#s", "http://a/b/c/g?y#s" }, - { "http://a/b/c/d;p?q", ";x", "http://a/b/c/;x" }, - { "http://a/b/c/d;p?q", "g;x", "http://a/b/c/g;x" }, - { "http://a/b/c/d;p?q", "g;x?y#s", "http://a/b/c/g;x?y#s" }, - { "http://a/b/c/d;p?q", ".", "http://a/b/c/" }, - { "http://a/b/c/d;p?q", "./", "http://a/b/c/" }, - { "http://a/b/c/d;p?q", "..", "http://a/b/" }, - { "http://a/b/c/d;p?q", "../", "http://a/b/" }, - { "http://a/b/c/d;p?q", "../g", "http://a/b/g" }, - { "http://a/b/c/d;p?q", "../..", "http://a/" }, - { "http://a/b/c/d;p?q", "../../", "http://a/" }, - { "http://a/b/c/d;p?q", "../../g", "http://a/g" }, - { "http://a/b/c/d;p?q", "", "http://a/b/c/d;p?q" }, - { "http://a/b/c/d;p?q", "../../../g", "http://a/../g" }, - { "http://a/b/c/d;p?q", "../../../../g", "http://a/../../g" }, - { "http://a/b/c/d;p?q", "/./g", "http://a/./g" }, - { "http://a/b/c/d;p?q", "/../g", "http://a/../g" }, - { "http://a/b/c/d;p?q", "g.", "http://a/b/c/g." }, - { "http://a/b/c/d;p?q", ".g", "http://a/b/c/.g" }, - { "http://a/b/c/d;p?q", "g..", "http://a/b/c/g.." }, - { "http://a/b/c/d;p?q", "..g", "http://a/b/c/..g" }, - { "http://a/b/c/d;p?q", "./../g", "http://a/b/g" }, - { "http://a/b/c/d;p?q", "./g/.", "http://a/b/c/g/" }, - { "http://a/b/c/d;p?q", "g/./h", "http://a/b/c/g/h" }, - { "http://a/b/c/d;p?q", "g/../h", "http://a/b/c/h" }, - { "http://a/b/c/d;p?q", "g;x=1/./y", "http://a/b/c/g;x=1/y" }, - { "http://a/b/c/d;p?q", "g;x=1/../y", "http://a/b/c/y" }, - { "http://a/b/c/d;p?q", "g?y/./x", "http://a/b/c/g?y/./x" }, - { "http://a/b/c/d;p?q", "g?y/../x", "http://a/b/c/g?y/../x" }, - { "http://a/b/c/d;p?q", "g#s/./x", "http://a/b/c/g#s/./x" }, - { "http://a/b/c/d;p?q", "g#s/../x", "http://a/b/c/g#s/../x" }, - { "http://a/b/c/d;p?q", "http:g", "http:g" }, - { "http!://a/b/c/d;p?q", "g:h", "g:h" }, - { "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 }, - { "http://a/b/../", "../c", "http://a/b/../../c" }, - { "http://a/b/..", "../c", "http://a/c" }, - { "http://a/./b/", ".././.././../c", "http://a/./../../c" } }; - for (std::size_t 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 (const rtl::MalformedUriException &) { - bMalformed = true; - } - 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)); - 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")); - 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); - 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")); - 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)); - } - - // Check strict mode: - - { - 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)); - } - - // Check rtl_UriEncodeStrictKeepEscapes mode: - - { - aText1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%%ea%c3%aa")); - aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%25%EA%C3%AA")); - CPPUNIT_ASSERT_MESSAGE( - "failure 29", - (rtl::Uri::encode( - aText1, rtl_UriCharClassUric, rtl_UriEncodeStrictKeepEscapes, - RTL_TEXTENCODING_UTF8) - == aText2)); - } - { - sal_Unicode const aText1U[] = { 0x00EA, 0 }; - aText1 = rtl::OUString(aText1U); - aText2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%C3%AA")); - CPPUNIT_ASSERT_MESSAGE( - "failure 30", - (rtl::Uri::encode( - aText1, rtl_UriCharClassUric, rtl_UriEncodeStrictKeepEscapes, - RTL_TEXTENCODING_UTF8) - == aText2)); - } - { - 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_UriEncodeStrictKeepEscapes, - RTL_TEXTENCODING_ISO_8859_5) - == aText2)); - } -} - -} - -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "rtl_testuri"); -NOADDITIONAL; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |