1*87d2adbcSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*87d2adbcSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*87d2adbcSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*87d2adbcSAndrew Rist * distributed with this work for additional information
6*87d2adbcSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*87d2adbcSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*87d2adbcSAndrew Rist * "License"); you may not use this file except in compliance
9*87d2adbcSAndrew Rist * with the License. You may obtain a copy of the License at
10*87d2adbcSAndrew Rist *
11*87d2adbcSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*87d2adbcSAndrew Rist *
13*87d2adbcSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*87d2adbcSAndrew Rist * software distributed under the License is distributed on an
15*87d2adbcSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*87d2adbcSAndrew Rist * KIND, either express or implied. See the License for the
17*87d2adbcSAndrew Rist * specific language governing permissions and limitations
18*87d2adbcSAndrew Rist * under the License.
19*87d2adbcSAndrew Rist *
20*87d2adbcSAndrew Rist *************************************************************/
21*87d2adbcSAndrew Rist
22*87d2adbcSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sal.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir // LLA:
28cdf0e10cSrcweir // this file is converted to use with testshl2
29cdf0e10cSrcweir // original was placed in sal/test/textenc.cxx
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include <stdio.h>
32cdf0e10cSrcweir
33cdf0e10cSrcweir #include <osl/file.h>
34cdf0e10cSrcweir #include <osl/process.h>
35cdf0e10cSrcweir #include <rtl/ustring.hxx>
36cdf0e10cSrcweir #ifdef SAL_UNX
37cdf0e10cSrcweir #include <unistd.h>
38cdf0e10cSrcweir #include <limits.h>
39cdf0e10cSrcweir #include <string.h>
40cdf0e10cSrcweir #include <sys/stat.h>
41cdf0e10cSrcweir #define TEST_VOLUME ""
42cdf0e10cSrcweir #else
43cdf0e10cSrcweir // WINDOWS
44cdf0e10cSrcweir #define TEST_VOLUME "c:/"
45cdf0e10cSrcweir #endif
46cdf0e10cSrcweir
47cdf0e10cSrcweir #include <testshl/simpleheader.hxx>
48cdf0e10cSrcweir
49cdf0e10cSrcweir namespace osl_test_file
50cdf0e10cSrcweir {
51cdf0e10cSrcweir
52cdf0e10cSrcweir // -----------------------------------------------------------------------------
53cdf0e10cSrcweir
54cdf0e10cSrcweir class oldtestfile : public CppUnit::TestFixture
55cdf0e10cSrcweir {
56cdf0e10cSrcweir public:
57cdf0e10cSrcweir void test_file_001();
58cdf0e10cSrcweir void test_file_002();
59cdf0e10cSrcweir void test_file_003();
60cdf0e10cSrcweir void test_file_004();
61cdf0e10cSrcweir
62cdf0e10cSrcweir CPPUNIT_TEST_SUITE( oldtestfile );
63cdf0e10cSrcweir CPPUNIT_TEST( test_file_001 );
64cdf0e10cSrcweir CPPUNIT_TEST( test_file_002 );
65cdf0e10cSrcweir CPPUNIT_TEST( test_file_003 );
66cdf0e10cSrcweir CPPUNIT_TEST( test_file_004 );
67cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END( );
68cdf0e10cSrcweir };
69cdf0e10cSrcweir
70cdf0e10cSrcweir char *aSource1[] =
71cdf0e10cSrcweir {
72cdf0e10cSrcweir "a" , "file:///" TEST_VOLUME "bla/a",
73cdf0e10cSrcweir "a/" , "file:///" TEST_VOLUME "bla/a",
74cdf0e10cSrcweir "../a" , "file:///" TEST_VOLUME "a" ,
75cdf0e10cSrcweir "a/.." , "file:///" TEST_VOLUME "bla",
76cdf0e10cSrcweir "a/../b" , "file:///" TEST_VOLUME "bla/b",
77cdf0e10cSrcweir ".." , "file:///" TEST_VOLUME "",
78cdf0e10cSrcweir "a/b/c/d/" , "file:///" TEST_VOLUME "bla/a/b/c/d",
79cdf0e10cSrcweir "a/./c" , "file:///" TEST_VOLUME "bla/a/c",
80cdf0e10cSrcweir "file:///bla/blub", "file:///" TEST_VOLUME "bla/blub",
81cdf0e10cSrcweir 0 , 0
82cdf0e10cSrcweir };
83cdf0e10cSrcweir
84cdf0e10cSrcweir char *aSource2[ ] =
85cdf0e10cSrcweir {
86cdf0e10cSrcweir "a" , "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
87cdf0e10cSrcweir "a/", "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
88cdf0e10cSrcweir "../a", "file:///" TEST_VOLUME "bla/blubs/a",
89cdf0e10cSrcweir "../../a", "file:///" TEST_VOLUME "bla/a",
90cdf0e10cSrcweir "../../../a", "file:///" TEST_VOLUME "a",
91cdf0e10cSrcweir "../../../a/b/c/d", "file:///" TEST_VOLUME "a/b/c/d",
92cdf0e10cSrcweir 0,0
93cdf0e10cSrcweir };
94cdf0e10cSrcweir
95cdf0e10cSrcweir char *aSource3[ ] =
96cdf0e10cSrcweir {
97cdf0e10cSrcweir ".." , "/a",
98cdf0e10cSrcweir "../a" , "/a/a",
99cdf0e10cSrcweir "e/f" , "/c/e/f",
100cdf0e10cSrcweir "../..", "",
101cdf0e10cSrcweir 0,0
102cdf0e10cSrcweir };
103cdf0e10cSrcweir
104cdf0e10cSrcweir using namespace rtl;
105cdf0e10cSrcweir
test_file_001()106cdf0e10cSrcweir void oldtestfile::test_file_001()
107cdf0e10cSrcweir {
108cdf0e10cSrcweir #ifdef WIN32
109cdf0e10cSrcweir return;
110cdf0e10cSrcweir #endif
111cdf0e10cSrcweir
112cdf0e10cSrcweir OUString base1( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla" ) );
113cdf0e10cSrcweir int i;
114cdf0e10cSrcweir for( i = 0 ; aSource1[i] ; i +=2 )
115cdf0e10cSrcweir {
116cdf0e10cSrcweir OUString target;
117cdf0e10cSrcweir OUString rel = OUString::createFromAscii( aSource1[i] );
118cdf0e10cSrcweir oslFileError e = osl_getAbsoluteFileURL( base1.pData, rel.pData , &target.pData );
119cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #1", osl_File_E_None == e );
120cdf0e10cSrcweir if( osl_File_E_None == e )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #1.1", target.equalsAscii( aSource1[i+1] ) );
123cdf0e10cSrcweir }
124cdf0e10cSrcweir OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
125cdf0e10cSrcweir OString obase = OUStringToOString( base1 , RTL_TEXTENCODING_ASCII_US );
126cdf0e10cSrcweir fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
127cdf0e10cSrcweir }
128cdf0e10cSrcweir
129cdf0e10cSrcweir OUString err1( RTL_CONSTASCII_USTRINGPARAM( "../.." ) );
130cdf0e10cSrcweir OUString target;
131cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #11", osl_File_E_None != osl_getAbsoluteFileURL( base1.pData , err1.pData , &target.pData ) );
132cdf0e10cSrcweir
133cdf0e10cSrcweir }
134cdf0e10cSrcweir
test_file_002()135cdf0e10cSrcweir void oldtestfile::test_file_002()
136cdf0e10cSrcweir {
137cdf0e10cSrcweir #ifdef WIN32
138cdf0e10cSrcweir return;
139cdf0e10cSrcweir #endif
140cdf0e10cSrcweir
141cdf0e10cSrcweir OUString base2( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/blubs/schnubbel" ) );
142cdf0e10cSrcweir int i;
143cdf0e10cSrcweir for( i = 0 ; aSource2[i] ; i +=2 )
144cdf0e10cSrcweir {
145cdf0e10cSrcweir OUString target;
146cdf0e10cSrcweir OUString rel = OUString::createFromAscii( aSource2[i] );
147cdf0e10cSrcweir oslFileError e = osl_getAbsoluteFileURL( base2.pData, rel.pData , &target.pData );
148cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #2", osl_File_E_None == e );
149cdf0e10cSrcweir if( osl_File_E_None == e )
150cdf0e10cSrcweir {
151cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #2.1", target.equalsAscii( aSource2[i+1] ) );
152cdf0e10cSrcweir }
153cdf0e10cSrcweir OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
154cdf0e10cSrcweir OString obase = OUStringToOString( base2 , RTL_TEXTENCODING_ASCII_US );
155cdf0e10cSrcweir // fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource2[i], o.pData->buffer );
156cdf0e10cSrcweir }
157cdf0e10cSrcweir }
158cdf0e10cSrcweir
test_file_003()159cdf0e10cSrcweir void oldtestfile::test_file_003()
160cdf0e10cSrcweir {
161cdf0e10cSrcweir #ifdef WIN32
162cdf0e10cSrcweir return;
163cdf0e10cSrcweir #endif
164cdf0e10cSrcweir
165cdf0e10cSrcweir // links !
166cdf0e10cSrcweir #ifdef UNX
167cdf0e10cSrcweir int i;
168cdf0e10cSrcweir char buf[PATH_MAX];
169cdf0e10cSrcweir if( getcwd( buf, PATH_MAX ) )
170cdf0e10cSrcweir {
171cdf0e10cSrcweir char buf2[PATH_MAX];
172cdf0e10cSrcweir strcpy( buf2 , buf );
173cdf0e10cSrcweir strcat( buf2, "/a" );
174cdf0e10cSrcweir
175cdf0e10cSrcweir if( 0 == mkdir( buf2 , S_IRWXG | S_IRWXO | S_IRWXU ) )
176cdf0e10cSrcweir {
177cdf0e10cSrcweir strcat( buf2, "/b" );
178cdf0e10cSrcweir if( 0 == mkdir( buf2, S_IRWXU | S_IRWXO | S_IRWXU ) )
179cdf0e10cSrcweir {
180cdf0e10cSrcweir if( 0 == symlink( buf2 , "c" ) )
181cdf0e10cSrcweir {
182cdf0e10cSrcweir OUString dir;
183cdf0e10cSrcweir osl_getProcessWorkingDir( &(dir.pData) );
184cdf0e10cSrcweir
185cdf0e10cSrcweir OUString base3 = dir;
186cdf0e10cSrcweir base3 += OUString( RTL_CONSTASCII_USTRINGPARAM( "/c" ) );
187cdf0e10cSrcweir for( i = 0 ; aSource3[i] ; i +=2 )
188cdf0e10cSrcweir {
189cdf0e10cSrcweir OUString target;
190cdf0e10cSrcweir OUString rel = OUString::createFromAscii( aSource3[i] );
191cdf0e10cSrcweir oslFileError e = osl_getAbsoluteFileURL( base3.pData, rel.pData , &target.pData );
192cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #3", osl_File_E_None == e );
193cdf0e10cSrcweir if( osl_File_E_None == e )
194cdf0e10cSrcweir {
195cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #4", target.getLength() >= dir.getLength() );
196cdf0e10cSrcweir if( target.getLength() >= dir.getLength() )
197cdf0e10cSrcweir {
198cdf0e10cSrcweir int j;
199cdf0e10cSrcweir for( j = dir.getLength() ;
200cdf0e10cSrcweir j < target.getLength() &&
201cdf0e10cSrcweir aSource3[i+1][j-dir.getLength()] == target[j] ; j++ );
202cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #5", j == target.getLength() );
203cdf0e10cSrcweir }
204cdf0e10cSrcweir }
205cdf0e10cSrcweir OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
206cdf0e10cSrcweir OString obase = OUStringToOString( base3 , RTL_TEXTENCODING_ASCII_US );
207cdf0e10cSrcweir fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource3[i], o.pData->buffer );
208cdf0e10cSrcweir }
209cdf0e10cSrcweir unlink( "c" );
210cdf0e10cSrcweir }
211cdf0e10cSrcweir else
212cdf0e10cSrcweir {
213cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #6", 0 );
214cdf0e10cSrcweir }
215cdf0e10cSrcweir rmdir( "a/b" );
216cdf0e10cSrcweir }
217cdf0e10cSrcweir else
218cdf0e10cSrcweir {
219cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #7", 0 );
220cdf0e10cSrcweir }
221cdf0e10cSrcweir rmdir( "a" );
222cdf0e10cSrcweir }
223cdf0e10cSrcweir else
224cdf0e10cSrcweir {
225cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #8", 0 );
226cdf0e10cSrcweir }
227cdf0e10cSrcweir }
228cdf0e10cSrcweir else
229cdf0e10cSrcweir {
230cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #9", 0 );
231cdf0e10cSrcweir }
232cdf0e10cSrcweir #endif
233cdf0e10cSrcweir }
234cdf0e10cSrcweir
test_file_004()235cdf0e10cSrcweir void oldtestfile::test_file_004()
236cdf0e10cSrcweir {
237cdf0e10cSrcweir #ifdef WIN32
238cdf0e10cSrcweir return;
239cdf0e10cSrcweir #endif
240cdf0e10cSrcweir
241cdf0e10cSrcweir OUString base4( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/" ) );
242cdf0e10cSrcweir int i;
243cdf0e10cSrcweir for( i = 0 ; aSource1[i] ; i +=2 )
244cdf0e10cSrcweir {
245cdf0e10cSrcweir OUString target;
246cdf0e10cSrcweir OUString rel = OUString::createFromAscii( aSource1[i] );
247cdf0e10cSrcweir oslFileError e = osl_getAbsoluteFileURL( base4.pData, rel.pData , &target.pData );
248cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #10", osl_File_E_None == e );
249cdf0e10cSrcweir if( osl_File_E_None == e )
250cdf0e10cSrcweir {
251cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("failure #10.1", target.equalsAscii( aSource1[i+1] ) );
252cdf0e10cSrcweir }
253cdf0e10cSrcweir OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
254cdf0e10cSrcweir OString obase = OUStringToOString( base4 , RTL_TEXTENCODING_ASCII_US );
255cdf0e10cSrcweir fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
256cdf0e10cSrcweir }
257cdf0e10cSrcweir
258cdf0e10cSrcweir
259cdf0e10cSrcweir // fprintf( stderr, "test_file done\n" );
260cdf0e10cSrcweir }
261cdf0e10cSrcweir
262cdf0e10cSrcweir } // namespace osl_test_file
263cdf0e10cSrcweir
264cdf0e10cSrcweir // -----------------------------------------------------------------------------
265cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_test_file::oldtestfile, "osl_File" );
266cdf0e10cSrcweir
267cdf0e10cSrcweir // -----------------------------------------------------------------------------
268cdf0e10cSrcweir NOADDITIONAL;
269cdf0e10cSrcweir
270