xref: /AOO41X/main/sal/qa/osl/file/osl_old_test_file.cxx (revision 87d2adbc9cadf14644c3679b041b9226f7630199)
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
10cdf0e10cSrcweir  *
11*87d2adbcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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