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