xref: /trunk/main/sal/qa/osl/file/osl_old_test_file.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_sal.hxx"
30 
31 // LLA:
32 // this file is converted to use with testshl2
33 // original was placed in sal/test/textenc.cxx
34 
35 #include <stdio.h>
36 
37 #include <osl/file.h>
38 #include <osl/process.h>
39 #include <rtl/ustring.hxx>
40 #ifdef SAL_UNX
41 #include <unistd.h>
42 #include <limits.h>
43 #include <string.h>
44 #include <sys/stat.h>
45 #define TEST_VOLUME ""
46 #else
47 // WINDOWS
48 #define TEST_VOLUME "c:/"
49 #endif
50 
51 #include <testshl/simpleheader.hxx>
52 
53 namespace osl_test_file
54 {
55 
56 // -----------------------------------------------------------------------------
57 
58 class oldtestfile : public CppUnit::TestFixture
59 {
60 public:
61     void test_file_001();
62     void test_file_002();
63     void test_file_003();
64     void test_file_004();
65 
66     CPPUNIT_TEST_SUITE( oldtestfile );
67     CPPUNIT_TEST( test_file_001 );
68     CPPUNIT_TEST( test_file_002 );
69     CPPUNIT_TEST( test_file_003 );
70     CPPUNIT_TEST( test_file_004 );
71     CPPUNIT_TEST_SUITE_END( );
72 };
73 
74 char *aSource1[] =
75 {
76     "a"    , "file:///" TEST_VOLUME "bla/a",
77     "a/"   , "file:///" TEST_VOLUME "bla/a",
78     "../a" , "file:///" TEST_VOLUME "a" ,
79     "a/.." , "file:///" TEST_VOLUME "bla",
80     "a/../b" , "file:///" TEST_VOLUME "bla/b",
81     ".."   , "file:///" TEST_VOLUME "",
82     "a/b/c/d/"   , "file:///" TEST_VOLUME "bla/a/b/c/d",
83     "a/./c"   , "file:///" TEST_VOLUME "bla/a/c",
84     "file:///bla/blub", "file:///" TEST_VOLUME "bla/blub",
85     0 , 0
86 };
87 
88 char *aSource2[ ] =
89 {
90     "a" , "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
91     "a/", "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
92     "../a", "file:///" TEST_VOLUME "bla/blubs/a",
93     "../../a", "file:///" TEST_VOLUME "bla/a",
94     "../../../a", "file:///" TEST_VOLUME "a",
95     "../../../a/b/c/d", "file:///" TEST_VOLUME "a/b/c/d",
96     0,0
97 };
98 
99 char *aSource3[ ] =
100 {
101     ".." , "/a",
102     "../a" , "/a/a",
103     "e/f" , "/c/e/f",
104     "../..", "",
105     0,0
106 };
107 
108 using namespace rtl;
109 
110 void oldtestfile::test_file_001()
111 {
112 #ifdef WIN32
113     return;
114 #endif
115 
116     OUString base1( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla" ) );
117     int i;
118     for( i = 0 ; aSource1[i] ; i +=2 )
119     {
120         OUString target;
121         OUString rel = OUString::createFromAscii( aSource1[i] );
122         oslFileError e = osl_getAbsoluteFileURL( base1.pData, rel.pData , &target.pData );
123         CPPUNIT_ASSERT_MESSAGE("failure #1",  osl_File_E_None == e );
124         if( osl_File_E_None == e )
125         {
126             CPPUNIT_ASSERT_MESSAGE("failure #1.1",  target.equalsAscii( aSource1[i+1] ) );
127         }
128         OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
129         OString obase = OUStringToOString( base1 , RTL_TEXTENCODING_ASCII_US );
130         fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
131     }
132 
133     OUString err1( RTL_CONSTASCII_USTRINGPARAM( "../.." ) );
134     OUString target;
135     CPPUNIT_ASSERT_MESSAGE("failure #11",  osl_File_E_None != osl_getAbsoluteFileURL( base1.pData , err1.pData , &target.pData ) );
136 
137 }
138 
139 void oldtestfile::test_file_002()
140 {
141 #ifdef WIN32
142     return;
143 #endif
144 
145     OUString base2( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/blubs/schnubbel" ) );
146     int i;
147     for(  i = 0 ; aSource2[i] ; i +=2 )
148     {
149         OUString target;
150         OUString rel = OUString::createFromAscii( aSource2[i] );
151         oslFileError e = osl_getAbsoluteFileURL( base2.pData, rel.pData , &target.pData );
152         CPPUNIT_ASSERT_MESSAGE("failure #2",  osl_File_E_None == e );
153         if( osl_File_E_None == e )
154         {
155             CPPUNIT_ASSERT_MESSAGE("failure #2.1",  target.equalsAscii( aSource2[i+1] ) );
156         }
157         OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
158         OString obase = OUStringToOString( base2 , RTL_TEXTENCODING_ASCII_US );
159 //      fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource2[i], o.pData->buffer );
160     }
161 }
162 
163 void oldtestfile::test_file_003()
164 {
165 #ifdef WIN32
166     return;
167 #endif
168 
169     // links !
170 #ifdef UNX
171     int i;
172     char buf[PATH_MAX];
173     if( getcwd( buf, PATH_MAX ) )
174     {
175         char buf2[PATH_MAX];
176         strcpy( buf2 , buf );
177         strcat( buf2, "/a" );
178 
179         if( 0 == mkdir( buf2 , S_IRWXG | S_IRWXO | S_IRWXU ) )
180         {
181             strcat( buf2, "/b" );
182             if( 0 == mkdir( buf2, S_IRWXU | S_IRWXO | S_IRWXU ) )
183             {
184                 if( 0 == symlink( buf2 , "c" ) )
185                 {
186                     OUString dir;
187                     osl_getProcessWorkingDir( &(dir.pData) );
188 
189                     OUString base3 = dir;
190                     base3 += OUString( RTL_CONSTASCII_USTRINGPARAM( "/c" ) );
191                     for( i = 0 ; aSource3[i] ; i +=2 )
192                     {
193                         OUString target;
194                         OUString rel = OUString::createFromAscii( aSource3[i] );
195                         oslFileError e = osl_getAbsoluteFileURL( base3.pData, rel.pData , &target.pData );
196                         CPPUNIT_ASSERT_MESSAGE("failure #3",  osl_File_E_None == e );
197                         if( osl_File_E_None == e )
198                         {
199                             CPPUNIT_ASSERT_MESSAGE("failure #4",  target.getLength() >= dir.getLength() );
200                             if( target.getLength() >= dir.getLength() )
201                             {
202                                                             int j;
203                                                             for( j = dir.getLength() ;
204                                      j < target.getLength() &&
205                                          aSource3[i+1][j-dir.getLength()] == target[j]   ; j++ );
206                                 CPPUNIT_ASSERT_MESSAGE("failure #5",  j == target.getLength() );
207                             }
208                         }
209                         OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
210                         OString obase = OUStringToOString( base3 , RTL_TEXTENCODING_ASCII_US );
211                         fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource3[i], o.pData->buffer );
212                     }
213                     unlink( "c" );
214                 }
215                 else
216                 {
217                     CPPUNIT_ASSERT_MESSAGE("failure #6",  0 );
218                 }
219                 rmdir( "a/b" );
220             }
221             else
222             {
223                 CPPUNIT_ASSERT_MESSAGE("failure #7",  0 );
224             }
225             rmdir( "a" );
226         }
227         else
228         {
229             CPPUNIT_ASSERT_MESSAGE("failure #8",  0 );
230         }
231     }
232     else
233     {
234         CPPUNIT_ASSERT_MESSAGE("failure #9",  0 );
235     }
236 #endif
237 }
238 
239 void oldtestfile::test_file_004()
240 {
241 #ifdef WIN32
242     return;
243 #endif
244 
245     OUString base4( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/" ) );
246     int i;
247     for( i = 0 ; aSource1[i] ; i +=2 )
248     {
249         OUString target;
250         OUString rel = OUString::createFromAscii( aSource1[i] );
251         oslFileError e = osl_getAbsoluteFileURL( base4.pData, rel.pData , &target.pData );
252         CPPUNIT_ASSERT_MESSAGE("failure #10",  osl_File_E_None == e );
253         if( osl_File_E_None == e )
254         {
255             CPPUNIT_ASSERT_MESSAGE("failure #10.1",  target.equalsAscii( aSource1[i+1] ) );
256         }
257         OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
258         OString obase = OUStringToOString( base4 , RTL_TEXTENCODING_ASCII_US );
259         fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
260     }
261 
262 
263 //  fprintf( stderr, "test_file done\n" );
264 }
265 
266 } // namespace osl_test_file
267 
268 // -----------------------------------------------------------------------------
269 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_test_file::oldtestfile, "osl_File" );
270 
271 // -----------------------------------------------------------------------------
272 NOADDITIONAL;
273 
274