1*89b56da7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*89b56da7SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*89b56da7SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*89b56da7SAndrew Rist * distributed with this work for additional information
6*89b56da7SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*89b56da7SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*89b56da7SAndrew Rist * "License"); you may not use this file except in compliance
9*89b56da7SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*89b56da7SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*89b56da7SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*89b56da7SAndrew Rist * software distributed under the License is distributed on an
15*89b56da7SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*89b56da7SAndrew Rist * KIND, either express or implied. See the License for the
17*89b56da7SAndrew Rist * specific language governing permissions and limitations
18*89b56da7SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*89b56da7SAndrew Rist *************************************************************/
21*89b56da7SAndrew Rist
22*89b56da7SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_tools.hxx"
26cdf0e10cSrcweir #include <tools/inetmime.hxx>
27cdf0e10cSrcweir #include <tools/urlobj.hxx>
28cdf0e10cSrcweir #include "com/sun/star/util/XStringWidth.hpp"
29cdf0e10cSrcweir #include "com/sun/star/uno/Reference.hxx"
30cdf0e10cSrcweir #include "cppuhelper/implbase1.hxx"
31cdf0e10cSrcweir #include "osl/thread.h"
32cdf0e10cSrcweir #include "rtl/string.h"
33cdf0e10cSrcweir #include "rtl/string.hxx"
34cdf0e10cSrcweir #include "rtl/textenc.h"
35cdf0e10cSrcweir #include "rtl/ustring.h"
36cdf0e10cSrcweir #include "rtl/ustring.hxx"
37cdf0e10cSrcweir
38cdf0e10cSrcweir #include <cstddef>
39cdf0e10cSrcweir #include <cstdlib>
40cdf0e10cSrcweir #include <iostream>
41cdf0e10cSrcweir #include <ostream>
42cdf0e10cSrcweir #include <stdio.h>
43cdf0e10cSrcweir
44cdf0e10cSrcweir using namespace com::sun;
45cdf0e10cSrcweir
operator <<(std::ostream & out,rtl::OUString const & value)46cdf0e10cSrcweir std::ostream & operator <<(std::ostream & out, rtl::OUString const & value) {
47cdf0e10cSrcweir out << rtl::OUStringToOString(value, RTL_TEXTENCODING_ASCII_US).getStr();
48cdf0e10cSrcweir return out;
49cdf0e10cSrcweir }
50cdf0e10cSrcweir
51cdf0e10cSrcweir namespace {
52cdf0e10cSrcweir
assertEqual(rtl::OUString const & message,T1 const & expected,T2 const & actual)53cdf0e10cSrcweir template< typename T1, typename T2 > bool assertEqual(
54cdf0e10cSrcweir rtl::OUString const & message, T1 const & expected, T2 const & actual)
55cdf0e10cSrcweir {
56cdf0e10cSrcweir bool success = expected == actual;
57cdf0e10cSrcweir if (!success) {
58cdf0e10cSrcweir std::cout
59cdf0e10cSrcweir << "FAILED " << message << ": " << expected << " != " << actual
60cdf0e10cSrcweir << '\n';
61cdf0e10cSrcweir }
62cdf0e10cSrcweir return success;
63cdf0e10cSrcweir }
64cdf0e10cSrcweir
65cdf0e10cSrcweir }
66cdf0e10cSrcweir
67cdf0e10cSrcweir //============================================================================
68cdf0e10cSrcweir //
69cdf0e10cSrcweir // testRelToAbs
70cdf0e10cSrcweir //
71cdf0e10cSrcweir //============================================================================
72cdf0e10cSrcweir
73cdf0e10cSrcweir struct RelToAbsTest
74cdf0e10cSrcweir {
75cdf0e10cSrcweir sal_Char const * m_pBase;
76cdf0e10cSrcweir sal_Char const * m_pRel;
77cdf0e10cSrcweir sal_Char const * m_pAbs;
78cdf0e10cSrcweir sal_Char const * m_pAlt;
79cdf0e10cSrcweir };
80cdf0e10cSrcweir
81cdf0e10cSrcweir //============================================================================
testRelToAbs(RelToAbsTest const * pTest,std::size_t nSize)82cdf0e10cSrcweir bool testRelToAbs(RelToAbsTest const * pTest, std::size_t nSize)
83cdf0e10cSrcweir {
84cdf0e10cSrcweir bool bSuccess = true;
85cdf0e10cSrcweir INetURLObject aBase;
86cdf0e10cSrcweir String aTest;
87cdf0e10cSrcweir for (std::size_t i = 0; i < nSize; ++i)
88cdf0e10cSrcweir {
89cdf0e10cSrcweir if (pTest[i].m_pBase)
90cdf0e10cSrcweir {
91cdf0e10cSrcweir aBase.SetURL(pTest[i].m_pBase);
92cdf0e10cSrcweir }
93cdf0e10cSrcweir if (aBase.HasError())
94cdf0e10cSrcweir {
95cdf0e10cSrcweir printf(" BAD BASE %s\n",
96cdf0e10cSrcweir pTest[i].m_pBase ? pTest[i].m_pBase : "");
97cdf0e10cSrcweir bSuccess = false;
98cdf0e10cSrcweir continue;
99cdf0e10cSrcweir }
100cdf0e10cSrcweir INetURLObject aAbs;
101cdf0e10cSrcweir aBase.GetNewAbsURL(pTest[i].m_pRel, &aAbs);
102cdf0e10cSrcweir ByteString aTheAbs(String(aAbs.GetMainURL(INetURLObject::NO_DECODE)),
103cdf0e10cSrcweir RTL_TEXTENCODING_ISO_8859_1);
104cdf0e10cSrcweir if (!(aTheAbs.Equals(pTest[i].m_pAbs)
105cdf0e10cSrcweir || pTest[i].m_pAlt && aTheAbs.Equals(pTest[i].m_pAlt)))
106cdf0e10cSrcweir {
107cdf0e10cSrcweir printf(" BAD GetNewAbsURL %s -> %s (%s)\n", pTest[i].m_pRel,
108cdf0e10cSrcweir aTheAbs.GetBuffer(), pTest[i].m_pAbs);
109cdf0e10cSrcweir bSuccess = false;
110cdf0e10cSrcweir }
111cdf0e10cSrcweir aTheAbs = ByteString(
112cdf0e10cSrcweir String(
113cdf0e10cSrcweir INetURLObject::GetAbsURL(
114cdf0e10cSrcweir aBase.GetMainURL(INetURLObject::NO_DECODE),
115cdf0e10cSrcweir UniString(pTest[i].m_pRel, RTL_TEXTENCODING_ISO_8859_1))),
116cdf0e10cSrcweir RTL_TEXTENCODING_ISO_8859_1);
117cdf0e10cSrcweir if (!(aTheAbs.Equals(pTest[i].m_pAbs)
118cdf0e10cSrcweir || pTest[i].m_pAlt && aTheAbs.Equals(pTest[i].m_pAlt)))
119cdf0e10cSrcweir {
120cdf0e10cSrcweir printf(" BAD GetAbsURL %s -> %s (%s)\n", pTest[i].m_pRel,
121cdf0e10cSrcweir aTheAbs.GetBuffer(), pTest[i].m_pAbs);
122cdf0e10cSrcweir bSuccess = false;
123cdf0e10cSrcweir }
124cdf0e10cSrcweir }
125cdf0e10cSrcweir printf("\n");
126cdf0e10cSrcweir return bSuccess;
127cdf0e10cSrcweir }
128cdf0e10cSrcweir
129cdf0e10cSrcweir //============================================================================
130cdf0e10cSrcweir //
131cdf0e10cSrcweir // testSetFSys
132cdf0e10cSrcweir //
133cdf0e10cSrcweir //============================================================================
134cdf0e10cSrcweir
135cdf0e10cSrcweir struct SetFSysTest
136cdf0e10cSrcweir {
137cdf0e10cSrcweir sal_Char const * m_pPath;
138cdf0e10cSrcweir INetURLObject::FSysStyle m_eStyle;
139cdf0e10cSrcweir sal_Char const * m_pUrl;
140cdf0e10cSrcweir };
141cdf0e10cSrcweir
142cdf0e10cSrcweir //============================================================================
toString(INetURLObject::FSysStyle eStyle)143cdf0e10cSrcweir inline sal_Char const * toString(INetURLObject::FSysStyle eStyle)
144cdf0e10cSrcweir {
145cdf0e10cSrcweir static sal_Char aBuffer[5];
146cdf0e10cSrcweir int i = 0;
147cdf0e10cSrcweir if (eStyle & INetURLObject::FSYS_VOS)
148cdf0e10cSrcweir aBuffer[i++] = 'V';
149cdf0e10cSrcweir if (eStyle & INetURLObject::FSYS_UNX)
150cdf0e10cSrcweir aBuffer[i++] = 'U';
151cdf0e10cSrcweir if (eStyle & INetURLObject::FSYS_DOS)
152cdf0e10cSrcweir aBuffer[i++] = 'D';
153cdf0e10cSrcweir if (eStyle & INetURLObject::FSYS_MAC)
154cdf0e10cSrcweir aBuffer[i++] = 'M';
155cdf0e10cSrcweir if (i == 0)
156cdf0e10cSrcweir aBuffer[i++] = '-';
157cdf0e10cSrcweir aBuffer[i] = '\0';
158cdf0e10cSrcweir return aBuffer;
159cdf0e10cSrcweir }
160cdf0e10cSrcweir
161cdf0e10cSrcweir //============================================================================
testSetFSys(SetFSysTest const * pTest,std::size_t nSize)162cdf0e10cSrcweir bool testSetFSys(SetFSysTest const * pTest, std::size_t nSize)
163cdf0e10cSrcweir {
164cdf0e10cSrcweir bool bSuccess = true;
165cdf0e10cSrcweir String aPath;
166cdf0e10cSrcweir for (std::size_t i = 0; i < nSize; ++i)
167cdf0e10cSrcweir {
168cdf0e10cSrcweir if (pTest[i].m_pPath)
169cdf0e10cSrcweir aPath = String::CreateFromAscii(pTest[i].m_pPath);
170cdf0e10cSrcweir if (aPath.Len() == 0)
171cdf0e10cSrcweir {
172cdf0e10cSrcweir printf(" NO PATH\n");
173cdf0e10cSrcweir continue;
174cdf0e10cSrcweir }
175cdf0e10cSrcweir INetURLObject aUrl1(aPath, pTest[i].m_eStyle);
176cdf0e10cSrcweir INetURLObject aUrl2;
177cdf0e10cSrcweir aUrl2.setFSysPath(aPath, pTest[i].m_eStyle);
178cdf0e10cSrcweir if (aUrl1.GetMainURL(INetURLObject::NO_DECODE).
179cdf0e10cSrcweir equalsAscii(pTest[i].m_pUrl)
180cdf0e10cSrcweir && aUrl2.GetMainURL(INetURLObject::NO_DECODE).
181cdf0e10cSrcweir equalsAscii(pTest[i].m_pUrl))
182cdf0e10cSrcweir printf(" ok %s %s -> %s\n",
183cdf0e10cSrcweir ByteString(aPath, RTL_TEXTENCODING_ISO_8859_1).GetBuffer(),
184cdf0e10cSrcweir toString(pTest[i].m_eStyle), pTest[i].m_pUrl);
185cdf0e10cSrcweir else
186cdf0e10cSrcweir {
187cdf0e10cSrcweir String aTestA = aUrl1.GetMainURL(INetURLObject::NO_DECODE);
188cdf0e10cSrcweir String aTestB = aUrl2.GetMainURL(INetURLObject::NO_DECODE);
189cdf0e10cSrcweir
190cdf0e10cSrcweir printf(" BAD %s %s -> %s, %s (%s)\n",
191cdf0e10cSrcweir ByteString(aPath, RTL_TEXTENCODING_ISO_8859_1).GetBuffer(),
192cdf0e10cSrcweir toString(pTest[i].m_eStyle),
193cdf0e10cSrcweir ByteString(aTestA, RTL_TEXTENCODING_ISO_8859_1).GetBuffer(),
194cdf0e10cSrcweir ByteString(aTestB, RTL_TEXTENCODING_ISO_8859_1).GetBuffer(),
195cdf0e10cSrcweir pTest[i].m_pUrl);
196cdf0e10cSrcweir bSuccess = false;
197cdf0e10cSrcweir }
198cdf0e10cSrcweir }
199cdf0e10cSrcweir printf("\n");
200cdf0e10cSrcweir return bSuccess;
201cdf0e10cSrcweir }
202cdf0e10cSrcweir
203cdf0e10cSrcweir //============================================================================
204cdf0e10cSrcweir //
205cdf0e10cSrcweir // main
206cdf0e10cSrcweir //
207cdf0e10cSrcweir //============================================================================
208cdf0e10cSrcweir
209cdf0e10cSrcweir namespace {
210cdf0e10cSrcweir
211cdf0e10cSrcweir class StringWidth: public cppu::WeakImplHelper1< star::util::XStringWidth >
212cdf0e10cSrcweir {
213cdf0e10cSrcweir public:
queryStringWidth(rtl::OUString const & rString)214cdf0e10cSrcweir virtual sal_Int32 SAL_CALL queryStringWidth(rtl::OUString const & rString)
215cdf0e10cSrcweir throw (star::uno::RuntimeException)
216cdf0e10cSrcweir {
217cdf0e10cSrcweir return rString.getLength();
218cdf0e10cSrcweir }
219cdf0e10cSrcweir };
220cdf0e10cSrcweir
abbreviate(INetURLObject aObj)221cdf0e10cSrcweir void abbreviate(INetURLObject aObj)
222cdf0e10cSrcweir {
223cdf0e10cSrcweir star::uno::Reference< star::util::XStringWidth > xWidth(new StringWidth);
224cdf0e10cSrcweir sal_Int32 nMax = aObj.GetMainURL(INetURLObject::NO_DECODE).getLength() + 10;
225cdf0e10cSrcweir for (sal_Int32 i = -10; i <= nMax; ++i)
226cdf0e10cSrcweir {
227cdf0e10cSrcweir rtl::OString
228cdf0e10cSrcweir aAbbreviated(rtl::OUStringToOString(
229cdf0e10cSrcweir aObj.getAbbreviated(xWidth,
230cdf0e10cSrcweir i,
231cdf0e10cSrcweir INetURLObject::NO_DECODE),
232cdf0e10cSrcweir RTL_TEXTENCODING_UTF8));
233cdf0e10cSrcweir printf(
234cdf0e10cSrcweir "%4ld: <%s", static_cast< long int >(i), aAbbreviated.getStr());
235cdf0e10cSrcweir for (sal_Int32 j = aAbbreviated.getLength(); j < i; ++j)
236cdf0e10cSrcweir printf(" ");
237cdf0e10cSrcweir printf(">\n");
238cdf0e10cSrcweir }
239cdf0e10cSrcweir }
240cdf0e10cSrcweir
test_getSegmentCount(char const * url,bool ignoreFinalSlash,sal_Int32 result)241cdf0e10cSrcweir bool test_getSegmentCount(
242cdf0e10cSrcweir char const * url, bool ignoreFinalSlash, sal_Int32 result)
243cdf0e10cSrcweir {
244cdf0e10cSrcweir return
245cdf0e10cSrcweir assertEqual(
246cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test_getSegmentCount")),
247cdf0e10cSrcweir result,
248cdf0e10cSrcweir INetURLObject(rtl::OUString::createFromAscii(url)).getSegmentCount(
249cdf0e10cSrcweir ignoreFinalSlash));
250cdf0e10cSrcweir }
251cdf0e10cSrcweir
test_insertName(char const * url,char const * name,bool appendFinalSlash,sal_Int32 index,bool ignoreFinalSlash,bool success,char const * result)252cdf0e10cSrcweir bool test_insertName(
253cdf0e10cSrcweir char const * url, char const * name, bool appendFinalSlash, sal_Int32 index,
254cdf0e10cSrcweir bool ignoreFinalSlash, bool success, char const * result)
255cdf0e10cSrcweir {
256cdf0e10cSrcweir INetURLObject tmp(rtl::OUString::createFromAscii(url));
257cdf0e10cSrcweir return
258cdf0e10cSrcweir assertEqual(
259cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test_insertName")),
260cdf0e10cSrcweir success,
261cdf0e10cSrcweir tmp.insertName(
262cdf0e10cSrcweir rtl::OUString::createFromAscii(name), appendFinalSlash, index,
263cdf0e10cSrcweir ignoreFinalSlash)) &
264cdf0e10cSrcweir assertEqual(
265cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test_insertName")),
266cdf0e10cSrcweir rtl::OUString::createFromAscii(result),
267cdf0e10cSrcweir tmp.GetMainURL(INetURLObject::NO_DECODE));
268cdf0e10cSrcweir }
269cdf0e10cSrcweir
test_removeSegment(char const * url,sal_Int32 index,bool ignoreFinalSlash,bool success,char const * result)270cdf0e10cSrcweir bool test_removeSegment(
271cdf0e10cSrcweir char const * url, sal_Int32 index, bool ignoreFinalSlash, bool success,
272cdf0e10cSrcweir char const * result)
273cdf0e10cSrcweir {
274cdf0e10cSrcweir INetURLObject tmp(rtl::OUString::createFromAscii(url));
275cdf0e10cSrcweir return
276cdf0e10cSrcweir assertEqual(
277cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test_removeSegment")),
278cdf0e10cSrcweir success, tmp.removeSegment(index, ignoreFinalSlash)) &
279cdf0e10cSrcweir assertEqual(
280cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test_removeSegment")),
281cdf0e10cSrcweir rtl::OUString::createFromAscii(result),
282cdf0e10cSrcweir tmp.GetMainURL(INetURLObject::NO_DECODE));
283cdf0e10cSrcweir }
284cdf0e10cSrcweir
285cdf0e10cSrcweir }
286cdf0e10cSrcweir
287cdf0e10cSrcweir int
288cdf0e10cSrcweir #if defined WNT
289cdf0e10cSrcweir __cdecl
290cdf0e10cSrcweir #endif // WNT
main()291cdf0e10cSrcweir main()
292cdf0e10cSrcweir {
293cdf0e10cSrcweir bool bSuccess = true;
294cdf0e10cSrcweir
295cdf0e10cSrcweir if (true)
296cdf0e10cSrcweir {
297cdf0e10cSrcweir // The data for this test is taken from the files
298cdf0e10cSrcweir // <http://www.ics.uci.edu/~fielding/url/testN.html> with N = 1,
299cdf0e10cSrcweir // ..., 3, as of August 28, 2000:
300cdf0e10cSrcweir static RelToAbsTest const aTest[]
301cdf0e10cSrcweir = { //{ "http://a/b/c/d;p?q", "g:h", "g:h", 0 },
302cdf0e10cSrcweir { "http://a/b/c/d;p?q", "g", "http://a/b/c/g", 0 },
303cdf0e10cSrcweir { 0, "./g", "http://a/b/c/g", 0 },
304cdf0e10cSrcweir { 0, "g/", "http://a/b/c/g/", 0 },
305cdf0e10cSrcweir { 0, "/g", "http://a/g", 0 },
306cdf0e10cSrcweir { 0, "//g", "http://g", "http://g/" },
307cdf0e10cSrcweir //{ 0, "?y", "http://a/b/c/d;p?y", 0 },
308cdf0e10cSrcweir { 0, "g?y", "http://a/b/c/g?y", 0 },
309cdf0e10cSrcweir //{ 0, "#s", "http://a/b/c/d;p?q#s", 0 },
310cdf0e10cSrcweir { 0, "g#s", "http://a/b/c/g#s", 0 },
311cdf0e10cSrcweir { 0, "g?y#s", "http://a/b/c/g?y#s", 0 },
312cdf0e10cSrcweir { 0, ";x", "http://a/b/c/;x", 0 },
313cdf0e10cSrcweir { 0, "g;x", "http://a/b/c/g;x", 0 },
314cdf0e10cSrcweir { 0, "g;x?y#s", "http://a/b/c/g;x?y#s", 0 },
315cdf0e10cSrcweir { 0, ".", "http://a/b/c/", 0 },
316cdf0e10cSrcweir { 0, "./", "http://a/b/c/", 0 },
317cdf0e10cSrcweir { 0, "..", "http://a/b/", 0 },
318cdf0e10cSrcweir { 0, "../", "http://a/b/", 0 },
319cdf0e10cSrcweir { 0, "../g", "http://a/b/g", 0 },
320cdf0e10cSrcweir { 0, "../..", "http://a/", 0 },
321cdf0e10cSrcweir { 0, "../../", "http://a/", 0 },
322cdf0e10cSrcweir { 0, "../../g", "http://a/g", 0 },
323cdf0e10cSrcweir //{ 0, "", "http://a/b/c/d;p?q", 0 },
324cdf0e10cSrcweir { 0, "../../../g", "http://a/../g", "http://a/g" },
325cdf0e10cSrcweir { 0, "../../../../g", "http://a/../../g", "http://a/g" },
326cdf0e10cSrcweir { 0, "/./g", "http://a/./g", 0 },
327cdf0e10cSrcweir { 0, "/../g", "http://a/../g", 0 },
328cdf0e10cSrcweir { 0, "g.", "http://a/b/c/g.", 0 },
329cdf0e10cSrcweir { 0, ".g", "http://a/b/c/.g", 0 },
330cdf0e10cSrcweir { 0, "g..", "http://a/b/c/g..", 0 },
331cdf0e10cSrcweir { 0, "..g", "http://a/b/c/..g", 0 },
332cdf0e10cSrcweir { 0, "./../g", "http://a/b/g", 0 },
333cdf0e10cSrcweir { 0, "./g/.", "http://a/b/c/g/", 0 },
334cdf0e10cSrcweir { 0, "g/./h", "http://a/b/c/g/h", 0 },
335cdf0e10cSrcweir { 0, "g/../h", "http://a/b/c/h", 0 },
336cdf0e10cSrcweir { 0, "g;x=1/./y", "http://a/b/c/g;x=1/y", 0 },
337cdf0e10cSrcweir { 0, "g;x=1/../y", "http://a/b/c/y", 0 },
338cdf0e10cSrcweir { 0, "g?y/./x", "http://a/b/c/g?y/./x", 0 },
339cdf0e10cSrcweir { 0, "g?y/../x", "http://a/b/c/g?y/../x", 0 },
340cdf0e10cSrcweir { 0, "g#s/./x", "http://a/b/c/g#s/./x", 0 },
341cdf0e10cSrcweir { 0, "g#s/../x", "http://a/b/c/g#s/../x", 0 },
342cdf0e10cSrcweir { 0, "http:g", "http:g", "http://a/b/c/g" },
343cdf0e10cSrcweir //{ 0, "http:", "http:", 0 },
344cdf0e10cSrcweir { "http://a/b/c/d;p?q=1/2", "g", "http://a/b/c/g", 0 },
345cdf0e10cSrcweir { 0, "./g", "http://a/b/c/g", 0 },
346cdf0e10cSrcweir { 0, "g/", "http://a/b/c/g/", 0 },
347cdf0e10cSrcweir { 0, "/g", "http://a/g", 0 },
348cdf0e10cSrcweir { 0, "//g", "http://g", "http://g/" },
349cdf0e10cSrcweir { 0, "g?y", "http://a/b/c/g?y", 0 },
350cdf0e10cSrcweir { 0, "g?y/./x", "http://a/b/c/g?y/./x", 0 },
351cdf0e10cSrcweir { 0, "g?y/../x", "http://a/b/c/g?y/../x", 0 },
352cdf0e10cSrcweir { 0, "g#s", "http://a/b/c/g#s", 0 },
353cdf0e10cSrcweir { 0, "g#s/./x", "http://a/b/c/g#s/./x", 0 },
354cdf0e10cSrcweir { 0, "g#s/../x", "http://a/b/c/g#s/../x", 0 },
355cdf0e10cSrcweir { 0, "./", "http://a/b/c/", 0 },
356cdf0e10cSrcweir { 0, "../", "http://a/b/", 0 },
357cdf0e10cSrcweir { 0, "../g", "http://a/b/g", 0 },
358cdf0e10cSrcweir { 0, "../../", "http://a/", 0 },
359cdf0e10cSrcweir { 0, "../../g", "http://a/g", 0 },
360cdf0e10cSrcweir { "http://a/b/c/d;p=1/2?q", "g", "http://a/b/c/d;p=1/g", 0 },
361cdf0e10cSrcweir { 0, "./g", "http://a/b/c/d;p=1/g", 0 },
362cdf0e10cSrcweir { 0, "g/", "http://a/b/c/d;p=1/g/", 0 },
363cdf0e10cSrcweir { 0, "g?y", "http://a/b/c/d;p=1/g?y", 0 },
364cdf0e10cSrcweir { 0, ";x", "http://a/b/c/d;p=1/;x", 0 },
365cdf0e10cSrcweir { 0, "g;x", "http://a/b/c/d;p=1/g;x", 0 },
366cdf0e10cSrcweir { 0, "g;x=1/./y", "http://a/b/c/d;p=1/g;x=1/y", 0 },
367cdf0e10cSrcweir { 0, "g;x=1/../y", "http://a/b/c/d;p=1/y", 0 },
368cdf0e10cSrcweir { 0, "./", "http://a/b/c/d;p=1/", 0 },
369cdf0e10cSrcweir { 0, "../", "http://a/b/c/", 0 },
370cdf0e10cSrcweir { 0, "../g", "http://a/b/c/g", 0 },
371cdf0e10cSrcweir { 0, "../../", "http://a/b/", 0 },
372cdf0e10cSrcweir { 0, "../../g", "http://a/b/g", 0 },
373cdf0e10cSrcweir { "file:///", "generic:", "file:///generic:", 0 },
374cdf0e10cSrcweir { 0, "generic:#fragment", "file:///generic:#fragment", 0 },
375cdf0e10cSrcweir { 0, "generic:something", "generic:something", 0 },
376cdf0e10cSrcweir { 0, "c:/foo/bar", "file:///c:/foo/bar", 0 },
377cdf0e10cSrcweir { 0, "c:\\foo\\bar", "file:///c:%5Cfoo%5Cbar", 0 } };
378cdf0e10cSrcweir if (!testRelToAbs(aTest, sizeof aTest / sizeof (RelToAbsTest)))
379cdf0e10cSrcweir bSuccess = false;
380cdf0e10cSrcweir }
381cdf0e10cSrcweir
382cdf0e10cSrcweir if (false)
383cdf0e10cSrcweir {
384cdf0e10cSrcweir static SetFSysTest const aTest[]
385cdf0e10cSrcweir = { { "//.", INetURLObject::FSysStyle(0), "" },
386cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(1), "file:///" },
387cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(2), "file:////." },
388cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(3), "file:///" },
389cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(4), "file:///%2F%2F." },
390cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(5), "file:///" },
391cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(6), "file:////." },
392cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(7), "file:///" },
393cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(8), "file:///%2F%2F." },
394cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(9), "file:///" },
395cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(10), "file:////." },
396cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(11), "file:///" },
397cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(12), "file:///%2F%2F." },
398cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(13), "file:///" },
399cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(14), "file:////." },
400cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(15), "file:///" },
401cdf0e10cSrcweir { "//./", INetURLObject::FSysStyle(0), "" },
402cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(1), "file:///" },
403cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(2), "file:////./" },
404cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(3), "file:///" },
405cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(4), "file:///%2F%2F.%2F" },
406cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(5), "file:///" },
407cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(6), "file:////./" },
408cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(7), "file:///" },
409cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(8), "file:///%2F%2F.%2F" },
410cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(9), "file:///" },
411cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(10), "file:////./" },
412cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(11), "file:///" },
413cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(12), "file:///%2F%2F.%2F" },
414cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(13), "file:///" },
415cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(14), "file:////./" },
416cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(15), "file:///" },
417cdf0e10cSrcweir { "//./a/b\\c:d", INetURLObject::FSysStyle(0), "" },
418cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(1), "file:///a/b%5Cc:d" },
419cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(2), "file:////./a/b%5Cc:d" },
420cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(3), "file:///a/b%5Cc:d" },
421cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(4), "file:///%2F%2F.%2Fa%2Fb/c:d" },
422cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(5), "file:///a/b%5Cc:d" },
423cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(6), "file:////./a/b%5Cc:d" },
424cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(7), "file:///a/b%5Cc:d" },
425cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(8), "file:///%2F%2F.%2Fa%2Fb%5Cc/d" },
426cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(9), "file:///a/b%5Cc:d" },
427cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(10), "file:////./a/b%5Cc:d" },
428cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(11), "file:///a/b%5Cc:d" },
429cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(12), "file:///%2F%2F.%2Fa%2Fb/c:d" },
430cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(13), "file:///a/b%5Cc:d" },
431cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(14), "file:////./a/b%5Cc:d" },
432cdf0e10cSrcweir { 0, INetURLObject::FSysStyle(15), "file:///a/b%5Cc:d" } };
433cdf0e10cSrcweir if (!testSetFSys(aTest, sizeof aTest / sizeof (SetFSysTest)))
434cdf0e10cSrcweir bSuccess = false;
435cdf0e10cSrcweir }
436cdf0e10cSrcweir
437cdf0e10cSrcweir /*
438cdf0e10cSrcweir if (false)
439cdf0e10cSrcweir {
440cdf0e10cSrcweir bool bAbs = false;
441cdf0e10cSrcweir INetURLObject aUrl1(INetURLObject().smartRel2Abs(L"/export/home/mba/Office/user/Basic/soffice.sbl", bAbs));
442cdf0e10cSrcweir
443cdf0e10cSrcweir INetURLObject aUrl2a(L"/export/home/mba/Office/user/Basic/soffice.sbl", INET_PROT_FILE);
444cdf0e10cSrcweir
445cdf0e10cSrcweir INetURLObject aUrl2b(L"file:///export/home/mba/Office/user/Basic/soffice.sbl", INET_PROT_FILE);
446cdf0e10cSrcweir
447cdf0e10cSrcweir INetURLObject aUrl3a(L"/export/home/mba/Office/user/Basic/soffice.sbl", INetURLObject::FSYS_DETECT);
448cdf0e10cSrcweir
449cdf0e10cSrcweir INetURLObject aUrl3b(L"file:///export/home/mba/Office/user/Basic/soffice.sbl", INetURLObject::FSYS_DETECT);
450cdf0e10cSrcweir }
451cdf0e10cSrcweir */
452cdf0e10cSrcweir
453cdf0e10cSrcweir if (true)
454cdf0e10cSrcweir {
455cdf0e10cSrcweir INetURLObject aUrl1("http://host:1234/xy/~zw?xxx=yyy");
456cdf0e10cSrcweir if (aUrl1.HasError())
457cdf0e10cSrcweir {
458cdf0e10cSrcweir printf("BAD http\n");
459cdf0e10cSrcweir bSuccess = false;
460cdf0e10cSrcweir }
461cdf0e10cSrcweir INetURLObject aUrl2("vnd.sun.star.webdav://host:1234/xy/~zw?xxx=yyy");
462cdf0e10cSrcweir if (aUrl2.HasError())
463cdf0e10cSrcweir {
464cdf0e10cSrcweir printf("BAD vnd.sun.star.webdav\n");
465cdf0e10cSrcweir bSuccess = false;
466cdf0e10cSrcweir }
467cdf0e10cSrcweir }
468cdf0e10cSrcweir
469cdf0e10cSrcweir if (true)
470cdf0e10cSrcweir {
471cdf0e10cSrcweir struct Test { char const * in; char const * out; };
472cdf0e10cSrcweir static Test const aTest[]
473cdf0e10cSrcweir = { { "vnd.sun.star.help://", "vnd.sun.star.help:///" },
474cdf0e10cSrcweir { "vnd.sun.star.help:///", 0 },
475cdf0e10cSrcweir { "vnd.sun.star.help://swriter",
476cdf0e10cSrcweir "vnd.sun.star.help://swriter/" },
477cdf0e10cSrcweir { "vnd.sun.star.help://swriter/", 0 },
478cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345", 0 },
479cdf0e10cSrcweir { "vnd.sun.star.help://swriter/1234X", 0 },
480cdf0e10cSrcweir { "vnd.sun.star.help://swriter/?a=b?c=d", 0 },
481cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345?a=b?c=d", 0 },
482cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345???", 0 },
483cdf0e10cSrcweir { "vnd.sun.star.help://swriter/#xxx", 0 },
484cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345#xxx", 0 },
485cdf0e10cSrcweir { "vnd.sun.star.help://swriter/1234X#xxx", 0 },
486cdf0e10cSrcweir { "vnd.sun.star.help://swriter/?a=b?c=d#xxx", 0 },
487cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345?a=b?c=d#xxx", 0 },
488cdf0e10cSrcweir { "vnd.sun.star.help://swriter/12345???#xxx", 0 },
489cdf0e10cSrcweir { "vnd.sun.star.help://swriter/start", 0 },
490cdf0e10cSrcweir { "vnd.sun.star.help://swriter/s/t/a/r/t", 0 },
491cdf0e10cSrcweir { "vnd.sun.star.help://swriter/a%2Fb%3Fc%2534d/e?f", 0 },
492cdf0e10cSrcweir { "vnd.sun.star.help://swriter?foo",
493cdf0e10cSrcweir "vnd.sun.star.help://swriter/?foo" },
494cdf0e10cSrcweir { "vnd.sun.star.help://swriter/?foo", 0 } };
495cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
496cdf0e10cSrcweir {
497cdf0e10cSrcweir INetURLObject aUrl(aTest[i].in);
498cdf0e10cSrcweir if (aUrl.HasError())
499cdf0e10cSrcweir printf("BAD %s\n", aTest[i].in);
500cdf0e10cSrcweir else if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
501cdf0e10cSrcweir equalsAscii(
502cdf0e10cSrcweir aTest[i].out == 0 ? aTest[i].in : aTest[i].out)
503cdf0e10cSrcweir != sal_True)
504cdf0e10cSrcweir {
505cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
506cdf0e10cSrcweir printf("BAD %s -> %s\n",
507cdf0e10cSrcweir aTest[i].in,
508cdf0e10cSrcweir ByteString(sTest, RTL_TEXTENCODING_ASCII_US).
509cdf0e10cSrcweir GetBuffer());
510cdf0e10cSrcweir }
511cdf0e10cSrcweir }
512cdf0e10cSrcweir }
513cdf0e10cSrcweir
514cdf0e10cSrcweir if (true)
515cdf0e10cSrcweir {
516cdf0e10cSrcweir static sal_Char const * const aTest[]
517cdf0e10cSrcweir = { /*TODO "vnd.sun.star.wfs://",*/
518cdf0e10cSrcweir /*TODO "vnd.sun.star.wfs://LocalHost",*/
519cdf0e10cSrcweir /*TODO "vnd.sun.star.wfs:///c|/xyz/",*/
520cdf0e10cSrcweir /*TODO "vnd.sun.star.wfs://xxx/yyy?zzz",*/
521cdf0e10cSrcweir "vnd.sun.star.wfs:///x/y/z",
522cdf0e10cSrcweir "vnd.sun.star.generic:///x/y/z",
523cdf0e10cSrcweir "vnd.sun.star.generic://host:34/x/y/z"
524cdf0e10cSrcweir /*TODO "wfs://",*/
525cdf0e10cSrcweir /*TODO "wfs://LocalHost",*/
526cdf0e10cSrcweir /*TODO "wfs:///c|/xyz/",*/
527cdf0e10cSrcweir /*TODO "wfs://xxx/yyy?zzz",*/
528cdf0e10cSrcweir /*TODO "wfs:///x/y/z"*/ };
529cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
530cdf0e10cSrcweir {
531cdf0e10cSrcweir INetURLObject aUrl(aTest[i]);
532cdf0e10cSrcweir if (aUrl.HasError())
533cdf0e10cSrcweir printf("BAD %s\n", aTest[i]);
534cdf0e10cSrcweir else
535cdf0e10cSrcweir {
536cdf0e10cSrcweir if (aUrl.GetProtocol() != INET_PROT_GENERIC) {
537cdf0e10cSrcweir printf("BAD PROTOCOL %i -> %i\n",
538cdf0e10cSrcweir aUrl.GetProtocol(),
539cdf0e10cSrcweir INET_PROT_GENERIC);
540cdf0e10cSrcweir }
541cdf0e10cSrcweir if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
542cdf0e10cSrcweir equalsAscii(aTest[i]) != sal_True)
543cdf0e10cSrcweir {
544cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
545cdf0e10cSrcweir printf("BAD %s -> %s\n",
546cdf0e10cSrcweir aTest[i],
547cdf0e10cSrcweir ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer());
548cdf0e10cSrcweir }
549cdf0e10cSrcweir }
550cdf0e10cSrcweir }
551cdf0e10cSrcweir }
552cdf0e10cSrcweir
553cdf0e10cSrcweir if (true)
554cdf0e10cSrcweir {
555cdf0e10cSrcweir static sal_Char const * const aTest[]
556cdf0e10cSrcweir = { /*TODO "vnd.sun.star.pkg:",*/
557cdf0e10cSrcweir /*TODO "vnd.sun.star.pkg:/",*/
558cdf0e10cSrcweir /*TODO "vnd.sun.star.pkg://abc",*/
559cdf0e10cSrcweir /*TODO "vnd.sun.star.pkg://file:%2F%2F%2Fa:%2Fb%20c",*/
560cdf0e10cSrcweir "vnd.sun.star.pkg://file:%2F%2F%2Fa:%2Fb%20c/",
561cdf0e10cSrcweir "vnd.sun.star.pkg://file:%2F%2F%2Fa:%2Fb%20c/xx",
562cdf0e10cSrcweir /*TODO "vnd.sun.star.pkg://file:%2F%2F%2Fa:%2Fb%20c/xx;yy",*/
563cdf0e10cSrcweir "vnd.sun.star.pkg://file:%2F%2F%2Fa:%2Fb%20c/xx//yy" };
564cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
565cdf0e10cSrcweir {
566cdf0e10cSrcweir INetURLObject aUrl(aTest[i]);
567cdf0e10cSrcweir if (aUrl.HasError())
568cdf0e10cSrcweir printf("BAD %s\n", aTest[i]);
569cdf0e10cSrcweir else if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
570cdf0e10cSrcweir equalsAscii(aTest[i]) != sal_True)
571cdf0e10cSrcweir {
572cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
573cdf0e10cSrcweir printf("BAD %s -> %s\n",
574cdf0e10cSrcweir aTest[i],
575cdf0e10cSrcweir ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer());
576cdf0e10cSrcweir }
577cdf0e10cSrcweir }
578cdf0e10cSrcweir }
579cdf0e10cSrcweir
580cdf0e10cSrcweir if (true)
581cdf0e10cSrcweir {
582cdf0e10cSrcweir static sal_Char const * const aTest[]
583cdf0e10cSrcweir = { /*TODO "vnd.sun.star.cmd:",*/
584cdf0e10cSrcweir /*TODO "vnd.sun.star.cmd:/",*/
585cdf0e10cSrcweir "vnd.sun.star.cmd:logout",
586cdf0e10cSrcweir "vnd.sun.star.cmd:log/out",
587cdf0e10cSrcweir /*TODO "vnd.sun.star.cmd:[logout]",*/
588cdf0e10cSrcweir "vnd.sun.star.cmd:log[out]" };
589cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
590cdf0e10cSrcweir {
591cdf0e10cSrcweir INetURLObject aUrl(aTest[i]);
592cdf0e10cSrcweir if (aUrl.HasError())
593cdf0e10cSrcweir printf("BAD %s\n", aTest[i]);
594cdf0e10cSrcweir else if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
595cdf0e10cSrcweir equalsAscii(aTest[i]) != sal_True)
596cdf0e10cSrcweir {
597cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
598cdf0e10cSrcweir printf("BAD %s -> %s\n",
599cdf0e10cSrcweir aTest[i],
600cdf0e10cSrcweir ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer());
601cdf0e10cSrcweir }
602cdf0e10cSrcweir }
603cdf0e10cSrcweir }
604cdf0e10cSrcweir
605cdf0e10cSrcweir if (true)
606cdf0e10cSrcweir {
607cdf0e10cSrcweir rtl::OUString
608cdf0e10cSrcweir aParameters(rtl::OUString::createFromAscii("; CharSet=UTF-8 ; Blubber=Blob"));
609cdf0e10cSrcweir sal_Unicode const * pBegin = aParameters.getStr();
610cdf0e10cSrcweir sal_Unicode const * pEnd = pBegin + aParameters.getLength();
611cdf0e10cSrcweir INetContentTypeParameterList aList;
612cdf0e10cSrcweir if (INetMIME::scanParameters(pBegin, pEnd, &aList) == pEnd)
613cdf0e10cSrcweir {
614cdf0e10cSrcweir ULONG nCount = aList.Count();
615cdf0e10cSrcweir for (ULONG i = 0; i < nCount; ++i)
616cdf0e10cSrcweir {
617cdf0e10cSrcweir INetContentTypeParameter const * p = aList.GetObject(i);
618cdf0e10cSrcweir if (p)
619cdf0e10cSrcweir {
620cdf0e10cSrcweir /*
621cdf0e10cSrcweir printf("attribute: '%s'\n charset: '%s'\n language: '%s'\n value: '%s'\n converted: %s\n",
622cdf0e10cSrcweir p->m_sAttribute.GetBuffer(),
623cdf0e10cSrcweir p->m_sCharset.GetBuffer(),
624cdf0e10cSrcweir p->m_sLanguage.GetBuffer(),
625cdf0e10cSrcweir rtl::OUStringToOString(p->m_sValue,RTL_TEXTENCODING_UTF8).getStr(),
626cdf0e10cSrcweir p->m_bConverted ? "true" : "false");
627cdf0e10cSrcweir */
628cdf0e10cSrcweir }
629cdf0e10cSrcweir else
630cdf0e10cSrcweir printf("BAD INetContentTypeParameter\n");
631cdf0e10cSrcweir }
632cdf0e10cSrcweir }
633cdf0e10cSrcweir else
634cdf0e10cSrcweir {
635cdf0e10cSrcweir printf("BAD INetMIME::scanParameters()\n");
636cdf0e10cSrcweir bSuccess = false;
637cdf0e10cSrcweir }
638cdf0e10cSrcweir }
639cdf0e10cSrcweir
640cdf0e10cSrcweir if (true)
641cdf0e10cSrcweir {
642cdf0e10cSrcweir {
643cdf0e10cSrcweir INetURLObject aObj;
644cdf0e10cSrcweir aObj.setFSysPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a:")),
645cdf0e10cSrcweir INetURLObject::FSYS_DETECT);
646cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
647cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:")))
648cdf0e10cSrcweir {
649cdf0e10cSrcweir printf("BAD setFSysPath(\"a:\")\n");
650cdf0e10cSrcweir bSuccess = false;
651cdf0e10cSrcweir }
652cdf0e10cSrcweir }
653cdf0e10cSrcweir {
654cdf0e10cSrcweir INetURLObject aObj;
655cdf0e10cSrcweir aObj.setFSysPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
656cdf0e10cSrcweir "a:/")),
657cdf0e10cSrcweir INetURLObject::FSYS_DETECT);
658cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
659cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:/")))
660cdf0e10cSrcweir {
661cdf0e10cSrcweir printf("BAD setFSysPath(\"a:/\")\n");
662cdf0e10cSrcweir bSuccess = false;
663cdf0e10cSrcweir }
664cdf0e10cSrcweir }
665cdf0e10cSrcweir {
666cdf0e10cSrcweir INetURLObject aObj;
667cdf0e10cSrcweir aObj.setFSysPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
668cdf0e10cSrcweir "a:\\")),
669cdf0e10cSrcweir INetURLObject::FSYS_DETECT);
670cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
671cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:/")))
672cdf0e10cSrcweir {
673cdf0e10cSrcweir printf("BAD setFSysPath(\"a:\\\")\n");
674cdf0e10cSrcweir bSuccess = false;
675cdf0e10cSrcweir }
676cdf0e10cSrcweir }
677cdf0e10cSrcweir
678cdf0e10cSrcweir if (!rtl::OUString(INetURLObject("file:///a:").
679cdf0e10cSrcweir getFSysPath(INetURLObject::FSYS_DETECT)).
680cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("a:")))
681cdf0e10cSrcweir {
682cdf0e10cSrcweir printf("BAD getFSysPath(\"file:///a:\")\n");
683cdf0e10cSrcweir bSuccess = false;
684cdf0e10cSrcweir }
685cdf0e10cSrcweir if (!rtl::OUString(INetURLObject("file:///a:/").
686cdf0e10cSrcweir getFSysPath(INetURLObject::FSYS_DETECT)).
687cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("a:\\")))
688cdf0e10cSrcweir {
689cdf0e10cSrcweir printf("BAD getFSysPath(\"file:///a:/\")\n");
690cdf0e10cSrcweir bSuccess = false;
691cdf0e10cSrcweir }
692cdf0e10cSrcweir
693cdf0e10cSrcweir {
694cdf0e10cSrcweir bool bWasAbsolute;
695cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
696cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
697cdf0e10cSrcweir "file:///"))).
698cdf0e10cSrcweir smartRel2Abs(
699cdf0e10cSrcweir rtl::OUString(
700cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
701cdf0e10cSrcweir "a:")),
702cdf0e10cSrcweir bWasAbsolute).
703cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
704cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:"))
705cdf0e10cSrcweir || !bWasAbsolute)
706cdf0e10cSrcweir {
707cdf0e10cSrcweir printf("BAD smartRel2Abs(\"a:\")\n");
708cdf0e10cSrcweir bSuccess = false;
709cdf0e10cSrcweir }
710cdf0e10cSrcweir }
711cdf0e10cSrcweir {
712cdf0e10cSrcweir bool bWasAbsolute;
713cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
714cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
715cdf0e10cSrcweir "file:///"))).
716cdf0e10cSrcweir smartRel2Abs(
717cdf0e10cSrcweir rtl::OUString(
718cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
719cdf0e10cSrcweir "a:/")),
720cdf0e10cSrcweir bWasAbsolute).
721cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
722cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:/"))
723cdf0e10cSrcweir || !bWasAbsolute)
724cdf0e10cSrcweir {
725cdf0e10cSrcweir printf("BAD smartRel2Abs(\"a:/\")\n");
726cdf0e10cSrcweir bSuccess = false;
727cdf0e10cSrcweir }
728cdf0e10cSrcweir }
729cdf0e10cSrcweir {
730cdf0e10cSrcweir bool bWasAbsolute;
731cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
732cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
733cdf0e10cSrcweir "file:///"))).
734cdf0e10cSrcweir smartRel2Abs(
735cdf0e10cSrcweir rtl::OUString(
736cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
737cdf0e10cSrcweir "a:\\")),
738cdf0e10cSrcweir bWasAbsolute).
739cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
740cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("file:///a:/"))
741cdf0e10cSrcweir || !bWasAbsolute)
742cdf0e10cSrcweir {
743cdf0e10cSrcweir printf("BAD smartRel2Abs(\"a:\\\")\n");
744cdf0e10cSrcweir bSuccess = false;
745cdf0e10cSrcweir }
746cdf0e10cSrcweir }
747cdf0e10cSrcweir {
748cdf0e10cSrcweir bool bWasAbsolute;
749cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
750cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
751cdf0e10cSrcweir "file:///"))).
752cdf0e10cSrcweir smartRel2Abs(
753cdf0e10cSrcweir rtl::OUString(
754cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
755cdf0e10cSrcweir "generic:")),
756cdf0e10cSrcweir bWasAbsolute).
757cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
758cdf0e10cSrcweir equalsAsciiL(
759cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM("file:///generic:"))
760cdf0e10cSrcweir || bWasAbsolute)
761cdf0e10cSrcweir {
762cdf0e10cSrcweir printf("BAD smartRel2Abs(\"generic:\")\n");
763cdf0e10cSrcweir bSuccess = false;
764cdf0e10cSrcweir }
765cdf0e10cSrcweir }
766cdf0e10cSrcweir {
767cdf0e10cSrcweir bool bWasAbsolute;
768cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
769cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
770cdf0e10cSrcweir "file:///"))).
771cdf0e10cSrcweir smartRel2Abs(
772cdf0e10cSrcweir rtl::OUString(
773cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
774cdf0e10cSrcweir "generic:#fragment")),
775cdf0e10cSrcweir bWasAbsolute).
776cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
777cdf0e10cSrcweir equalsAsciiL(
778cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM(
779cdf0e10cSrcweir "file:///generic:#fragment"))
780cdf0e10cSrcweir || bWasAbsolute)
781cdf0e10cSrcweir {
782cdf0e10cSrcweir printf("BAD smartRel2Abs(\"generic:#fragment\")\n");
783cdf0e10cSrcweir bSuccess = false;
784cdf0e10cSrcweir }
785cdf0e10cSrcweir }
786cdf0e10cSrcweir {
787cdf0e10cSrcweir bool bWasAbsolute;
788cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
789cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
790cdf0e10cSrcweir "file:///"))).
791cdf0e10cSrcweir smartRel2Abs(
792cdf0e10cSrcweir rtl::OUString(
793cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
794cdf0e10cSrcweir "generic:something")),
795cdf0e10cSrcweir bWasAbsolute).
796cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
797cdf0e10cSrcweir equalsAsciiL(
798cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM("generic:something"))
799cdf0e10cSrcweir || !bWasAbsolute)
800cdf0e10cSrcweir {
801cdf0e10cSrcweir printf("BAD smartRel2Abs(\"generic:something\")\n");
802cdf0e10cSrcweir bSuccess = false;
803cdf0e10cSrcweir }
804cdf0e10cSrcweir }
805cdf0e10cSrcweir {
806cdf0e10cSrcweir bool bWasAbsolute;
807cdf0e10cSrcweir if (!rtl::OUString(INetURLObject(rtl::OUString(
808cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
809cdf0e10cSrcweir "file:///"))).
810cdf0e10cSrcweir smartRel2Abs(
811cdf0e10cSrcweir rtl::OUString(
812cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(
813cdf0e10cSrcweir "\\\\unc_host\\path")),
814cdf0e10cSrcweir bWasAbsolute).
815cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)).
816cdf0e10cSrcweir equalsAsciiL(
817cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM("file://unc_host/path"))
818cdf0e10cSrcweir || !bWasAbsolute)
819cdf0e10cSrcweir {
820cdf0e10cSrcweir printf("BAD smartRel2Abs(\"\\\\unc_host\\path\")\n");
821cdf0e10cSrcweir bSuccess = false;
822cdf0e10cSrcweir }
823cdf0e10cSrcweir }
824cdf0e10cSrcweir }
825cdf0e10cSrcweir
826cdf0e10cSrcweir if (true)
827cdf0e10cSrcweir {
828cdf0e10cSrcweir /*TODO
829cdf0e10cSrcweir {
830cdf0e10cSrcweir INetURLObject aObj(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http://xxx/yyy?abc/def~")));
831cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
832cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("http://xxx/yyy?abc%2Fdef%7E")))
833cdf0e10cSrcweir {
834cdf0e10cSrcweir printf("BAD http query 1\n");
835cdf0e10cSrcweir bSuccess = false;
836cdf0e10cSrcweir }
837cdf0e10cSrcweir }
838cdf0e10cSrcweir */
839cdf0e10cSrcweir {
840cdf0e10cSrcweir INetURLObject aObj(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https://xxx/yyy?abc/def~")));
841cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
842cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("https://xxx/yyy?abc/def~")))
843cdf0e10cSrcweir {
844cdf0e10cSrcweir printf("BAD https query 1\n");
845cdf0e10cSrcweir bSuccess = false;
846cdf0e10cSrcweir }
847cdf0e10cSrcweir }
848cdf0e10cSrcweir /*TODO
849cdf0e10cSrcweir {
850cdf0e10cSrcweir INetURLObject aObj(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http://xxx/yyy")));
851cdf0e10cSrcweir aObj.SetParam("abc/def~");
852cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
853cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("http://xxx/yyy?abc%2Fdef%7E")))
854cdf0e10cSrcweir {
855cdf0e10cSrcweir printf("BAD http query 2\n");
856cdf0e10cSrcweir bSuccess = false;
857cdf0e10cSrcweir }
858cdf0e10cSrcweir }
859cdf0e10cSrcweir */
860cdf0e10cSrcweir {
861cdf0e10cSrcweir INetURLObject aObj(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https://xxx/yyy")));
862cdf0e10cSrcweir aObj.SetParam("abc/def~");
863cdf0e10cSrcweir if (!rtl::OUString(aObj.GetMainURL(INetURLObject::NO_DECODE)).
864cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("https://xxx/yyy?abc/def~")))
865cdf0e10cSrcweir {
866cdf0e10cSrcweir printf("BAD https query 2\n");
867cdf0e10cSrcweir bSuccess = false;
868cdf0e10cSrcweir }
869cdf0e10cSrcweir }
870cdf0e10cSrcweir }
871cdf0e10cSrcweir
872cdf0e10cSrcweir if (true)
873cdf0e10cSrcweir {
874cdf0e10cSrcweir if (INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier:"))).HasError())
875cdf0e10cSrcweir {
876cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 1\n");
877cdf0e10cSrcweir bSuccess = false;
878cdf0e10cSrcweir }
879cdf0e10cSrcweir if (!INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier://"))).HasError())
880cdf0e10cSrcweir {
881cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 2\n");
882cdf0e10cSrcweir bSuccess = false;
883cdf0e10cSrcweir }
884cdf0e10cSrcweir if (!INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier:///"))).HasError())
885cdf0e10cSrcweir {
886cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 3\n");
887cdf0e10cSrcweir bSuccess = false;
888cdf0e10cSrcweir }
889cdf0e10cSrcweir if (!INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier:///abc"))).HasError())
890cdf0e10cSrcweir {
891cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 4\n");
892cdf0e10cSrcweir bSuccess = false;
893cdf0e10cSrcweir }
894cdf0e10cSrcweir if (INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier://abc"))).HasError())
895cdf0e10cSrcweir {
896cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 5\n");
897cdf0e10cSrcweir bSuccess = false;
898cdf0e10cSrcweir }
899cdf0e10cSrcweir if (INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.hier://abc/def"))).HasError())
900cdf0e10cSrcweir {
901cdf0e10cSrcweir printf("BAD vnd.sun.star.hier test 6\n");
902cdf0e10cSrcweir bSuccess = false;
903cdf0e10cSrcweir }
904cdf0e10cSrcweir }
905cdf0e10cSrcweir
906cdf0e10cSrcweir if (false)
907cdf0e10cSrcweir {
908cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
909cdf0e10cSrcweir "file:///"))));
910cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
911cdf0e10cSrcweir "file:///a"))));
912cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
913cdf0e10cSrcweir "file:///a/def/"))));
914cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
915cdf0e10cSrcweir "file:///ab/def/"))));
916cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
917cdf0e10cSrcweir "file:///abc/def/"))));
918cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
919cdf0e10cSrcweir "file:///a/def"))));
920cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
921cdf0e10cSrcweir "file:///ab/def"))));
922cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
923cdf0e10cSrcweir "file:///abc/def"))));
924cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
925cdf0e10cSrcweir "file:///abcdef/d"))));
926cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
927cdf0e10cSrcweir "file:///abcdef/de"))));
928cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
929cdf0e10cSrcweir "file:///abcdef/def"))));
930cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
931cdf0e10cSrcweir "file://some.host/"))));
932cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
933cdf0e10cSrcweir "file://some.host/a"))));
934cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
935cdf0e10cSrcweir "file://some.host/a/def/"))));
936cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
937cdf0e10cSrcweir "file://some.host/ab/def/"))));
938cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
939cdf0e10cSrcweir "file://some.host/abc/def/"))));
940cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
941cdf0e10cSrcweir "file://some.host/a/def"))));
942cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
943cdf0e10cSrcweir "file://some.host/ab/def"))));
944cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
945cdf0e10cSrcweir "file://some.host/abc/def"))));
946cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
947cdf0e10cSrcweir "file://some.host/abcdef/d"))));
948cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
949cdf0e10cSrcweir "file://some.host/abcdef/de"))));
950cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
951cdf0e10cSrcweir "file://some.host/abcdef/def"))));
952cdf0e10cSrcweir abbreviate(INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
953cdf0e10cSrcweir "http://foo/aa/bb//cc/d/eee////ff/ggggggg/hhhhhh/iii/j/"
954cdf0e10cSrcweir "kkkkkkkkkkkkk/ll/mm/nn/oo/p"))));
955cdf0e10cSrcweir }
956cdf0e10cSrcweir
957cdf0e10cSrcweir if (true)
958cdf0e10cSrcweir {
959cdf0e10cSrcweir {
960cdf0e10cSrcweir rtl::OUString
961cdf0e10cSrcweir aBase(RTL_CONSTASCII_USTRINGPARAM("file:///a:/b/c"));
962cdf0e10cSrcweir rtl::OUString aAbs(RTL_CONSTASCII_USTRINGPARAM("file:///a:/d/e"));
963cdf0e10cSrcweir rtl::OUString aRel(INetURLObject::GetRelURL(aBase, aAbs));
964cdf0e10cSrcweir if (!aRel.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("../d/e")))
965cdf0e10cSrcweir {
966cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s) = %s\n",
967cdf0e10cSrcweir rtl::OUStringToOString(aBase, RTL_TEXTENCODING_UTF8).
968cdf0e10cSrcweir getStr(),
969cdf0e10cSrcweir rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8).
970cdf0e10cSrcweir getStr(),
971cdf0e10cSrcweir rtl::OUStringToOString(aRel, RTL_TEXTENCODING_UTF8).
972cdf0e10cSrcweir getStr());
973cdf0e10cSrcweir bSuccess = false;
974cdf0e10cSrcweir }
975cdf0e10cSrcweir }
976cdf0e10cSrcweir {
977cdf0e10cSrcweir rtl::OUString
978cdf0e10cSrcweir aBase(RTL_CONSTASCII_USTRINGPARAM("file:///a:/b/c"));
979cdf0e10cSrcweir rtl::OUString aAbs(RTL_CONSTASCII_USTRINGPARAM("file:///d:/e/f"));
980cdf0e10cSrcweir rtl::OUString aRel(INetURLObject::GetRelURL(aBase, aAbs));
981cdf0e10cSrcweir if (aRel != aAbs)
982cdf0e10cSrcweir {
983cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s) = %s\n",
984cdf0e10cSrcweir rtl::OUStringToOString(aBase, RTL_TEXTENCODING_UTF8).
985cdf0e10cSrcweir getStr(),
986cdf0e10cSrcweir rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8).
987cdf0e10cSrcweir getStr(),
988cdf0e10cSrcweir rtl::OUStringToOString(aRel, RTL_TEXTENCODING_UTF8).
989cdf0e10cSrcweir getStr());
990cdf0e10cSrcweir bSuccess = false;
991cdf0e10cSrcweir }
992cdf0e10cSrcweir }
993cdf0e10cSrcweir {
994cdf0e10cSrcweir rtl::OUString
995cdf0e10cSrcweir aBase(RTL_CONSTASCII_USTRINGPARAM("file:///a:/b/c"));
996cdf0e10cSrcweir rtl::OUString aAbs(RTL_CONSTASCII_USTRINGPARAM("file:///d/e/f"));
997cdf0e10cSrcweir rtl::OUString aRel(INetURLObject::GetRelURL(aBase, aAbs));
998cdf0e10cSrcweir if (!aRel.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("../../d/e/f")))
999cdf0e10cSrcweir {
1000cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s) = %s\n",
1001cdf0e10cSrcweir rtl::OUStringToOString(aBase, RTL_TEXTENCODING_UTF8).
1002cdf0e10cSrcweir getStr(),
1003cdf0e10cSrcweir rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8).
1004cdf0e10cSrcweir getStr(),
1005cdf0e10cSrcweir rtl::OUStringToOString(aRel, RTL_TEXTENCODING_UTF8).
1006cdf0e10cSrcweir getStr());
1007cdf0e10cSrcweir bSuccess = false;
1008cdf0e10cSrcweir }
1009cdf0e10cSrcweir }
1010cdf0e10cSrcweir {
1011cdf0e10cSrcweir rtl::OUString
1012cdf0e10cSrcweir aBase(RTL_CONSTASCII_USTRINGPARAM("file:///a:/b/c"));
1013cdf0e10cSrcweir rtl::OUString aAbs(RTL_CONSTASCII_USTRINGPARAM("file:///d:/e/f"));
1014cdf0e10cSrcweir rtl::OUString
1015cdf0e10cSrcweir aRel(INetURLObject::GetRelURL(aBase,
1016cdf0e10cSrcweir aAbs,
1017cdf0e10cSrcweir INetURLObject::WAS_ENCODED,
1018cdf0e10cSrcweir INetURLObject::DECODE_TO_IURI,
1019cdf0e10cSrcweir RTL_TEXTENCODING_UTF8,
1020cdf0e10cSrcweir INetURLObject::FSYS_UNX));
1021cdf0e10cSrcweir if (!aRel.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
1022cdf0e10cSrcweir "../../d:/e/f")))
1023cdf0e10cSrcweir {
1024cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s) = %s\n",
1025cdf0e10cSrcweir rtl::OUStringToOString(aBase, RTL_TEXTENCODING_UTF8).
1026cdf0e10cSrcweir getStr(),
1027cdf0e10cSrcweir rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8).
1028cdf0e10cSrcweir getStr(),
1029cdf0e10cSrcweir rtl::OUStringToOString(aRel, RTL_TEXTENCODING_UTF8).
1030cdf0e10cSrcweir getStr());
1031cdf0e10cSrcweir bSuccess = false;
1032cdf0e10cSrcweir }
1033cdf0e10cSrcweir }
1034cdf0e10cSrcweir /*TODO
1035cdf0e10cSrcweir {
1036cdf0e10cSrcweir rtl::OUString
1037cdf0e10cSrcweir aBase(RTL_CONSTASCII_USTRINGPARAM("file:///test.html"));
1038cdf0e10cSrcweir rtl::OUString
1039cdf0e10cSrcweir aAbs(RTL_CONSTASCII_USTRINGPARAM("/images/myimage.gif"));
1040cdf0e10cSrcweir rtl::OUString aRel(INetURLObject::GetRelURL(aBase, aAbs));
1041cdf0e10cSrcweir if (aRel != aAbs)
1042cdf0e10cSrcweir {
1043cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s) = %s\n",
1044cdf0e10cSrcweir rtl::OUStringToOString(aBase, RTL_TEXTENCODING_UTF8).
1045cdf0e10cSrcweir getStr(),
1046cdf0e10cSrcweir rtl::OUStringToOString(aAbs, RTL_TEXTENCODING_UTF8).
1047cdf0e10cSrcweir getStr(),
1048cdf0e10cSrcweir rtl::OUStringToOString(aRel, RTL_TEXTENCODING_UTF8).
1049cdf0e10cSrcweir getStr());
1050cdf0e10cSrcweir bSuccess = false;
1051cdf0e10cSrcweir }
1052cdf0e10cSrcweir }
1053cdf0e10cSrcweir */
1054cdf0e10cSrcweir }
1055cdf0e10cSrcweir
1056cdf0e10cSrcweir if (true)
1057cdf0e10cSrcweir {
1058cdf0e10cSrcweir INetURLObject aUrl(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1059cdf0e10cSrcweir "file://host/dir/file")));
1060cdf0e10cSrcweir rtl::OUString aPath;
1061cdf0e10cSrcweir aPath = aUrl.getFSysPath(INetURLObject::FSYS_DETECT);
1062cdf0e10cSrcweir if (!aPath.
1063cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("//host/dir/file")))
1064cdf0e10cSrcweir {
1065cdf0e10cSrcweir printf("BAD getFSysPath(VOS|UNX|DOS|MAC) = %s\n",
1066cdf0e10cSrcweir rtl::OUStringToOString(aPath, RTL_TEXTENCODING_UTF8).
1067cdf0e10cSrcweir getStr());
1068cdf0e10cSrcweir bSuccess = false;
1069cdf0e10cSrcweir }
1070cdf0e10cSrcweir aPath = aUrl.getFSysPath(INetURLObject::FSysStyle(
1071cdf0e10cSrcweir INetURLObject::FSYS_UNX
1072cdf0e10cSrcweir | INetURLObject::FSYS_DOS
1073cdf0e10cSrcweir | INetURLObject::FSYS_MAC));
1074cdf0e10cSrcweir if (!aPath.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
1075cdf0e10cSrcweir "\\\\host\\dir\\file")))
1076cdf0e10cSrcweir {
1077cdf0e10cSrcweir printf("BAD getFSysPath(UNX|DOS|MAC) = %s\n",
1078cdf0e10cSrcweir rtl::OUStringToOString(aPath, RTL_TEXTENCODING_UTF8).
1079cdf0e10cSrcweir getStr());
1080cdf0e10cSrcweir bSuccess = false;
1081cdf0e10cSrcweir }
1082cdf0e10cSrcweir aPath = aUrl.getFSysPath(INetURLObject::FSysStyle(
1083cdf0e10cSrcweir INetURLObject::FSYS_UNX
1084cdf0e10cSrcweir | INetURLObject::FSYS_MAC));
1085cdf0e10cSrcweir if (aPath.getLength() != 0)
1086cdf0e10cSrcweir {
1087cdf0e10cSrcweir printf("BAD getFSysPath(UNX|MAC) = %s\n",
1088cdf0e10cSrcweir rtl::OUStringToOString(aPath, RTL_TEXTENCODING_UTF8).
1089cdf0e10cSrcweir getStr());
1090cdf0e10cSrcweir bSuccess = false;
1091cdf0e10cSrcweir }
1092cdf0e10cSrcweir }
1093cdf0e10cSrcweir
1094cdf0e10cSrcweir if (true)
1095cdf0e10cSrcweir {
1096cdf0e10cSrcweir {
1097cdf0e10cSrcweir INetURLObject aUrl1(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.odma:")));
1098cdf0e10cSrcweir rtl::OUString aUrl2(aUrl1.GetMainURL(
1099cdf0e10cSrcweir INetURLObject::DECODE_TO_IURI));
1100cdf0e10cSrcweir if (!aUrl2.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.odma:/")))
1101cdf0e10cSrcweir {
1102cdf0e10cSrcweir printf("BAD vnd.sun.star.odma: != %s\n",
1103cdf0e10cSrcweir rtl::OUStringToOString(aUrl2, RTL_TEXTENCODING_UTF8).
1104cdf0e10cSrcweir getStr());
1105cdf0e10cSrcweir bSuccess = false;
1106cdf0e10cSrcweir }
1107cdf0e10cSrcweir }
1108cdf0e10cSrcweir {
1109cdf0e10cSrcweir INetURLObject aUrl1(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.odma:/")));
1110cdf0e10cSrcweir rtl::OUString aUrl2(aUrl1.GetMainURL(
1111cdf0e10cSrcweir INetURLObject::DECODE_TO_IURI));
1112cdf0e10cSrcweir if (!aUrl2.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.odma:/")))
1113cdf0e10cSrcweir {
1114cdf0e10cSrcweir printf("BAD vnd.sun.star.odma:/ != %s\n",
1115cdf0e10cSrcweir rtl::OUStringToOString(aUrl2, RTL_TEXTENCODING_UTF8).
1116cdf0e10cSrcweir getStr());
1117cdf0e10cSrcweir bSuccess = false;
1118cdf0e10cSrcweir }
1119cdf0e10cSrcweir }
1120cdf0e10cSrcweir {
1121cdf0e10cSrcweir INetURLObject aUrl1(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.odma:/bla/bla")));
1122cdf0e10cSrcweir rtl::OUString aUrl2(aUrl1.GetMainURL(
1123cdf0e10cSrcweir INetURLObject::DECODE_TO_IURI));
1124cdf0e10cSrcweir if (!aUrl2.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.odma:/bla%2Fbla")))
1125cdf0e10cSrcweir {
1126cdf0e10cSrcweir printf("BAD vnd.sun.star.odma:/bla/bla != %s\n",
1127cdf0e10cSrcweir rtl::OUStringToOString(aUrl2, RTL_TEXTENCODING_UTF8).
1128cdf0e10cSrcweir getStr());
1129cdf0e10cSrcweir bSuccess = false;
1130cdf0e10cSrcweir }
1131cdf0e10cSrcweir }
1132cdf0e10cSrcweir }
1133cdf0e10cSrcweir
1134cdf0e10cSrcweir if (true)
1135cdf0e10cSrcweir {
1136cdf0e10cSrcweir struct Test
1137cdf0e10cSrcweir {
1138cdf0e10cSrcweir char const * m_pInput;
1139cdf0e10cSrcweir char const * m_pOutput;
1140cdf0e10cSrcweir };
1141cdf0e10cSrcweir static Test const aTest[]
1142cdf0e10cSrcweir = { { "file:///abc", "file:///abc" },
1143cdf0e10cSrcweir { "file://localhost/abc", "file:///abc" },
1144cdf0e10cSrcweir { "file://LocalHost/abc", "file:///abc" },
1145cdf0e10cSrcweir { "file://LOCALHOST/abc", "file:///abc" },
1146cdf0e10cSrcweir { "file://127.0.0.1/abc", "file://127.0.0.1/abc" },
1147cdf0e10cSrcweir { "file://xxx.yyy-zzz/abc", "file://xxx.yyy-zzz/abc" },
1148cdf0e10cSrcweir { "file://xxx_yyy/abc", "file://xxx_yyy/abc" },
1149cdf0e10cSrcweir { "file://!%23$%&'()-.@^_{}~/abc",
1150cdf0e10cSrcweir "file://!%23$%25&'()-.@%5E_%7B%7D~/abc" },
1151cdf0e10cSrcweir { "file://d:\\dir1\\file1", 0 },
1152cdf0e10cSrcweir { "http://as@alaska:8000/test/test.sxw", 0 },
1153cdf0e10cSrcweir { "telnet:", 0 },
1154cdf0e10cSrcweir { "telnet://", 0 },
1155cdf0e10cSrcweir { "telnet://ab:cd@ef:", "telnet://ab:cd@ef:/" },
1156cdf0e10cSrcweir { "telnet://ab:cd@ef:123", "telnet://ab:cd@ef:123/" },
1157cdf0e10cSrcweir { "TELNET://abc.def.ghi/", "telnet://abc.def.ghi/" },
1158cdf0e10cSrcweir { "telnet://abc.def.ghi/jkl", 0 },
1159cdf0e10cSrcweir { "telnet://abc.def.ghi?jkl", 0 },
1160cdf0e10cSrcweir { "telnet://abc.def.ghi/?jkl", 0 },
1161cdf0e10cSrcweir { "file:", 0 },
1162cdf0e10cSrcweir { "file:/", "file:///" },
1163cdf0e10cSrcweir { "file:/abc", "file:///abc" },
1164cdf0e10cSrcweir { "file:/abc/def", "file:///abc/def" },
1165cdf0e10cSrcweir { "file:/localhost", "file:///localhost" },
1166cdf0e10cSrcweir { "file://", "file:///" },
1167cdf0e10cSrcweir { "file:///", "file:///" },
1168cdf0e10cSrcweir { "http:", 0 },
1169cdf0e10cSrcweir { "http:/abc", 0 },
1170cdf0e10cSrcweir { "news:", 0 },
1171cdf0e10cSrcweir { "news:*", "news:*" },
1172cdf0e10cSrcweir { "news:**", 0 },
1173cdf0e10cSrcweir { "news:%2A", 0 },
1174cdf0e10cSrcweir { "news:a", "news:a" },
1175cdf0e10cSrcweir { "news:A", "news:A" },
1176cdf0e10cSrcweir { "news:+-._", 0 },
1177cdf0e10cSrcweir { "news:A0+-._", "news:A0+-._" },
1178cdf0e10cSrcweir { "news:0", 0 },
1179cdf0e10cSrcweir { "news:AB,", 0 },
1180cdf0e10cSrcweir { "news:abc@def", "news:abc@def" },
1181cdf0e10cSrcweir { "news:abc@def:33", 0 },
1182cdf0e10cSrcweir { "news:abc@123.456.789.0", "news:abc@123.456.789.0" },
1183cdf0e10cSrcweir { "news:abc@def.", "news:abc@def." },
1184cdf0e10cSrcweir { "news:abc@def.ghi", "news:abc@def.ghi" },
1185cdf0e10cSrcweir { "news:abc@def.-ghi", 0 },
1186cdf0e10cSrcweir { "news:abc@def.ghi@", 0 },
1187cdf0e10cSrcweir { "news:%21%22%23@def", "news:%21%22%23@def" },
1188cdf0e10cSrcweir { "news:!%22%23@def", "news:!%22%23@def" },
1189cdf0e10cSrcweir { "news: @def", "news:%20@def" },
1190cdf0e10cSrcweir { "vnd.sun.star.tdoc:", 0 },
1191cdf0e10cSrcweir { "vnd.sun.star.tdoc:a/b/c", 0 },
1192cdf0e10cSrcweir { "vnd.sun.star.tdoc:/", "vnd.sun.star.tdoc:/" },
1193cdf0e10cSrcweir { "vnd.sun.star.tdoc:/a;b/", "vnd.sun.star.tdoc:/a%3Bb/" },
1194cdf0e10cSrcweir { "vnd.sun.star.tdoc:/a?b", "vnd.sun.star.tdoc:/a%3Fb" },
1195cdf0e10cSrcweir { "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/x",
1196cdf0e10cSrcweir "http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:80/x" },
1197cdf0e10cSrcweir { "http://[1080:0:0:0:8:800:200C:417A]/index.html",
1198cdf0e10cSrcweir "http://[1080:0:0:0:8:800:200c:417a]/index.html" },
1199cdf0e10cSrcweir { "http://[3ffe:2a00:100:7031::1]",
1200cdf0e10cSrcweir "http://[3ffe:2a00:100:7031::1]/" },
1201cdf0e10cSrcweir { "http://[1080::8:800:200c:417a]/foo",
1202cdf0e10cSrcweir "http://[1080::8:800:200c:417a]/foo" },
1203cdf0e10cSrcweir { "http://[::192.9.5.5]/ipng", "http://[::192.9.5.5]/ipng" },
1204cdf0e10cSrcweir { "http://[:::192.9.5.5]/ipng", "http://[:::192.9.5.5]/ipng" },
1205cdf0e10cSrcweir { "http://[::FFFF:129.144.52.38]:80/index.html",
1206cdf0e10cSrcweir "http://[::ffff:129.144.52.38]:80/index.html" },
1207cdf0e10cSrcweir { "http://[2010:836B:4179::836B:4179]",
1208cdf0e10cSrcweir "http://[2010:836b:4179::836b:4179]/" },
1209cdf0e10cSrcweir { "http://[::1]", "http://[::1]/" },
1210cdf0e10cSrcweir { "http://[0:0:0:0:0:0:13.1.68.3]/",
1211cdf0e10cSrcweir "http://[0:0:0:0:0:0:13.1.68.3]/" },
1212cdf0e10cSrcweir { "http://[0:0:0:0:0:FFFF:129.144.52.38]/",
1213cdf0e10cSrcweir "http://[0:0:0:0:0:ffff:129.144.52.38]/" },
1214cdf0e10cSrcweir { "smb://", "smb:///" },
1215cdf0e10cSrcweir { "smb://foo", "smb://foo/" },
1216cdf0e10cSrcweir { "smb://x;foo:bar@baz.xyz:12345/ab?cd",
1217cdf0e10cSrcweir "smb://x;foo:bar@baz.xyz:12345/ab?cd" } };
1218cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
1219cdf0e10cSrcweir {
1220cdf0e10cSrcweir INetURLObject aUrl(aTest[i].m_pInput);
1221cdf0e10cSrcweir if (aTest[i].m_pOutput == 0
1222cdf0e10cSrcweir ? !aUrl.HasError()
1223cdf0e10cSrcweir : (aUrl.HasError()
1224cdf0e10cSrcweir || (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
1225cdf0e10cSrcweir equalsAscii(aTest[i].m_pOutput)
1226cdf0e10cSrcweir != sal_True)))
1227cdf0e10cSrcweir {
1228cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
1229cdf0e10cSrcweir printf("BAD %s -> %s != %s\n",
1230cdf0e10cSrcweir aTest[i].m_pInput,
1231cdf0e10cSrcweir aUrl.HasError() ? "<none>"
1232cdf0e10cSrcweir : ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1233cdf0e10cSrcweir aTest[i].m_pOutput == 0 ? "<none>" : aTest[i].m_pOutput);
1234cdf0e10cSrcweir }
1235cdf0e10cSrcweir }
1236cdf0e10cSrcweir }
1237cdf0e10cSrcweir
1238cdf0e10cSrcweir if (true)
1239cdf0e10cSrcweir {
1240cdf0e10cSrcweir struct Test
1241cdf0e10cSrcweir {
1242cdf0e10cSrcweir char const * m_pInput;
1243cdf0e10cSrcweir char const * m_pOutput;
1244cdf0e10cSrcweir };
1245cdf0e10cSrcweir static Test const aTest[]
1246cdf0e10cSrcweir = { { "file://d:\\dir1\\file1", "file:///d:/dir1/file1" },
1247cdf0e10cSrcweir { "http://as@alaska:8000/test/test.sxw", 0 } };
1248cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
1249cdf0e10cSrcweir {
1250cdf0e10cSrcweir INetURLObject aUrl = INetURLObject(
1251cdf0e10cSrcweir String(aTest[i].m_pInput, RTL_TEXTENCODING_UTF8),
1252cdf0e10cSrcweir INET_PROT_HTTP);
1253cdf0e10cSrcweir if (aTest[i].m_pOutput == 0
1254cdf0e10cSrcweir ? !aUrl.HasError()
1255cdf0e10cSrcweir : (aUrl.HasError()
1256cdf0e10cSrcweir || (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
1257cdf0e10cSrcweir equalsAscii(aTest[i].m_pOutput)
1258cdf0e10cSrcweir != sal_True)))
1259cdf0e10cSrcweir {
1260cdf0e10cSrcweir String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
1261cdf0e10cSrcweir printf("BAD %s -> %s != %s\n",
1262cdf0e10cSrcweir aTest[i].m_pInput,
1263cdf0e10cSrcweir aUrl.HasError() ? "<none>"
1264cdf0e10cSrcweir : ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1265cdf0e10cSrcweir aTest[i].m_pOutput == 0 ? "<none>" : aTest[i].m_pOutput);
1266cdf0e10cSrcweir }
1267cdf0e10cSrcweir }
1268cdf0e10cSrcweir }
1269cdf0e10cSrcweir
1270cdf0e10cSrcweir if (true)
1271cdf0e10cSrcweir {
1272cdf0e10cSrcweir INetURLObject aUrl;
1273cdf0e10cSrcweir rtl::OUString aUser;
1274cdf0e10cSrcweir aUrl = INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1275cdf0e10cSrcweir "ftp://test")));
1276cdf0e10cSrcweir aUser = aUrl.GetUser();
1277cdf0e10cSrcweir if (aUser.getLength() != 0)
1278cdf0e10cSrcweir printf(
1279cdf0e10cSrcweir "BAD <ftp://test> user: \"%s\" != \"\"",
1280cdf0e10cSrcweir rtl::OUStringToOString(aUser, RTL_TEXTENCODING_UTF8).getStr());
1281cdf0e10cSrcweir aUrl = INetURLObject(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1282cdf0e10cSrcweir "ftp://user@test")));
1283cdf0e10cSrcweir aUser = aUrl.GetUser();
1284cdf0e10cSrcweir if (!aUser.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("user")))
1285cdf0e10cSrcweir printf(
1286cdf0e10cSrcweir "BAD <ftp://user@test> user: \"%s\" != \"user\"",
1287cdf0e10cSrcweir rtl::OUStringToOString(aUser, RTL_TEXTENCODING_UTF8).getStr());
1288cdf0e10cSrcweir }
1289cdf0e10cSrcweir
1290cdf0e10cSrcweir if (true)
1291cdf0e10cSrcweir {
1292cdf0e10cSrcweir INetURLObject aUrl;
1293cdf0e10cSrcweir
1294cdf0e10cSrcweir aUrl = INetURLObject("vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?");
1295cdf0e10cSrcweir if (aUrl.GetProtocol() != INET_PROT_VND_SUN_STAR_PKG)
1296cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?>:"
1297cdf0e10cSrcweir " scheme = %d\n",
1298cdf0e10cSrcweir static_cast< int >(aUrl.GetProtocol()));
1299cdf0e10cSrcweir else
1300cdf0e10cSrcweir {
1301cdf0e10cSrcweir if (!rtl::OUString(aUrl.GetMainURL(INetURLObject::NO_DECODE)).
1302cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
1303cdf0e10cSrcweir "vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?")))
1304cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?>:"
1305cdf0e10cSrcweir " URL = %s\n",
1306cdf0e10cSrcweir rtl::OUStringToOString(
1307cdf0e10cSrcweir aUrl.GetMainURL(INetURLObject::NO_DECODE),
1308cdf0e10cSrcweir RTL_TEXTENCODING_UTF8).getStr());
1309cdf0e10cSrcweir if (!rtl::OUString(aUrl.GetParam(INetURLObject::NO_DECODE)).
1310cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("abc/def?")))
1311cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?>:"
1312cdf0e10cSrcweir " query = %s\n",
1313cdf0e10cSrcweir rtl::OUStringToOString(
1314cdf0e10cSrcweir aUrl.GetParam(INetURLObject::NO_DECODE),
1315cdf0e10cSrcweir RTL_TEXTENCODING_UTF8).getStr());
1316cdf0e10cSrcweir }
1317cdf0e10cSrcweir
1318cdf0e10cSrcweir aUrl = INetURLObject("vnd.sun.star.pkg://foo.bar/a/b/c%3Fabc/def%3F");
1319cdf0e10cSrcweir if (aUrl.GetProtocol() != INET_PROT_VND_SUN_STAR_PKG)
1320cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c%%3Fabc/def%%3F>:"
1321cdf0e10cSrcweir " scheme = %d\n",
1322cdf0e10cSrcweir static_cast< int >(aUrl.GetProtocol()));
1323cdf0e10cSrcweir else
1324cdf0e10cSrcweir {
1325cdf0e10cSrcweir if (!rtl::OUString(aUrl.GetMainURL(INetURLObject::NO_DECODE)).
1326cdf0e10cSrcweir equalsAsciiL(
1327cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM(
1328cdf0e10cSrcweir "vnd.sun.star.pkg://foo.bar/a/b/c%3Fabc/def%3F")))
1329cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c?abc/def?>:"
1330cdf0e10cSrcweir " URL = %s\n",
1331cdf0e10cSrcweir rtl::OUStringToOString(
1332cdf0e10cSrcweir aUrl.GetMainURL(INetURLObject::NO_DECODE),
1333cdf0e10cSrcweir RTL_TEXTENCODING_UTF8).getStr());
1334cdf0e10cSrcweir if (!rtl::OUString(aUrl.GetParam(INetURLObject::NO_DECODE)).
1335cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("")))
1336cdf0e10cSrcweir printf("BAD <vnd.sun.star.pkg://foo.bar/a/b/c%%3Fabc/def%%3F>:"
1337cdf0e10cSrcweir " query = %s\n",
1338cdf0e10cSrcweir rtl::OUStringToOString(
1339cdf0e10cSrcweir aUrl.GetParam(INetURLObject::NO_DECODE),
1340cdf0e10cSrcweir RTL_TEXTENCODING_UTF8).getStr());
1341cdf0e10cSrcweir }
1342cdf0e10cSrcweir }
1343cdf0e10cSrcweir
1344cdf0e10cSrcweir if (true)
1345cdf0e10cSrcweir {
1346cdf0e10cSrcweir struct Test
1347cdf0e10cSrcweir {
1348cdf0e10cSrcweir INetProtocol eScheme;
1349cdf0e10cSrcweir char const * pPath;
1350cdf0e10cSrcweir char const * pUri;
1351cdf0e10cSrcweir };
1352cdf0e10cSrcweir static Test const aTest[]
1353cdf0e10cSrcweir = { { INET_PROT_FILE, "", "file:///" },
1354cdf0e10cSrcweir { INET_PROT_FILE, "/", "file:///" },
1355cdf0e10cSrcweir { INET_PROT_FILE, "abc", 0 },
1356cdf0e10cSrcweir { INET_PROT_FILE, "/abc/", "file:///abc/" },
1357cdf0e10cSrcweir { INET_PROT_NEWS, "", 0 },
1358cdf0e10cSrcweir { INET_PROT_NEWS, "*", "news:*" },
1359cdf0e10cSrcweir { INET_PROT_NEWS, "**", 0 },
1360cdf0e10cSrcweir { INET_PROT_NEWS, "%2A", 0 },
1361cdf0e10cSrcweir { INET_PROT_NEWS, "a", "news:a" },
1362cdf0e10cSrcweir { INET_PROT_NEWS, "A", "news:A" },
1363cdf0e10cSrcweir { INET_PROT_NEWS, "+-._", 0 },
1364cdf0e10cSrcweir { INET_PROT_NEWS, "A0+-._", "news:A0+-._" },
1365cdf0e10cSrcweir { INET_PROT_NEWS, "0", 0 },
1366cdf0e10cSrcweir { INET_PROT_NEWS, "AB,", 0 },
1367cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def", "news:abc@def" },
1368cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def:33", 0 },
1369cdf0e10cSrcweir { INET_PROT_NEWS, "abc@123.456.789.0",
1370cdf0e10cSrcweir "news:abc@123.456.789.0" },
1371cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def.", "news:abc@def." },
1372cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def.ghi", "news:abc@def.ghi" },
1373cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def.-ghi", 0 },
1374cdf0e10cSrcweir { INET_PROT_NEWS, "abc@def.ghi@", 0 },
1375cdf0e10cSrcweir { INET_PROT_NEWS, "!\"#@def", "news:!%22%23@def" },
1376cdf0e10cSrcweir { INET_PROT_NEWS, " @def", "news:%20@def" } };
1377cdf0e10cSrcweir for (std::size_t i = 0; i < sizeof aTest / sizeof aTest[0]; ++i)
1378cdf0e10cSrcweir {
1379cdf0e10cSrcweir INetURLObject aUri;
1380cdf0e10cSrcweir bool bOk = aUri.ConcatData(aTest[i].eScheme, String(), String(),
1381cdf0e10cSrcweir String(), 0,
1382cdf0e10cSrcweir String(aTest[i].pPath,
1383cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US),
1384cdf0e10cSrcweir INetURLObject::ENCODE_ALL);
1385cdf0e10cSrcweir if (bOk == aUri.HasError())
1386cdf0e10cSrcweir printf(
1387cdf0e10cSrcweir "BAD ConcatData(%d, ..., %s) = %d, HasError() = %d\n",
1388cdf0e10cSrcweir static_cast< int >(aTest[i].eScheme), aTest[i].pPath,
1389cdf0e10cSrcweir static_cast< int >(bOk),
1390cdf0e10cSrcweir static_cast< int >(aUri.HasError()));
1391cdf0e10cSrcweir else if (aTest[i].pUri == 0
1392cdf0e10cSrcweir ? !aUri.HasError()
1393cdf0e10cSrcweir : (aUri.HasError()
1394cdf0e10cSrcweir || (aUri.GetMainURL(INetURLObject::DECODE_TO_IURI).
1395cdf0e10cSrcweir equalsAscii(aTest[i].pUri)
1396cdf0e10cSrcweir != sal_True)))
1397cdf0e10cSrcweir {
1398cdf0e10cSrcweir String sTest(aUri.GetMainURL(INetURLObject::DECODE_TO_IURI));
1399cdf0e10cSrcweir printf("BAD ConcatData(%d, ..., %s) -> %s != %s\n",
1400cdf0e10cSrcweir static_cast< int >(aTest[i].eScheme), aTest[i].pPath,
1401cdf0e10cSrcweir aUri.HasError() ? "<none>"
1402cdf0e10cSrcweir : ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1403cdf0e10cSrcweir aTest[i].pUri == 0 ? "<none>" : aTest[i].pUri);
1404cdf0e10cSrcweir }
1405cdf0e10cSrcweir }
1406cdf0e10cSrcweir }
1407cdf0e10cSrcweir
1408cdf0e10cSrcweir if (true)
1409cdf0e10cSrcweir {
1410cdf0e10cSrcweir // #i13760#
1411cdf0e10cSrcweir
1412cdf0e10cSrcweir // Test for unrelated URLs.
1413cdf0e10cSrcweir const rtl::OUString aBaseURL(RTL_CONSTASCII_USTRINGPARAM(
1414cdf0e10cSrcweir "http://www.openoffice.org"));
1415cdf0e10cSrcweir rtl::OUString aRelURL (RTL_CONSTASCII_USTRINGPARAM(
1416cdf0e10cSrcweir "http://www.sun.com"));
1417cdf0e10cSrcweir
1418cdf0e10cSrcweir rtl::OUString aRelURLToTest(
1419cdf0e10cSrcweir INetURLObject::GetRelURL(aBaseURL, aRelURL));
1420cdf0e10cSrcweir
1421cdf0e10cSrcweir if (INetURLObject(aRelURLToTest) != INetURLObject(aRelURL))
1422cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s), ret = %s\n",
1423cdf0e10cSrcweir ByteString(aBaseURL.getStr(),
1424cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1425cdf0e10cSrcweir ByteString(aRelURL.getStr(),
1426cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1427cdf0e10cSrcweir ByteString(aRelURLToTest.getStr(),
1428cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer());
1429cdf0e10cSrcweir
1430cdf0e10cSrcweir // Test for related URLs.
1431cdf0e10cSrcweir aRelURL = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1432cdf0e10cSrcweir "http://www.openoffice.org/api/test.html"));
1433cdf0e10cSrcweir aRelURLToTest = rtl::OUString(
1434cdf0e10cSrcweir INetURLObject::GetRelURL(aBaseURL, aRelURL));
1435cdf0e10cSrcweir
1436cdf0e10cSrcweir if (!aRelURLToTest.equalsAsciiL(
1437cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM("api/test.html")))
1438cdf0e10cSrcweir printf("BAD GetRelURL(%s, %s), ret = %s\n",
1439cdf0e10cSrcweir ByteString(aBaseURL.getStr(),
1440cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1441cdf0e10cSrcweir ByteString(aRelURL.getStr(),
1442cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer(),
1443cdf0e10cSrcweir ByteString(aRelURLToTest.getStr(),
1444cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US).GetBuffer());
1445cdf0e10cSrcweir }
1446cdf0e10cSrcweir
1447cdf0e10cSrcweir if (true) { // #112130#
1448cdf0e10cSrcweir INetURLObject url1(rtl::OUString::createFromAscii(".uno:abc%3Fdef"));
1449cdf0e10cSrcweir if (url1.GetProtocol() != INET_PROT_UNO) {
1450cdf0e10cSrcweir printf("BAD .uno:abc%%3Fdef\n");
1451cdf0e10cSrcweir bSuccess = false;
1452cdf0e10cSrcweir }
1453cdf0e10cSrcweir if (!rtl::OUString(url1.GetURLPath(INetURLObject::NO_DECODE)).
1454cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("abc%3Fdef"))) {
1455cdf0e10cSrcweir printf(
1456cdf0e10cSrcweir "BAD GetURLPath(.uno:abc%%3Fdef): %s\n",
1457cdf0e10cSrcweir rtl::OUStringToOString(
1458cdf0e10cSrcweir url1.GetURLPath(INetURLObject::NO_DECODE),
1459cdf0e10cSrcweir osl_getThreadTextEncoding()).getStr());
1460cdf0e10cSrcweir bSuccess = false;
1461cdf0e10cSrcweir }
1462cdf0e10cSrcweir if (url1.HasParam()) {
1463cdf0e10cSrcweir printf("BAD HasParam(.uno:abc%%3Fdef)\n");
1464cdf0e10cSrcweir bSuccess = false;
1465cdf0e10cSrcweir }
1466cdf0e10cSrcweir INetURLObject url2(rtl::OUString::createFromAscii(".uno:abc?def?ghi"));
1467cdf0e10cSrcweir if (url2.GetProtocol() != INET_PROT_UNO) {
1468cdf0e10cSrcweir printf("BAD .uno:abc?def?ghi\n");
1469cdf0e10cSrcweir bSuccess = false;
1470cdf0e10cSrcweir }
1471cdf0e10cSrcweir if (!rtl::OUString(url2.GetURLPath(INetURLObject::NO_DECODE)).
1472cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("abc"))) {
1473cdf0e10cSrcweir printf(
1474cdf0e10cSrcweir "BAD GetURLPath(.uno:abc?def?ghi): %s\n",
1475cdf0e10cSrcweir rtl::OUStringToOString(
1476cdf0e10cSrcweir url2.GetURLPath(INetURLObject::NO_DECODE),
1477cdf0e10cSrcweir osl_getThreadTextEncoding()).getStr());
1478cdf0e10cSrcweir bSuccess = false;
1479cdf0e10cSrcweir }
1480cdf0e10cSrcweir if (!url2.HasParam()) {
1481cdf0e10cSrcweir printf("BAD HasParam(.uno:abc?def?ghi)\n");
1482cdf0e10cSrcweir bSuccess = false;
1483cdf0e10cSrcweir }
1484cdf0e10cSrcweir if (!rtl::OUString(url2.GetParam(INetURLObject::NO_DECODE)).
1485cdf0e10cSrcweir equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("def?ghi"))) {
1486cdf0e10cSrcweir printf(
1487cdf0e10cSrcweir "BAD GetURLPath(.uno:abc?def?ghi): %s\n",
1488cdf0e10cSrcweir rtl::OUStringToOString(
1489cdf0e10cSrcweir url2.GetParam(INetURLObject::NO_DECODE),
1490cdf0e10cSrcweir osl_getThreadTextEncoding()).getStr());
1491cdf0e10cSrcweir bSuccess = false;
1492cdf0e10cSrcweir }
1493cdf0e10cSrcweir }
1494cdf0e10cSrcweir
1495cdf0e10cSrcweir if (true) { // #116269#
1496cdf0e10cSrcweir rtl::OUString url;
1497cdf0e10cSrcweir INetURLObject urlobj;
1498cdf0e10cSrcweir
1499cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("A-b.3:/%2f?x#y"));
1500cdf0e10cSrcweir urlobj = INetURLObject(url);
1501cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_GENERIC, urlobj.GetProtocol());
1502cdf0e10cSrcweir bSuccess &= assertEqual(
1503cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a-b.3:/%2F?x#y")),
1504cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1505cdf0e10cSrcweir bSuccess &= assertEqual(url, false, urlobj.HasUserData());
1506cdf0e10cSrcweir bSuccess &= assertEqual(url, false, urlobj.hasPassword());
1507cdf0e10cSrcweir bSuccess &= assertEqual(url, false, urlobj.HasPort());
1508cdf0e10cSrcweir bSuccess &= assertEqual(
1509cdf0e10cSrcweir url, rtl::OUString(), rtl::OUString(urlobj.GetHost()));
1510cdf0e10cSrcweir bSuccess &= assertEqual(
1511cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/%2F?x")),
1512cdf0e10cSrcweir rtl::OUString(urlobj.GetURLPath()));
1513cdf0e10cSrcweir bSuccess &= assertEqual(url, false, urlobj.HasParam());
1514cdf0e10cSrcweir bSuccess &= assertEqual(url, true, urlobj.HasMark());
1515cdf0e10cSrcweir bSuccess &= assertEqual(
1516cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("y")),
1517cdf0e10cSrcweir rtl::OUString(urlobj.GetMark()));
1518cdf0e10cSrcweir
1519cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:"));
1520cdf0e10cSrcweir urlobj = INetURLObject(url);
1521cdf0e10cSrcweir bSuccess &= assertEqual(url, true, urlobj.HasError());
1522cdf0e10cSrcweir
1523cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:#"));
1524cdf0e10cSrcweir urlobj = INetURLObject(url);
1525cdf0e10cSrcweir bSuccess &= assertEqual(url, true, urlobj.HasError());
1526cdf0e10cSrcweir
1527cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:/"));
1528cdf0e10cSrcweir urlobj = INetURLObject(url);
1529cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_GENERIC, urlobj.GetProtocol());
1530cdf0e10cSrcweir bSuccess &= assertEqual(
1531cdf0e10cSrcweir url, url,
1532cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1533cdf0e10cSrcweir
1534cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".foo:/"));
1535cdf0e10cSrcweir urlobj = INetURLObject(url);
1536cdf0e10cSrcweir bSuccess &= assertEqual(url, true, urlobj.HasError());
1537cdf0e10cSrcweir
1538cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("C:\\bla"));
1539cdf0e10cSrcweir urlobj = INetURLObject(url);
1540cdf0e10cSrcweir bSuccess &= assertEqual(url, true, urlobj.HasError());
1541cdf0e10cSrcweir
1542cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("C:\\bla"));
1543cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_FILE);
1544cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_FILE, urlobj.GetProtocol());
1545cdf0e10cSrcweir bSuccess &= assertEqual(
1546cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///C:/bla")),
1547cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1548cdf0e10cSrcweir
1549cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LPR:\\bla"));
1550cdf0e10cSrcweir urlobj = INetURLObject(url);
1551cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_GENERIC, urlobj.GetProtocol());
1552cdf0e10cSrcweir bSuccess &= assertEqual(
1553cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("lpr:%5Cbla")),
1554cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1555cdf0e10cSrcweir
1556cdf0e10cSrcweir url = rtl::OUString(
1557cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("private:factory/swriter"));
1558cdf0e10cSrcweir urlobj = INetURLObject(url);
1559cdf0e10cSrcweir bSuccess &= assertEqual(
1560cdf0e10cSrcweir url, INET_PROT_PRIV_SOFFICE, urlobj.GetProtocol());
1561cdf0e10cSrcweir bSuccess &= assertEqual(
1562cdf0e10cSrcweir url, url,
1563cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1564cdf0e10cSrcweir
1565cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("A-b.3:/%2f?x#y"));
1566cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1567cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_GENERIC, urlobj.GetProtocol());
1568cdf0e10cSrcweir bSuccess &= assertEqual(
1569cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a-b.3:/%2F?x#y")),
1570cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1571cdf0e10cSrcweir
1572cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:"));
1573cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1574cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_CID, urlobj.GetProtocol());
1575cdf0e10cSrcweir bSuccess &= assertEqual(
1576cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cid:foo:")),
1577cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1578cdf0e10cSrcweir
1579cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:#"));
1580cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1581cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_CID, urlobj.GetProtocol());
1582cdf0e10cSrcweir bSuccess &= assertEqual(
1583cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cid:foo:#")),
1584cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1585cdf0e10cSrcweir
1586cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo:/"));
1587cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1588cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_GENERIC, urlobj.GetProtocol());
1589cdf0e10cSrcweir bSuccess &= assertEqual(
1590cdf0e10cSrcweir url, url,
1591cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1592cdf0e10cSrcweir
1593cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".foo:/"));
1594cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1595cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_CID, urlobj.GetProtocol());
1596cdf0e10cSrcweir bSuccess &= assertEqual(
1597cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cid:.foo:/")),
1598cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1599cdf0e10cSrcweir
1600cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("C:\\bla"));
1601cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1602cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_FILE, urlobj.GetProtocol());
1603cdf0e10cSrcweir bSuccess &= assertEqual(
1604cdf0e10cSrcweir url, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///C:/bla")),
1605cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1606cdf0e10cSrcweir
1607cdf0e10cSrcweir url = rtl::OUString(
1608cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("private:factory/swriter"));
1609cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_CID);
1610cdf0e10cSrcweir bSuccess &= assertEqual(
1611cdf0e10cSrcweir url, INET_PROT_PRIV_SOFFICE, urlobj.GetProtocol());
1612cdf0e10cSrcweir bSuccess &= assertEqual(
1613cdf0e10cSrcweir url, url,
1614cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1615cdf0e10cSrcweir
1616cdf0e10cSrcweir // #i80134#:
1617cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\\\\foobar\\%20#"));
1618cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_FILE);
1619cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_FILE, urlobj.GetProtocol());
1620cdf0e10cSrcweir bSuccess &= assertEqual(
1621cdf0e10cSrcweir url,
1622cdf0e10cSrcweir rtl::OUString(
1623cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("file://foobar/%2520%23")),
1624cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1625cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\\\\foo_bar\\%20#"));
1626cdf0e10cSrcweir urlobj = INetURLObject(url, INET_PROT_FILE);
1627cdf0e10cSrcweir bSuccess &= assertEqual(url, INET_PROT_FILE, urlobj.GetProtocol());
1628cdf0e10cSrcweir bSuccess &= assertEqual(
1629cdf0e10cSrcweir url,
1630cdf0e10cSrcweir rtl::OUString(
1631cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("file://foo_bar/%2520%23")),
1632cdf0e10cSrcweir rtl::OUString(urlobj.GetMainURL(INetURLObject::NO_DECODE)));
1633cdf0e10cSrcweir }
1634cdf0e10cSrcweir
1635cdf0e10cSrcweir if (true) { // #i53184#
1636cdf0e10cSrcweir rtl::OUString url(RTL_CONSTASCII_USTRINGPARAM("file://comp_name/path"));
1637cdf0e10cSrcweir bSuccess &= assertEqual(
1638cdf0e10cSrcweir rtl::OUString(
1639cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("#i53184# smart INET_PROT_FILE")),
1640cdf0e10cSrcweir INetURLObject(url, INET_PROT_FILE).GetMainURL(
1641cdf0e10cSrcweir INetURLObject::NO_DECODE),
1642cdf0e10cSrcweir url);
1643cdf0e10cSrcweir bSuccess &= assertEqual(
1644cdf0e10cSrcweir rtl::OUString(
1645cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("#i53184# strict")),
1646cdf0e10cSrcweir INetURLObject(url).GetMainURL(INetURLObject::NO_DECODE), url);
1647cdf0e10cSrcweir }
1648cdf0e10cSrcweir
1649cdf0e10cSrcweir if (true) {
1650cdf0e10cSrcweir rtl::OUString path;
1651cdf0e10cSrcweir path = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/a/b/c"));
1652cdf0e10cSrcweir bSuccess &= assertEqual(
1653cdf0e10cSrcweir path,
1654cdf0e10cSrcweir rtl::OUString(
1655cdf0e10cSrcweir INetURLObject(path, INetURLObject::FSYS_DETECT).GetMainURL(
1656cdf0e10cSrcweir INetURLObject::NO_DECODE)),
1657cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///a/b/c")));
1658cdf0e10cSrcweir path = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a\\b\\c"));
1659cdf0e10cSrcweir bSuccess &= assertEqual(
1660cdf0e10cSrcweir path,
1661cdf0e10cSrcweir rtl::OUString(
1662cdf0e10cSrcweir INetURLObject(path, INetURLObject::FSYS_DETECT).GetMainURL(
1663cdf0e10cSrcweir INetURLObject::NO_DECODE)),
1664cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///a/b/c")));
1665cdf0e10cSrcweir path = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a:b:c"));
1666cdf0e10cSrcweir bSuccess &= assertEqual(
1667cdf0e10cSrcweir path, INetURLObject(path, INetURLObject::FSYS_DETECT).HasError(),
1668cdf0e10cSrcweir true);
1669cdf0e10cSrcweir bSuccess &= assertEqual(
1670cdf0e10cSrcweir path,
1671cdf0e10cSrcweir rtl::OUString(
1672cdf0e10cSrcweir INetURLObject(
1673cdf0e10cSrcweir path,
1674cdf0e10cSrcweir INetURLObject::FSysStyle(
1675cdf0e10cSrcweir INetURLObject::FSYS_DETECT | INetURLObject::FSYS_MAC)).
1676cdf0e10cSrcweir GetMainURL(INetURLObject::NO_DECODE)),
1677cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///a/b/c")));
1678cdf0e10cSrcweir rtl::OUString url;
1679cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/a/b/c"));
1680cdf0e10cSrcweir bSuccess &= assertEqual(
1681cdf0e10cSrcweir url,
1682cdf0e10cSrcweir rtl::OUString(
1683cdf0e10cSrcweir INetURLObject(url, INET_PROT_HTTP).GetMainURL(
1684cdf0e10cSrcweir INetURLObject::NO_DECODE)),
1685cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///a/b/c")));
1686cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a:\\b\\c"));
1687cdf0e10cSrcweir bSuccess &= assertEqual(
1688cdf0e10cSrcweir url,
1689cdf0e10cSrcweir rtl::OUString(
1690cdf0e10cSrcweir INetURLObject(url, INET_PROT_HTTP).GetMainURL(
1691cdf0e10cSrcweir INetURLObject::NO_DECODE)),
1692cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///a:/b/c")));
1693cdf0e10cSrcweir url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a:b:c"));
1694cdf0e10cSrcweir bSuccess &= assertEqual(
1695cdf0e10cSrcweir url, INetURLObject(url, INET_PROT_HTTP).HasError(), true);
1696cdf0e10cSrcweir bSuccess &= assertEqual(
1697cdf0e10cSrcweir url,
1698cdf0e10cSrcweir (INetURLObject(
1699cdf0e10cSrcweir url, INET_PROT_HTTP, INetURLObject::WAS_ENCODED,
1700cdf0e10cSrcweir RTL_TEXTENCODING_UTF8,
1701cdf0e10cSrcweir INetURLObject::FSysStyle(
1702cdf0e10cSrcweir INetURLObject::FSYS_DETECT | INetURLObject::FSYS_MAC)).
1703cdf0e10cSrcweir HasError()),
1704cdf0e10cSrcweir true);
1705cdf0e10cSrcweir }
1706cdf0e10cSrcweir
1707cdf0e10cSrcweir bSuccess &= test_getSegmentCount("mailto:a@b", false, 0);
1708cdf0e10cSrcweir bSuccess &= test_getSegmentCount("vnd.sun.star.expand:$PREFIX", false, 1);
1709cdf0e10cSrcweir bSuccess &= test_getSegmentCount("vnd.sun.star.expand:$PREFIX", true, 1);
1710cdf0e10cSrcweir bSuccess &= test_getSegmentCount("vnd.sun.star.expand:$PREFIX/", false, 2);
1711cdf0e10cSrcweir bSuccess &= test_getSegmentCount("vnd.sun.star.expand:$PREFIX/", true, 1);
1712cdf0e10cSrcweir bSuccess &= test_getSegmentCount(
1713cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo", false, 2);
1714cdf0e10cSrcweir bSuccess &= test_getSegmentCount(
1715cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo", true, 2);
1716cdf0e10cSrcweir bSuccess &= test_getSegmentCount("file:///", false, 1);
1717cdf0e10cSrcweir bSuccess &= test_getSegmentCount("file:///", true, 0);
1718cdf0e10cSrcweir bSuccess &= test_getSegmentCount("file:///foo", false, 1);
1719cdf0e10cSrcweir bSuccess &= test_getSegmentCount("file:///foo", true, 1);
1720cdf0e10cSrcweir
1721cdf0e10cSrcweir bSuccess &= test_insertName(
1722cdf0e10cSrcweir "mailto:a@b", "foo", false, 0, false, false, "mailto:a@b");
1723cdf0e10cSrcweir bSuccess &= test_insertName(
1724cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false, 0, false, true,
1725cdf0e10cSrcweir "vnd.sun.star.expand:%2Ffoo/$PREFIX");
1726cdf0e10cSrcweir bSuccess &= test_insertName(
1727cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false, 0, true, true,
1728cdf0e10cSrcweir "vnd.sun.star.expand:%2Ffoo/$PREFIX");
1729cdf0e10cSrcweir bSuccess &= test_insertName(
1730cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true, 0, false, true,
1731cdf0e10cSrcweir "vnd.sun.star.expand:%2Ffoo/$PREFIX");
1732cdf0e10cSrcweir bSuccess &= test_insertName(
1733cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true, 0, true, true,
1734cdf0e10cSrcweir "vnd.sun.star.expand:%2Ffoo/$PREFIX");
1735cdf0e10cSrcweir bSuccess &= test_insertName(
1736cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false, 1, false, true,
1737cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1738cdf0e10cSrcweir bSuccess &= test_insertName(
1739cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false, 1, true, true,
1740cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1741cdf0e10cSrcweir bSuccess &= test_insertName(
1742cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true, 1, false, true,
1743cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1744cdf0e10cSrcweir bSuccess &= test_insertName(
1745cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true, 1, true, true,
1746cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1747cdf0e10cSrcweir bSuccess &= test_insertName(
1748cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false,
1749cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, false, true,
1750cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1751cdf0e10cSrcweir bSuccess &= test_insertName(
1752cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", false,
1753cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, true,
1754cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1755cdf0e10cSrcweir bSuccess &= test_insertName(
1756cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true,
1757cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, false, true,
1758cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1759cdf0e10cSrcweir bSuccess &= test_insertName(
1760cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", "foo", true,
1761cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, true,
1762cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1763cdf0e10cSrcweir bSuccess &= test_insertName(
1764cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", false,
1765cdf0e10cSrcweir 1, false, true,
1766cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1767cdf0e10cSrcweir bSuccess &= test_insertName(
1768cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", false,
1769cdf0e10cSrcweir 1, true, true,
1770cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1771cdf0e10cSrcweir bSuccess &= test_insertName(
1772cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", true,
1773cdf0e10cSrcweir 1, false, true,
1774cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1775cdf0e10cSrcweir bSuccess &= test_insertName(
1776cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", true,
1777cdf0e10cSrcweir 1, true, true,
1778cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1779cdf0e10cSrcweir bSuccess &= test_insertName(
1780cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", false,
1781cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, false, true,
1782cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX//foo");
1783cdf0e10cSrcweir bSuccess &= test_insertName(
1784cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", false,
1785cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, true,
1786cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo");
1787cdf0e10cSrcweir bSuccess &= test_insertName(
1788cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", true,
1789cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, false, true,
1790cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX//foo/");
1791cdf0e10cSrcweir bSuccess &= test_insertName(
1792cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", "foo", true,
1793cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, true,
1794cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/foo/");
1795cdf0e10cSrcweir bSuccess &= test_insertName(
1796cdf0e10cSrcweir "file:///", "foo", false, 0, false, true, "file:///foo/");
1797cdf0e10cSrcweir bSuccess &= test_insertName(
1798cdf0e10cSrcweir "file:///", "foo", false, 0, true, true, "file:///foo");
1799cdf0e10cSrcweir bSuccess &= test_insertName(
1800cdf0e10cSrcweir "file:///", "foo", true, 0, false, true, "file:///foo/");
1801cdf0e10cSrcweir bSuccess &= test_insertName(
1802cdf0e10cSrcweir "file:///", "foo", true, 0, true, true, "file:///foo/");
1803cdf0e10cSrcweir bSuccess &= test_insertName(
1804cdf0e10cSrcweir "file:///bar", "foo", false, 0, false, true, "file:///foo/bar");
1805cdf0e10cSrcweir bSuccess &= test_insertName(
1806cdf0e10cSrcweir "file:///bar", "foo", false, 0, true, true, "file:///foo/bar");
1807cdf0e10cSrcweir bSuccess &= test_insertName(
1808cdf0e10cSrcweir "file:///bar", "foo", true, 0, false, true, "file:///foo/bar");
1809cdf0e10cSrcweir bSuccess &= test_insertName(
1810cdf0e10cSrcweir "file:///bar", "foo", true, 0, true, true, "file:///foo/bar");
1811cdf0e10cSrcweir
1812cdf0e10cSrcweir bSuccess &= test_removeSegment("mailto:a@b", 0, false, false, "mailto:a@b");
1813cdf0e10cSrcweir bSuccess &= test_removeSegment(
1814cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 0, false, false,
1815cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1816cdf0e10cSrcweir bSuccess &= test_removeSegment(
1817cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 0, true, true,
1818cdf0e10cSrcweir "vnd.sun.star.expand:%2F");
1819cdf0e10cSrcweir bSuccess &= test_removeSegment(
1820cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 1, false, false,
1821cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1822cdf0e10cSrcweir bSuccess &= test_removeSegment(
1823cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 1, true, false,
1824cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1825cdf0e10cSrcweir bSuccess &= test_removeSegment(
1826cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 2, false, false,
1827cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1828cdf0e10cSrcweir bSuccess &= test_removeSegment(
1829cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", 2, true, false,
1830cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1831cdf0e10cSrcweir bSuccess &= test_removeSegment(
1832cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", INetURLObject::LAST_SEGMENT, false,
1833cdf0e10cSrcweir false, "vnd.sun.star.expand:$PREFIX");
1834cdf0e10cSrcweir bSuccess &= test_removeSegment(
1835cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX", INetURLObject::LAST_SEGMENT, true, true,
1836cdf0e10cSrcweir "vnd.sun.star.expand:%2F");
1837cdf0e10cSrcweir bSuccess &= test_removeSegment(
1838cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 0, false, true,
1839cdf0e10cSrcweir "vnd.sun.star.expand:%2F");
1840cdf0e10cSrcweir bSuccess &= test_removeSegment(
1841cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 0, true, true,
1842cdf0e10cSrcweir "vnd.sun.star.expand:%2F");
1843cdf0e10cSrcweir bSuccess &= test_removeSegment(
1844cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 1, false, true,
1845cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX");
1846cdf0e10cSrcweir bSuccess &= test_removeSegment(
1847cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 1, true, true,
1848cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/");
1849cdf0e10cSrcweir bSuccess &= test_removeSegment(
1850cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 2, false, false,
1851cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/");
1852cdf0e10cSrcweir bSuccess &= test_removeSegment(
1853cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", 2, true, false,
1854cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/");
1855cdf0e10cSrcweir bSuccess &= test_removeSegment(
1856cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", INetURLObject::LAST_SEGMENT, false,
1857cdf0e10cSrcweir true, "vnd.sun.star.expand:$PREFIX");
1858cdf0e10cSrcweir bSuccess &= test_removeSegment(
1859cdf0e10cSrcweir "vnd.sun.star.expand:$PREFIX/", INetURLObject::LAST_SEGMENT, true,
1860cdf0e10cSrcweir true, "vnd.sun.star.expand:%2F");
1861cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 0, false, true, "file:///");
1862cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 0, true, true, "file:///");
1863cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 1, false, false, "file:///");
1864cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 1, true, false, "file:///");
1865cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 2, false, false, "file:///");
1866cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///", 2, true, false, "file:///");
1867cdf0e10cSrcweir bSuccess &= test_removeSegment(
1868cdf0e10cSrcweir "file:///", INetURLObject::LAST_SEGMENT, false, true, "file:///");
1869cdf0e10cSrcweir bSuccess &= test_removeSegment(
1870cdf0e10cSrcweir "file:///", INetURLObject::LAST_SEGMENT, true, false, "file:///");
1871cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///foo", 0, false, true, "file:///");
1872cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///foo", 0, true, true, "file:///");
1873cdf0e10cSrcweir bSuccess &= test_removeSegment(
1874cdf0e10cSrcweir "file:///foo", 1, false, false, "file:///foo");
1875cdf0e10cSrcweir bSuccess &= test_removeSegment(
1876cdf0e10cSrcweir "file:///foo", 1, true, false, "file:///foo");
1877cdf0e10cSrcweir bSuccess &= test_removeSegment(
1878cdf0e10cSrcweir "file:///foo", 2, false, false, "file:///foo");
1879cdf0e10cSrcweir bSuccess &= test_removeSegment(
1880cdf0e10cSrcweir "file:///foo", 2, true, false, "file:///foo");
1881cdf0e10cSrcweir bSuccess &= test_removeSegment(
1882cdf0e10cSrcweir "file:///foo", INetURLObject::LAST_SEGMENT, false, true, "file:///");
1883cdf0e10cSrcweir bSuccess &= test_removeSegment(
1884cdf0e10cSrcweir "file:///foo", INetURLObject::LAST_SEGMENT, true, true, "file:///");
1885cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///foo/", 0, false, true, "file:///");
1886cdf0e10cSrcweir bSuccess &= test_removeSegment("file:///foo/", 0, true, true, "file:///");
1887cdf0e10cSrcweir bSuccess &= test_removeSegment(
1888cdf0e10cSrcweir "file:///foo/", 1, false, true, "file:///foo");
1889cdf0e10cSrcweir bSuccess &= test_removeSegment(
1890cdf0e10cSrcweir "file:///foo/", 1, true, true, "file:///foo/");
1891cdf0e10cSrcweir bSuccess &= test_removeSegment(
1892cdf0e10cSrcweir "file:///foo/", 2, false, false, "file:///foo/");
1893cdf0e10cSrcweir bSuccess &= test_removeSegment(
1894cdf0e10cSrcweir "file:///foo/", 2, true, false, "file:///foo/");
1895cdf0e10cSrcweir bSuccess &= test_removeSegment(
1896cdf0e10cSrcweir "file:///foo/", INetURLObject::LAST_SEGMENT, false, true,
1897cdf0e10cSrcweir "file:///foo");
1898cdf0e10cSrcweir bSuccess &= test_removeSegment(
1899cdf0e10cSrcweir "file:///foo/", INetURLObject::LAST_SEGMENT, true, true, "file:///");
1900cdf0e10cSrcweir
1901cdf0e10cSrcweir return bSuccess ? EXIT_SUCCESS : EXIT_FAILURE;
1902cdf0e10cSrcweir }
1903