xref: /aoo41x/main/sal/qa/osl/file/osl_File.cxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sal.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir //------------------------------------------------------------------------
32*cdf0e10cSrcweir // include files
33*cdf0e10cSrcweir //------------------------------------------------------------------------
34*cdf0e10cSrcweir #include <sal/types.h>
35*cdf0e10cSrcweir #include <rtl/ustring.hxx>
36*cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir #include "osl/thread.h"
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #include "rtl/ustrbuf.hxx"
41*cdf0e10cSrcweir #include <osl/file.hxx>
42*cdf0e10cSrcweir #include <osl_File_Const.h>
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #include <testshl/simpleheader.hxx>
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir // #ifdef WNT
47*cdf0e10cSrcweir // #   define UNICODE
48*cdf0e10cSrcweir // #	define WIN32_LEAN_AND_MEAN
49*cdf0e10cSrcweir // #	include <windows.h>
50*cdf0e10cSrcweir // #   include <tchar.h>
51*cdf0e10cSrcweir // #endif
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir 
54*cdf0e10cSrcweir using namespace osl;
55*cdf0e10cSrcweir using namespace rtl;
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir //------------------------------------------------------------------------
58*cdf0e10cSrcweir // helper functions
59*cdf0e10cSrcweir //------------------------------------------------------------------------
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir /** detailed wrong message.
62*cdf0e10cSrcweir */
63*cdf0e10cSrcweir inline ::rtl::OString errorToString( const ::osl::FileBase::RC _nError )
64*cdf0e10cSrcweir {
65*cdf0e10cSrcweir 	::rtl::OString sResult;
66*cdf0e10cSrcweir 	switch ( _nError ) {
67*cdf0e10cSrcweir 		case ::osl::FileBase::E_None:
68*cdf0e10cSrcweir 			sResult = "Success";
69*cdf0e10cSrcweir 			break;
70*cdf0e10cSrcweir 		case ::osl::FileBase::E_PERM:
71*cdf0e10cSrcweir 			sResult = "Operation not permitted";
72*cdf0e10cSrcweir 			break;
73*cdf0e10cSrcweir 		case ::osl::FileBase::E_NOENT:
74*cdf0e10cSrcweir 			sResult = "No such file or directory";
75*cdf0e10cSrcweir 			break;
76*cdf0e10cSrcweir 		case ::osl::FileBase::E_EXIST:
77*cdf0e10cSrcweir 			sResult = "Already Exist";
78*cdf0e10cSrcweir 			break;
79*cdf0e10cSrcweir 		case ::osl::FileBase::E_ACCES:
80*cdf0e10cSrcweir 			sResult = "Permission denied";
81*cdf0e10cSrcweir 			break;
82*cdf0e10cSrcweir 		case ::osl::FileBase::E_INVAL:
83*cdf0e10cSrcweir 			sResult = "The format of the parameters was not valid";
84*cdf0e10cSrcweir 			break;
85*cdf0e10cSrcweir 		case ::osl::FileBase::E_NOTDIR:
86*cdf0e10cSrcweir 			sResult = "Not a directory";
87*cdf0e10cSrcweir 			break;
88*cdf0e10cSrcweir 		case ::osl::FileBase::E_ISDIR:
89*cdf0e10cSrcweir 			sResult = "Is a directory";
90*cdf0e10cSrcweir 			break;
91*cdf0e10cSrcweir 		case ::osl::FileBase::E_BADF:
92*cdf0e10cSrcweir 			sResult = "Bad file";
93*cdf0e10cSrcweir 			break;
94*cdf0e10cSrcweir 		case ::osl::FileBase::E_NOTEMPTY:
95*cdf0e10cSrcweir 			sResult = "The directory is not empty";
96*cdf0e10cSrcweir 			break;
97*cdf0e10cSrcweir 		default:
98*cdf0e10cSrcweir 			sResult = "Unknown Error";
99*cdf0e10cSrcweir 			break;
100*cdf0e10cSrcweir 	}
101*cdf0e10cSrcweir 	return sResult;
102*cdf0e10cSrcweir }
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir rtl::OUString errorToStr( ::osl::FileBase::RC const& nError)
105*cdf0e10cSrcweir {
106*cdf0e10cSrcweir     rtl::OUStringBuffer suBuf;
107*cdf0e10cSrcweir     suBuf.append( rtl::OUString::createFromAscii("The returned error is: ") );
108*cdf0e10cSrcweir     suBuf.append( rtl::OStringToOUString(errorToString(nError), RTL_TEXTENCODING_ASCII_US) );
109*cdf0e10cSrcweir     suBuf.append( rtl::OUString::createFromAscii("!\n") );
110*cdf0e10cSrcweir     return suBuf.makeStringAndClear();
111*cdf0e10cSrcweir }
112*cdf0e10cSrcweir 
113*cdf0e10cSrcweir /** print a file type name.
114*cdf0e10cSrcweir */
115*cdf0e10cSrcweir inline void printFileType( const ::osl::FileStatus::Type nType )
116*cdf0e10cSrcweir {
117*cdf0e10cSrcweir 	t_print( "#printFileType# " );
118*cdf0e10cSrcweir 	switch ( nType ) {
119*cdf0e10cSrcweir 		case ::osl::FileStatus::Directory:
120*cdf0e10cSrcweir 			t_print( "This file is a: Directory.\n" );
121*cdf0e10cSrcweir 			break;
122*cdf0e10cSrcweir 		case ::osl::FileStatus::Volume:
123*cdf0e10cSrcweir 			t_print( "This file is a: volume device.\n" );
124*cdf0e10cSrcweir 			break;
125*cdf0e10cSrcweir 		case ::osl::FileStatus::Regular:
126*cdf0e10cSrcweir 			t_print( "This file is a: regular file.\n" );
127*cdf0e10cSrcweir 			break;
128*cdf0e10cSrcweir 		case ::osl::FileStatus::Fifo:
129*cdf0e10cSrcweir 			t_print( "This file is a: fifo.\n" );
130*cdf0e10cSrcweir 			break;
131*cdf0e10cSrcweir 		case ::osl::FileStatus::Socket:
132*cdf0e10cSrcweir 			t_print( "This file is a: socket.\n" );
133*cdf0e10cSrcweir 			break;
134*cdf0e10cSrcweir 		case ::osl::FileStatus::Link:
135*cdf0e10cSrcweir 			t_print( "This file is a: link file.\n" );
136*cdf0e10cSrcweir 			break;
137*cdf0e10cSrcweir 		case ::osl::FileStatus::Special:
138*cdf0e10cSrcweir 			t_print( "This file is a: special.\n" );
139*cdf0e10cSrcweir 			break;
140*cdf0e10cSrcweir 		case ::osl::FileStatus::Unknown:
141*cdf0e10cSrcweir 			t_print( "The file type is unknown %d \n", nType );
142*cdf0e10cSrcweir 			break;
143*cdf0e10cSrcweir 	}
144*cdf0e10cSrcweir }
145*cdf0e10cSrcweir 
146*cdf0e10cSrcweir /** print a file attributes.
147*cdf0e10cSrcweir */
148*cdf0e10cSrcweir inline void printFileAttributes( const sal_Int64 nAttributes )
149*cdf0e10cSrcweir {
150*cdf0e10cSrcweir 	t_print( "#printFileAttributes# This file is a: (" );
151*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_ReadOnly ) == nAttributes )
152*cdf0e10cSrcweir 			t_print( " ReadOnly " );
153*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_Hidden ) == nAttributes )
154*cdf0e10cSrcweir 			t_print( " Hidden " );
155*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_Executable ) == nAttributes )
156*cdf0e10cSrcweir 			t_print( " Executable " );
157*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_GrpWrite ) == nAttributes )
158*cdf0e10cSrcweir 			t_print( " GrpWrite " );
159*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_GrpRead ) == nAttributes )
160*cdf0e10cSrcweir 			t_print( " GrpRead " );
161*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_GrpExe ) == nAttributes )
162*cdf0e10cSrcweir 			t_print( " GrpExe " );
163*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OwnWrite ) == nAttributes )
164*cdf0e10cSrcweir 			t_print( " OwnWrite " );
165*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OwnRead ) == nAttributes )
166*cdf0e10cSrcweir 			t_print( " OwnRead " );
167*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OwnExe ) == nAttributes )
168*cdf0e10cSrcweir 			t_print( " OwnExe " );
169*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OthWrite ) == nAttributes )
170*cdf0e10cSrcweir 			t_print( " OthWrite " );
171*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OthRead ) == nAttributes )
172*cdf0e10cSrcweir 			t_print( " OthRead " );
173*cdf0e10cSrcweir 	if ( ( nAttributes | Attribute_OthExe ) == nAttributes )
174*cdf0e10cSrcweir 			t_print( " OthExe " );
175*cdf0e10cSrcweir 	t_print( ") file!\n" );
176*cdf0e10cSrcweir }
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir /** print a UNI_CODE file name.
179*cdf0e10cSrcweir */
180*cdf0e10cSrcweir inline void printFileName( const ::rtl::OUString & str )
181*cdf0e10cSrcweir {
182*cdf0e10cSrcweir 	rtl::OString aString;
183*cdf0e10cSrcweir 
184*cdf0e10cSrcweir 	t_print( "#printFileName_u# " );
185*cdf0e10cSrcweir 	aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
186*cdf0e10cSrcweir 	t_print( "%s\n", aString.getStr( ) );
187*cdf0e10cSrcweir }
188*cdf0e10cSrcweir 
189*cdf0e10cSrcweir /** print a ASCII_CODE file name.
190*cdf0e10cSrcweir */
191*cdf0e10cSrcweir inline void printFileName( const sal_Char * str )
192*cdf0e10cSrcweir {
193*cdf0e10cSrcweir 	t_print( "#printFileName_a# " );
194*cdf0e10cSrcweir 	t_print( "%s\n", str );
195*cdf0e10cSrcweir }
196*cdf0e10cSrcweir 
197*cdf0e10cSrcweir /** print an output wrong message.
198*cdf0e10cSrcweir */
199*cdf0e10cSrcweir inline void printError( const ::osl::FileBase::RC nError )
200*cdf0e10cSrcweir {
201*cdf0e10cSrcweir 	t_print( "#printError# " );
202*cdf0e10cSrcweir 	printFileName( errorToStr(nError) );
203*cdf0e10cSrcweir }
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir /** print an signed Integer Number.
206*cdf0e10cSrcweir */
207*cdf0e10cSrcweir inline void printInt( sal_Int64 i )
208*cdf0e10cSrcweir {
209*cdf0e10cSrcweir 	t_print( "#printInt_i64# " );
210*cdf0e10cSrcweir 	t_print( "The Integer64 is %lld\n", i);
211*cdf0e10cSrcweir }
212*cdf0e10cSrcweir 
213*cdf0e10cSrcweir /** print an unsigned Integer Number.
214*cdf0e10cSrcweir */
215*cdf0e10cSrcweir inline void printInt( sal_uInt64 i )
216*cdf0e10cSrcweir {
217*cdf0e10cSrcweir 	t_print( "#printInt_u64# " );
218*cdf0e10cSrcweir 	t_print( "The unsigned Integer64 is %llu\n", i);
219*cdf0e10cSrcweir }
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir /** print Boolean value.
222*cdf0e10cSrcweir */
223*cdf0e10cSrcweir inline void printBool( sal_Bool bOk )
224*cdf0e10cSrcweir {
225*cdf0e10cSrcweir 	t_print( "#printBool# " );
226*cdf0e10cSrcweir 	( sal_True == bOk ) ? t_print( "YES!\n" ): t_print( "NO!\n" );
227*cdf0e10cSrcweir }
228*cdf0e10cSrcweir 
229*cdf0e10cSrcweir /** print struct TimeValue in local time format.
230*cdf0e10cSrcweir */
231*cdf0e10cSrcweir inline void printTime( TimeValue *tv )
232*cdf0e10cSrcweir {
233*cdf0e10cSrcweir 	oslDateTime *pDateTime = ( oslDateTime* )malloc( sizeof( oslDateTime ) ) ;
234*cdf0e10cSrcweir  	CPPUNIT_ASSERT_MESSAGE( "Error in printTime() function,malloc ", pDateTime != NULL );
235*cdf0e10cSrcweir 	TimeValue *pLocalTV = ( TimeValue* )malloc( sizeof( TimeValue ) );
236*cdf0e10cSrcweir  	CPPUNIT_ASSERT_MESSAGE( "Error in printTime() function,malloc ", pLocalTV != NULL );
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir 	CPPUNIT_ASSERT_MESSAGE( "Error in printTime() function,osl_getLocalTimeFromSystemTime ",sal_True == osl_getLocalTimeFromSystemTime( tv, pLocalTV ) );
239*cdf0e10cSrcweir 	CPPUNIT_ASSERT_MESSAGE( "Error in printTime() function,osl_gepDateTimeFromTimeValue ",sal_True == osl_getDateTimeFromTimeValue( pLocalTV, pDateTime ) );
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir 	t_print( "#printTime# " );
242*cdf0e10cSrcweir  	t_print( " Time is: %d/%d/%d ", pDateTime->Month, pDateTime->Day, pDateTime->Year);
243*cdf0e10cSrcweir 	switch ( pDateTime->DayOfWeek )
244*cdf0e10cSrcweir 	{
245*cdf0e10cSrcweir 		case 0: t_print("Sun. "); break;
246*cdf0e10cSrcweir 		case 1: t_print("Mon. "); break;
247*cdf0e10cSrcweir 		case 2: t_print("Tue. "); break;
248*cdf0e10cSrcweir 		case 3: t_print("Thr. "); break;
249*cdf0e10cSrcweir 		case 4: t_print("Wen. "); break;
250*cdf0e10cSrcweir 		case 5: t_print("Fri. "); break;
251*cdf0e10cSrcweir 		case 6: t_print("Sat. "); break;
252*cdf0e10cSrcweir 	}
253*cdf0e10cSrcweir 	t_print( " %d:%d:%d %d nsecs\n", pDateTime->Hours, pDateTime->Minutes, pDateTime->Seconds, pDateTime->NanoSeconds);
254*cdf0e10cSrcweir 
255*cdf0e10cSrcweir 	free( pDateTime );
256*cdf0e10cSrcweir 	free( pLocalTV );
257*cdf0e10cSrcweir }
258*cdf0e10cSrcweir 
259*cdf0e10cSrcweir /** compare two TimeValue, unit is "ms", since Windows time precision is better than UNX.
260*cdf0e10cSrcweir */
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )                 //precision of time in Windows is better than UNX
263*cdf0e10cSrcweir #	define delta 2000                    //time precision, 2000ms
264*cdf0e10cSrcweir #else
265*cdf0e10cSrcweir #	define delta 1800                    //time precision, 1.8s
266*cdf0e10cSrcweir #endif
267*cdf0e10cSrcweir 
268*cdf0e10cSrcweir inline sal_Int64 t_abs64(sal_Int64 _nValue)
269*cdf0e10cSrcweir {
270*cdf0e10cSrcweir     // std::abs() seems to have some ambiguity problems (so-texas)
271*cdf0e10cSrcweir     // return abs(_nValue);
272*cdf0e10cSrcweir     t_print("t_abs64(%ld)\n", _nValue);
273*cdf0e10cSrcweir     // CPPUNIT_ASSERT(_nValue < 2147483647);
274*cdf0e10cSrcweir 
275*cdf0e10cSrcweir     if (_nValue < 0)
276*cdf0e10cSrcweir     {
277*cdf0e10cSrcweir         _nValue = -_nValue;
278*cdf0e10cSrcweir     }
279*cdf0e10cSrcweir     return _nValue;
280*cdf0e10cSrcweir }
281*cdf0e10cSrcweir 
282*cdf0e10cSrcweir inline sal_Bool t_compareTime( TimeValue *m_aEndTime,  TimeValue *m_aStartTime, sal_Int32 nDelta)
283*cdf0e10cSrcweir {
284*cdf0e10cSrcweir     // sal_uInt64 uTimeValue;
285*cdf0e10cSrcweir     // sal_Int64 iTimeValue;
286*cdf0e10cSrcweir     //
287*cdf0e10cSrcweir     // iTimeValue = t_abs64(( tv1->Seconds - tv2->Seconds) * 1000000000 + tv1->Nanosec - tv2->Nanosec);
288*cdf0e10cSrcweir     // uTimeValue = ( iTimeValue / 1000000 );
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir     sal_Int32 nDeltaSeconds = m_aEndTime->Seconds - m_aStartTime->Seconds;
291*cdf0e10cSrcweir     sal_Int32 nDeltaNanoSec = sal_Int32(m_aEndTime->Nanosec) - sal_Int32(m_aStartTime->Nanosec);
292*cdf0e10cSrcweir     if (nDeltaNanoSec < 0)
293*cdf0e10cSrcweir     {
294*cdf0e10cSrcweir         nDeltaNanoSec = 1000000000 + nDeltaNanoSec;
295*cdf0e10cSrcweir         nDeltaSeconds--;
296*cdf0e10cSrcweir     }
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir     sal_Int32 nDeltaMilliSec = (nDeltaSeconds * 1000) + (nDeltaNanoSec / 1000000);
299*cdf0e10cSrcweir     return ( nDeltaMilliSec < nDelta );
300*cdf0e10cSrcweir }
301*cdf0e10cSrcweir 
302*cdf0e10cSrcweir /** compare two OUString file name.
303*cdf0e10cSrcweir */
304*cdf0e10cSrcweir inline sal_Bool compareFileName( const ::rtl::OUString & ustr1, const ::rtl::OUString & ustr2 )
305*cdf0e10cSrcweir {
306*cdf0e10cSrcweir 	sal_Bool bOk;
307*cdf0e10cSrcweir //on Windows, the seperatar is '\', so here change to '/', then compare
308*cdf0e10cSrcweir #if defined (WNT )
309*cdf0e10cSrcweir 	::rtl::OUString ustr1new,ustr2new;
310*cdf0e10cSrcweir 	sal_Unicode reverseSlash = (sal_Unicode)'\\';
311*cdf0e10cSrcweir 
312*cdf0e10cSrcweir 	if (ustr1.lastIndexOf(reverseSlash) != -1)
313*cdf0e10cSrcweir 		ustr1new = ustr1.replace(reverseSlash,(sal_Unicode)'/');
314*cdf0e10cSrcweir 	else
315*cdf0e10cSrcweir 		ustr1new = ustr1;
316*cdf0e10cSrcweir 	if (ustr2.lastIndexOf(reverseSlash) != -1)
317*cdf0e10cSrcweir 		ustr2new = ustr2.replace(reverseSlash,(sal_Unicode)'/');
318*cdf0e10cSrcweir 	else
319*cdf0e10cSrcweir 		ustr2new = ustr2;
320*cdf0e10cSrcweir 	bOk = ustr1new.equalsIgnoreAsciiCase( ustr2new )  ;
321*cdf0e10cSrcweir #else
322*cdf0e10cSrcweir 	bOk = ustr1.equalsIgnoreAsciiCase( ustr2 );
323*cdf0e10cSrcweir #endif
324*cdf0e10cSrcweir 	return bOk;
325*cdf0e10cSrcweir }
326*cdf0e10cSrcweir 
327*cdf0e10cSrcweir /** compare a OUString and an ASCII file name.
328*cdf0e10cSrcweir */
329*cdf0e10cSrcweir inline sal_Bool compareFileName( const ::rtl::OUString & ustr, const sal_Char *astr )
330*cdf0e10cSrcweir {
331*cdf0e10cSrcweir     (void)ustr;
332*cdf0e10cSrcweir 	::rtl::OUString ustr1 = rtl::OUString::createFromAscii( astr );
333*cdf0e10cSrcweir 	sal_Bool bOk = ustr1.equalsIgnoreAsciiCase( ustr1 );
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir 	return bOk;
336*cdf0e10cSrcweir }
337*cdf0e10cSrcweir 
338*cdf0e10cSrcweir /** simple version to judge if a file name or directory name is a URL or a system path, just to see if it
339*cdf0e10cSrcweir     is start with "file:///";.
340*cdf0e10cSrcweir */
341*cdf0e10cSrcweir inline sal_Bool isURL( const sal_Char *pathname )
342*cdf0e10cSrcweir {
343*cdf0e10cSrcweir 	return ( 0 == strncmp( pathname, FILE_PREFIX, sizeof( FILE_PREFIX ) - 1 ) );
344*cdf0e10cSrcweir }
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir /** simple version to judge if a file name or directory name is a URL or a system path, just to see if it
347*cdf0e10cSrcweir     is start with "file:///";.
348*cdf0e10cSrcweir */
349*cdf0e10cSrcweir inline sal_Bool isURL( const ::rtl::OUString pathname )
350*cdf0e10cSrcweir {
351*cdf0e10cSrcweir 	return ( ( pathname.indexOf( aPreURL ) == 0 ) ? sal_True : sal_False );
352*cdf0e10cSrcweir }
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir /** concat two part to form a URL or system path, add PATH_SEPERATOR between them if necessary, add "file:///" to begining if necessary.
355*cdf0e10cSrcweir */
356*cdf0e10cSrcweir inline void concatURL( ::rtl::OUString & pathname1, const ::rtl::OUString & pathname2 )
357*cdf0e10cSrcweir {
358*cdf0e10cSrcweir 	//check if pathname1 is full qualified URL;
359*cdf0e10cSrcweir 	if ( !isURL( pathname1 ) )
360*cdf0e10cSrcweir 	{
361*cdf0e10cSrcweir 		::rtl::OUString     aPathName   = pathname1.copy( 0 );
362*cdf0e10cSrcweir 		::osl::FileBase::getFileURLFromSystemPath( pathname1, aPathName ); //convert if not full qualified URL
363*cdf0e10cSrcweir 		pathname1   = aPathName.copy( 0 );
364*cdf0e10cSrcweir 	}
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir 	sal_Int32 index = 0;
367*cdf0e10cSrcweir 	//check if '/' is in the end of pathname1 or at the begin of pathname2;
368*cdf0e10cSrcweir 	if ( ( ( index = pathname1.lastIndexOf( aSlashURL ) ) != ( pathname1.getLength( ) - 1 ) ) &&
369*cdf0e10cSrcweir 		 ( ( index = pathname2.indexOf( aSlashURL ) ) != 0 ) )
370*cdf0e10cSrcweir 		pathname1 += aSlashURL;
371*cdf0e10cSrcweir 	pathname1 += pathname2;
372*cdf0e10cSrcweir }
373*cdf0e10cSrcweir 
374*cdf0e10cSrcweir /** create a temp test file using OUString name of full qualified URL or system path.
375*cdf0e10cSrcweir */
376*cdf0e10cSrcweir inline void createTestFile( const ::rtl::OUString filename )
377*cdf0e10cSrcweir {
378*cdf0e10cSrcweir 	::rtl::OUString     aPathURL   = filename.copy( 0 );
379*cdf0e10cSrcweir 	::osl::FileBase::RC	nError;
380*cdf0e10cSrcweir 
381*cdf0e10cSrcweir 	if ( !isURL( filename ) )
382*cdf0e10cSrcweir 		::osl::FileBase::getFileURLFromSystemPath( filename, aPathURL ); //convert if not full qualified URL
383*cdf0e10cSrcweir 
384*cdf0e10cSrcweir 	//::std::auto_ptr<File> pFile( new File( aPathURL ) );
385*cdf0e10cSrcweir 	File aFile(aPathURL);
386*cdf0e10cSrcweir 	//nError = pFile->open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create );
387*cdf0e10cSrcweir 	nError = aFile.open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create );
388*cdf0e10cSrcweir 	//CPPUNIT_ASSERT_MESSAGE( "In createTestFile Function: creation ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
389*cdf0e10cSrcweir 	if ( ( ::osl::FileBase::E_None != nError ) && ( nError != ::osl::FileBase::E_EXIST ))
390*cdf0e10cSrcweir 	{
391*cdf0e10cSrcweir 		t_print("createTestFile failed!\n");
392*cdf0e10cSrcweir 	}
393*cdf0e10cSrcweir 	aFile.close();
394*cdf0e10cSrcweir 
395*cdf0e10cSrcweir }
396*cdf0e10cSrcweir 
397*cdf0e10cSrcweir /** create a temp test file using OUString name of full qualified URL or system path in a base directory.
398*cdf0e10cSrcweir */
399*cdf0e10cSrcweir inline void createTestFile( const ::rtl::OUString basename, const ::rtl::OUString filename )
400*cdf0e10cSrcweir {
401*cdf0e10cSrcweir 	::rtl::OUString aBaseURL = basename.copy( 0 );
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 	concatURL( aBaseURL, filename );
404*cdf0e10cSrcweir 	createTestFile( aBaseURL );
405*cdf0e10cSrcweir }
406*cdf0e10cSrcweir 
407*cdf0e10cSrcweir /** detete a temp test file using OUString name.
408*cdf0e10cSrcweir */
409*cdf0e10cSrcweir inline void deleteTestFile( const ::rtl::OUString filename )
410*cdf0e10cSrcweir {
411*cdf0e10cSrcweir     // LLA: t_print("deleteTestFile\n");
412*cdf0e10cSrcweir 	::rtl::OUString     aPathURL   = filename.copy( 0 );
413*cdf0e10cSrcweir 	::osl::FileBase::RC	nError;
414*cdf0e10cSrcweir 
415*cdf0e10cSrcweir 	if ( !isURL( filename ) )
416*cdf0e10cSrcweir 		::osl::FileBase::getFileURLFromSystemPath( filename, aPathURL ); //convert if not full qualified URL
417*cdf0e10cSrcweir 
418*cdf0e10cSrcweir 	nError = ::osl::File::setAttributes( aPathURL, Attribute_GrpWrite| Attribute_OwnWrite| Attribute_OthWrite ); // if readonly, make writtenable.
419*cdf0e10cSrcweir 	CPPUNIT_ASSERT_MESSAGE( "In deleteTestFile Function: set writtenable ", ( ::osl::FileBase::E_None == nError ) || ( ::osl::FileBase::E_NOENT == nError ) );
420*cdf0e10cSrcweir 
421*cdf0e10cSrcweir 	nError = ::osl::File::remove( aPathURL );
422*cdf0e10cSrcweir 	CPPUNIT_ASSERT_MESSAGE( "In deleteTestFile Function: remove ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) );
423*cdf0e10cSrcweir }
424*cdf0e10cSrcweir 
425*cdf0e10cSrcweir /** delete a temp test file using OUString name of full qualified URL or system path in a base directory.
426*cdf0e10cSrcweir */
427*cdf0e10cSrcweir inline void deleteTestFile( const ::rtl::OUString basename, const ::rtl::OUString filename )
428*cdf0e10cSrcweir {
429*cdf0e10cSrcweir 	::rtl::OUString     aBaseURL   = basename.copy( 0 );
430*cdf0e10cSrcweir 
431*cdf0e10cSrcweir 	concatURL( aBaseURL, filename );
432*cdf0e10cSrcweir 	deleteTestFile( aBaseURL );
433*cdf0e10cSrcweir }
434*cdf0e10cSrcweir 
435*cdf0e10cSrcweir /** create a temp test directory using OUString name of full qualified URL or system path.
436*cdf0e10cSrcweir */
437*cdf0e10cSrcweir inline void createTestDirectory( const ::rtl::OUString dirname )
438*cdf0e10cSrcweir {
439*cdf0e10cSrcweir 	::rtl::OUString     aPathURL   = dirname.copy( 0 );
440*cdf0e10cSrcweir 	::osl::FileBase::RC	nError;
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir 	if ( !isURL( dirname ) )
443*cdf0e10cSrcweir 		::osl::FileBase::getFileURLFromSystemPath( dirname, aPathURL ); //convert if not full qualified URL
444*cdf0e10cSrcweir 	nError = ::osl::Directory::create( aPathURL );
445*cdf0e10cSrcweir 	//CPPUNIT_ASSERT_MESSAGE( "In createTestDirectory Function: creation: ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
446*cdf0e10cSrcweir 	if ( ( ::osl::FileBase::E_None != nError ) && ( nError != ::osl::FileBase::E_EXIST ))
447*cdf0e10cSrcweir 	  t_print("createTestDirectory failed!\n");
448*cdf0e10cSrcweir }
449*cdf0e10cSrcweir 
450*cdf0e10cSrcweir /** create a temp test directory using OUString name of full qualified URL or system path in a base directory.
451*cdf0e10cSrcweir */
452*cdf0e10cSrcweir inline void createTestDirectory( const ::rtl::OUString basename, const ::rtl::OUString dirname )
453*cdf0e10cSrcweir {
454*cdf0e10cSrcweir 	::rtl::OUString     aBaseURL   = basename.copy( 0 );
455*cdf0e10cSrcweir 	::rtl::OString      aString;
456*cdf0e10cSrcweir 
457*cdf0e10cSrcweir 	concatURL( aBaseURL, dirname );
458*cdf0e10cSrcweir 	createTestDirectory( aBaseURL );
459*cdf0e10cSrcweir }
460*cdf0e10cSrcweir 
461*cdf0e10cSrcweir /** delete a temp test directory using OUString name of full qualified URL or system path.
462*cdf0e10cSrcweir */
463*cdf0e10cSrcweir inline void deleteTestDirectory( const ::rtl::OUString dirname )
464*cdf0e10cSrcweir {
465*cdf0e10cSrcweir     // LLA: t_print("deleteTestDirectory\n");
466*cdf0e10cSrcweir 	::rtl::OUString     aPathURL   = dirname.copy( 0 );
467*cdf0e10cSrcweir 	::osl::FileBase::RC	nError;
468*cdf0e10cSrcweir 	// LLA: printFileName(aPathURL);
469*cdf0e10cSrcweir 	if ( !isURL( dirname ) )
470*cdf0e10cSrcweir 		::osl::FileBase::getFileURLFromSystemPath( dirname, aPathURL ); //convert if not full qualified URL
471*cdf0e10cSrcweir 
472*cdf0e10cSrcweir 	::osl::Directory testDir( aPathURL );
473*cdf0e10cSrcweir 	if ( testDir.isOpen( ) == sal_True )
474*cdf0e10cSrcweir 	{
475*cdf0e10cSrcweir         // LLA: t_print("#close Dir\n");
476*cdf0e10cSrcweir         testDir.close( );  //close if still open.
477*cdf0e10cSrcweir     	}
478*cdf0e10cSrcweir 
479*cdf0e10cSrcweir 	nError = ::osl::Directory::remove( aPathURL );
480*cdf0e10cSrcweir     // LLA: printError(nError);
481*cdf0e10cSrcweir     // LLA: if (( ::osl::FileBase::E_None == nError ))
482*cdf0e10cSrcweir     // LLA: {
483*cdf0e10cSrcweir     // LLA:     t_print("nError == E_None\n");
484*cdf0e10cSrcweir     // LLA: }
485*cdf0e10cSrcweir     // LLA: else if ( ( nError == ::osl::FileBase::E_NOENT ))
486*cdf0e10cSrcweir     // LLA: {
487*cdf0e10cSrcweir     // LLA:     t_print("nError == E_NOENT\n");
488*cdf0e10cSrcweir     // LLA: }
489*cdf0e10cSrcweir     // LLA: else
490*cdf0e10cSrcweir     // LLA: {
491*cdf0e10cSrcweir     // LLA:     // t_print("nError == %d\n", nError);
492*cdf0e10cSrcweir     // LLA: }
493*cdf0e10cSrcweir         rtl::OUString strError = rtl::OUString::createFromAscii( "In deleteTestDirectory function: remove Directory ");
494*cdf0e10cSrcweir         strError += aPathURL;
495*cdf0e10cSrcweir 	CPPUNIT_ASSERT_MESSAGE( strError, ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) );
496*cdf0e10cSrcweir     // LLA: if (! ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ))
497*cdf0e10cSrcweir     // LLA: {
498*cdf0e10cSrcweir     // LLA:     t_print("In deleteTestDirectory function: remove\n");
499*cdf0e10cSrcweir     // LLA: }
500*cdf0e10cSrcweir }
501*cdf0e10cSrcweir 
502*cdf0e10cSrcweir /** delete a temp test directory using OUString name of full qualified URL or system path in a base directory.
503*cdf0e10cSrcweir */
504*cdf0e10cSrcweir inline void deleteTestDirectory( const ::rtl::OUString basename, const ::rtl::OUString dirname )
505*cdf0e10cSrcweir {
506*cdf0e10cSrcweir 	::rtl::OUString     aBaseURL   = basename.copy( 0 );
507*cdf0e10cSrcweir 
508*cdf0e10cSrcweir 	concatURL( aBaseURL, dirname );
509*cdf0e10cSrcweir 	deleteTestDirectory( aBaseURL );
510*cdf0e10cSrcweir }
511*cdf0e10cSrcweir 
512*cdf0e10cSrcweir 
513*cdf0e10cSrcweir /** Check for the file and directory access right.
514*cdf0e10cSrcweir */
515*cdf0e10cSrcweir typedef enum {
516*cdf0e10cSrcweir 	osl_Check_Mode_Exist,
517*cdf0e10cSrcweir 	osl_Check_Mode_OpenAccess,
518*cdf0e10cSrcweir 	osl_Check_Mode_ReadAccess,
519*cdf0e10cSrcweir 	osl_Check_Mode_WriteAccess
520*cdf0e10cSrcweir } oslCheckMode;
521*cdf0e10cSrcweir 
522*cdf0e10cSrcweir // not used here
523*cdf0e10cSrcweir inline sal_Bool checkFile( const ::rtl::OUString & str, oslCheckMode nCheckMode )
524*cdf0e10cSrcweir {
525*cdf0e10cSrcweir 	::osl::FileBase::RC   nError1, nError2;
526*cdf0e10cSrcweir 	::osl::File       testFile( str );
527*cdf0e10cSrcweir 	sal_Bool		bCheckResult;
528*cdf0e10cSrcweir 
529*cdf0e10cSrcweir 	bCheckResult = sal_False;
530*cdf0e10cSrcweir 	nError1 = testFile.open ( OpenFlag_Read );
531*cdf0e10cSrcweir 	if ( ( ::osl::FileBase::E_NOENT != nError1 ) && ( ::osl::FileBase::E_ACCES != nError1 ) ){
532*cdf0e10cSrcweir 
533*cdf0e10cSrcweir 		switch ( nCheckMode ) {
534*cdf0e10cSrcweir 			case osl_Check_Mode_Exist:
535*cdf0e10cSrcweir 				/// check if the file is exist.
536*cdf0e10cSrcweir 				if ( ::osl::FileBase::E_None == nError1 )
537*cdf0e10cSrcweir 					bCheckResult = sal_True;
538*cdf0e10cSrcweir 				break;
539*cdf0e10cSrcweir 			case osl_Check_Mode_OpenAccess:
540*cdf0e10cSrcweir 				/// check if the file is openable.
541*cdf0e10cSrcweir 				if ( ::osl::FileBase::E_None == nError1 )
542*cdf0e10cSrcweir 					bCheckResult = sal_True;
543*cdf0e10cSrcweir 				break;
544*cdf0e10cSrcweir 			case osl_Check_Mode_WriteAccess:
545*cdf0e10cSrcweir 				/// check the file name and whether it can be write.
546*cdf0e10cSrcweir 				/// write chars into the file.
547*cdf0e10cSrcweir 				//testFile.close( );
548*cdf0e10cSrcweir 				//testFile.open( OpenFlag_Write );
549*cdf0e10cSrcweir 				sal_uInt64 nCount_write;
550*cdf0e10cSrcweir 				nError2 = testFile.write( pBuffer_Char, 10, nCount_write );
551*cdf0e10cSrcweir 				if ( ::osl::FileBase::E_None == nError2 )
552*cdf0e10cSrcweir 					bCheckResult = sal_True;
553*cdf0e10cSrcweir 				break;
554*cdf0e10cSrcweir 
555*cdf0e10cSrcweir 			default:
556*cdf0e10cSrcweir 				bCheckResult = sal_False;
557*cdf0e10cSrcweir 		}/// swith
558*cdf0e10cSrcweir 
559*cdf0e10cSrcweir 		nError2 = testFile.close( );
560*cdf0e10cSrcweir 		CPPUNIT_ASSERT_MESSAGE( " in CheckFile() function, close file ", nError2 == FileBase::E_None );
561*cdf0e10cSrcweir 
562*cdf0e10cSrcweir 	}
563*cdf0e10cSrcweir 
564*cdf0e10cSrcweir 	return bCheckResult;
565*cdf0e10cSrcweir }
566*cdf0e10cSrcweir 
567*cdf0e10cSrcweir //check if the file exist
568*cdf0e10cSrcweir inline sal_Bool ifFileExist( const ::rtl::OUString & str )
569*cdf0e10cSrcweir {
570*cdf0e10cSrcweir 	sal_Bool		bCheckResult = sal_False;
571*cdf0e10cSrcweir 
572*cdf0e10cSrcweir /*#ifdef WNT
573*cdf0e10cSrcweir 	::rtl::OUString 	aUStr  = str.copy( 0 );
574*cdf0e10cSrcweir 	if ( isURL( str ) )
575*cdf0e10cSrcweir 		::osl::FileBase::getSystemPathFromFileURL( str, aUStr );
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir 	::rtl::OString aString = ::rtl::OUStringToOString( aUStr, RTL_TEXTENCODING_ASCII_US );
578*cdf0e10cSrcweir 	const char *path = aString.getStr( );
579*cdf0e10cSrcweir 	if (( _access( path, 0 ) ) != -1 )
580*cdf0e10cSrcweir  		bCheckResult = sal_True;
581*cdf0e10cSrcweir #else*/
582*cdf0e10cSrcweir 	::rtl::OString aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
583*cdf0e10cSrcweir 	// const char *path = aString.getStr( );
584*cdf0e10cSrcweir 	::osl::File	testFile( str );
585*cdf0e10cSrcweir 	bCheckResult = ( osl::FileBase::E_None == testFile.open( OpenFlag_Read ) );
586*cdf0e10cSrcweir 	//if (bCheckResult)
587*cdf0e10cSrcweir 	//t_print("%s exist!\n", path);
588*cdf0e10cSrcweir 	//else
589*cdf0e10cSrcweir 	//t_print("%s not exist!\n", path);
590*cdf0e10cSrcweir //#endif
591*cdf0e10cSrcweir 	return bCheckResult;
592*cdf0e10cSrcweir 
593*cdf0e10cSrcweir }
594*cdf0e10cSrcweir 
595*cdf0e10cSrcweir //check if the file can be writen
596*cdf0e10cSrcweir inline sal_Bool ifFileCanWrite( const ::rtl::OUString & str )
597*cdf0e10cSrcweir {
598*cdf0e10cSrcweir 	sal_Bool		bCheckResult = sal_False;
599*cdf0e10cSrcweir 	//on Windows, the file has no write right, but can be written
600*cdf0e10cSrcweir #ifdef WNT
601*cdf0e10cSrcweir 	::rtl::OUString 	aUStr  = str.copy( 0 );
602*cdf0e10cSrcweir 	if ( isURL( str ) )
603*cdf0e10cSrcweir 		::osl::FileBase::getSystemPathFromFileURL( str, aUStr );
604*cdf0e10cSrcweir 
605*cdf0e10cSrcweir 	::rtl::OString aString = ::rtl::OUStringToOString( aUStr, RTL_TEXTENCODING_ASCII_US );
606*cdf0e10cSrcweir 	const char *path = aString.getStr( );
607*cdf0e10cSrcweir 	if (( _access( path, 2 ) ) != -1 )
608*cdf0e10cSrcweir  		bCheckResult = sal_True;
609*cdf0e10cSrcweir  	//on UNX, just test if open success with OpenFlag_Write
610*cdf0e10cSrcweir #else
611*cdf0e10cSrcweir 	::osl::File	testFile( str );
612*cdf0e10cSrcweir 	bCheckResult = (osl::FileBase::E_None == testFile.open( OpenFlag_Write ));
613*cdf0e10cSrcweir #endif
614*cdf0e10cSrcweir 	return bCheckResult;
615*cdf0e10cSrcweir }
616*cdf0e10cSrcweir 
617*cdf0e10cSrcweir inline sal_Bool checkDirectory( const ::rtl::OUString & str, oslCheckMode nCheckMode )
618*cdf0e10cSrcweir {
619*cdf0e10cSrcweir 	rtl::OUString 	aUString;
620*cdf0e10cSrcweir 	DirectoryItem	rItem;
621*cdf0e10cSrcweir 	FileBase::RC	rc;
622*cdf0e10cSrcweir 	sal_Bool		bCheckResult= sal_False;
623*cdf0e10cSrcweir 
624*cdf0e10cSrcweir 	//::std::auto_ptr<Directory> pDir( new Directory( str ) );
625*cdf0e10cSrcweir 	Directory aDir( str );
626*cdf0e10cSrcweir 	rc = aDir.open( );
627*cdf0e10cSrcweir 
628*cdf0e10cSrcweir 	if ( ( ::osl::FileBase::E_NOENT != rc ) && ( ::osl::FileBase::E_ACCES != rc ) ){
629*cdf0e10cSrcweir 
630*cdf0e10cSrcweir 		switch ( nCheckMode ) {
631*cdf0e10cSrcweir 			case osl_Check_Mode_Exist:
632*cdf0e10cSrcweir 				if ( rc == ::osl::FileBase::E_None )
633*cdf0e10cSrcweir 					bCheckResult = sal_True;
634*cdf0e10cSrcweir 				break;
635*cdf0e10cSrcweir 			case osl_Check_Mode_OpenAccess:
636*cdf0e10cSrcweir 				if ( rc == ::osl::FileBase::E_None )
637*cdf0e10cSrcweir 					bCheckResult = sal_True;
638*cdf0e10cSrcweir 				break;
639*cdf0e10cSrcweir 			case osl_Check_Mode_ReadAccess:
640*cdf0e10cSrcweir 				//rc = pDir->getNextItem( rItem, 0 );
641*cdf0e10cSrcweir 				rc = aDir.getNextItem( rItem, 0 );
642*cdf0e10cSrcweir 				if ( ( rc == ::osl::FileBase::E_None ) || ( rc == ::osl::FileBase::E_NOENT ) )
643*cdf0e10cSrcweir 					bCheckResult = sal_True;
644*cdf0e10cSrcweir 				else
645*cdf0e10cSrcweir 					bCheckResult = sal_False;
646*cdf0e10cSrcweir 				break;
647*cdf0e10cSrcweir 			case osl_Check_Mode_WriteAccess:
648*cdf0e10cSrcweir 				( ( aUString += str ) += aSlashURL ) += aTmpName2;
649*cdf0e10cSrcweir 				//if ( ( rc = pDir->create( aUString ) ) == ::osl::FileBase::E_None )
650*cdf0e10cSrcweir 				if ( ( rc = Directory::create( aUString ) ) == ::osl::FileBase::E_None )
651*cdf0e10cSrcweir 				{
652*cdf0e10cSrcweir 					bCheckResult = sal_True;
653*cdf0e10cSrcweir 					//rc = pDir->remove( aUString );
654*cdf0e10cSrcweir 					rc = Directory::remove( aUString );
655*cdf0e10cSrcweir 					CPPUNIT_ASSERT( rc == ::osl::FileBase::E_None );
656*cdf0e10cSrcweir 				}
657*cdf0e10cSrcweir 				else
658*cdf0e10cSrcweir 					bCheckResult = sal_False;
659*cdf0e10cSrcweir 				break;
660*cdf0e10cSrcweir 
661*cdf0e10cSrcweir 			default:
662*cdf0e10cSrcweir 				bCheckResult = sal_False;
663*cdf0e10cSrcweir 		}// switch
664*cdf0e10cSrcweir 
665*cdf0e10cSrcweir 		rc = aDir.close( );
666*cdf0e10cSrcweir 		CPPUNIT_ASSERT( rc == FileBase::E_None );
667*cdf0e10cSrcweir 
668*cdf0e10cSrcweir 	}//if
669*cdf0e10cSrcweir 
670*cdf0e10cSrcweir 	return bCheckResult;
671*cdf0e10cSrcweir }
672*cdf0e10cSrcweir 
673*cdf0e10cSrcweir /** construct error message
674*cdf0e10cSrcweir */
675*cdf0e10cSrcweir inline ::rtl::OUString outputError( const ::rtl::OUString & returnVal, const ::rtl::OUString & rightVal, const sal_Char * msg = "")
676*cdf0e10cSrcweir {
677*cdf0e10cSrcweir 	::rtl::OUString aUString;
678*cdf0e10cSrcweir 	if ( returnVal.equals( rightVal ) )
679*cdf0e10cSrcweir 		return aUString;
680*cdf0e10cSrcweir 	aUString += ::rtl::OUString::createFromAscii(msg);
681*cdf0e10cSrcweir 	aUString += ::rtl::OUString::createFromAscii(": the returned value is '");
682*cdf0e10cSrcweir 	aUString += returnVal;
683*cdf0e10cSrcweir 	aUString += ::rtl::OUString::createFromAscii("', but the value should be '");
684*cdf0e10cSrcweir 	aUString += rightVal;
685*cdf0e10cSrcweir 	aUString += ::rtl::OUString::createFromAscii("'.");
686*cdf0e10cSrcweir 	return aUString;
687*cdf0e10cSrcweir }
688*cdf0e10cSrcweir 
689*cdf0e10cSrcweir /** Change file mode, two version in UNIX and Windows;.
690*cdf0e10cSrcweir */
691*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )	       //chmod() method is differ in Windows
692*cdf0e10cSrcweir inline void changeFileMode( ::rtl::OUString & filepath, sal_Int32 mode )
693*cdf0e10cSrcweir {
694*cdf0e10cSrcweir 	rtl::OString 	aString;
695*cdf0e10cSrcweir 	rtl::OUString 	aUStr  = filepath.copy( 0 );
696*cdf0e10cSrcweir 
697*cdf0e10cSrcweir 	if ( isURL( filepath ) )
698*cdf0e10cSrcweir 		::osl::FileBase::getSystemPathFromFileURL( filepath, aUStr );
699*cdf0e10cSrcweir 	aString = ::rtl::OUStringToOString( aUStr, RTL_TEXTENCODING_ASCII_US );
700*cdf0e10cSrcweir 	chmod( aString.getStr( ), mode );
701*cdf0e10cSrcweir }
702*cdf0e10cSrcweir #else                                          //Windows version
703*cdf0e10cSrcweir inline void changeFileMode( ::rtl::OUString & filepath, sal_Int32 mode )
704*cdf0e10cSrcweir {
705*cdf0e10cSrcweir     (void)filepath;
706*cdf0e10cSrcweir     (void)mode;
707*cdf0e10cSrcweir 	t_print("this method is not implemented yet");
708*cdf0e10cSrcweir }
709*cdf0e10cSrcweir #endif
710*cdf0e10cSrcweir 
711*cdf0e10cSrcweir inline ::rtl::OUString getCurrentPID( void );
712*cdf0e10cSrcweir 
713*cdf0e10cSrcweir 
714*cdf0e10cSrcweir 
715*cdf0e10cSrcweir //------------------------------------------------------------------------
716*cdf0e10cSrcweir // Beginning of the test cases for FileBase class
717*cdf0e10cSrcweir //------------------------------------------------------------------------
718*cdf0e10cSrcweir namespace osl_FileBase
719*cdf0e10cSrcweir {
720*cdf0e10cSrcweir 
721*cdf0e10cSrcweir #if 0  //~ this function has been deprecated
722*cdf0e10cSrcweir 	//---------------------------------------------------------------------
723*cdf0e10cSrcweir 	// testing the method
724*cdf0e10cSrcweir 	// static inline RC getCanonicalName( const ::rtl::OUString& ustrRequestedURL, ::rtl::OUString& ustrValidURL )
725*cdf0e10cSrcweir 	//
726*cdf0e10cSrcweir 	// The illegal characters are ;+=[]',\"*\\<>/?:|.
727*cdf0e10cSrcweir 	// because getCanonicalName method is not implemented yet and will be deprecated in the future, this test is not necessary.
728*cdf0e10cSrcweir 	//---------------------------------------------------------------------
729*cdf0e10cSrcweir 
730*cdf0e10cSrcweir 	class getCanonicalName:public CppUnit::TestFixture
731*cdf0e10cSrcweir 	{
732*cdf0e10cSrcweir 
733*cdf0e10cSrcweir 	    public:
734*cdf0e10cSrcweir 		::osl::FileBase::RC	nError;
735*cdf0e10cSrcweir 
736*cdf0e10cSrcweir 		void getCanonicalName_001( )
737*cdf0e10cSrcweir 		{
738*cdf0e10cSrcweir 			::rtl::OUString aUStr_ValidURL;
739*cdf0e10cSrcweir 			nError = ::osl::FileBase::getCanonicalName( aCanURL1, aUStr_ValidURL );
740*cdf0e10cSrcweir 
741*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("test for getCanonicalName function: check valid and unused file name",
742*cdf0e10cSrcweir 				 					( osl::FileBase::E_None == nError ) && aUStr_ValidURL.equalsIgnoreAsciiCase( aCanURL1 ) );
743*cdf0e10cSrcweir 		}
744*cdf0e10cSrcweir 
745*cdf0e10cSrcweir 		void getCanonicalName_002( )
746*cdf0e10cSrcweir 		{
747*cdf0e10cSrcweir 			::rtl::OUString		aUStr_ValidURL;
748*cdf0e10cSrcweir 
749*cdf0e10cSrcweir 			createTestFile( aCanURL1 );
750*cdf0e10cSrcweir 			nError = ::osl::FileBase::getCanonicalName( aCanURL1, aUStr_ValidURL );
751*cdf0e10cSrcweir 			deleteTestFile( aCanURL1 );
752*cdf0e10cSrcweir 
753*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( " test for getCanonicalName function: an existed file name, should different from the request, it did not passed(W32)(UNX)",
754*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError ) && aUStr_ValidURL.equalsIgnoreAsciiCase( aCanURL1 ) );
755*cdf0e10cSrcweir 		}
756*cdf0e10cSrcweir 
757*cdf0e10cSrcweir 		void getCanonicalName_003( )
758*cdf0e10cSrcweir 		{
759*cdf0e10cSrcweir 			::rtl::OUString aUStr_ValidURL;
760*cdf0e10cSrcweir 			nError = ::osl::FileBase::getCanonicalName ( aCanURL2,  aUStr_ValidURL );
761*cdf0e10cSrcweir 
762*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( " test for getCanonicalName function: invalid file name, should different from the request,  it did not passed(W32)(UNX)",
763*cdf0e10cSrcweir 				( osl::FileBase::E_None == nError ) && aUStr_ValidURL.equalsIgnoreAsciiCase( aCanURL2 ) );
764*cdf0e10cSrcweir 		}
765*cdf0e10cSrcweir 
766*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getCanonicalName );
767*cdf0e10cSrcweir 		CPPUNIT_TEST( getCanonicalName_001 );
768*cdf0e10cSrcweir 		CPPUNIT_TEST( getCanonicalName_002 );
769*cdf0e10cSrcweir 		CPPUNIT_TEST( getCanonicalName_003 );
770*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
771*cdf0e10cSrcweir 	};// class getCanonicalName
772*cdf0e10cSrcweir #endif
773*cdf0e10cSrcweir 
774*cdf0e10cSrcweir 	//---------------------------------------------------------------------
775*cdf0e10cSrcweir 	// testing the method
776*cdf0e10cSrcweir 	// static inline RC getAbsoluteFileURL( const ::rtl::OUString& ustrBaseDirectoryURL,
777*cdf0e10cSrcweir 	//										const ::rtl::OUString& ustrRelativeFileURL,
778*cdf0e10cSrcweir 	//											  ::rtl::OUString& ustrAbsoluteFileURL )
779*cdf0e10cSrcweir 	//---------------------------------------------------------------------
780*cdf0e10cSrcweir 
781*cdf0e10cSrcweir 	class getAbsoluteFileURL:public CppUnit::TestFixture
782*cdf0e10cSrcweir 	{
783*cdf0e10cSrcweir 		//::osl::FileBase		aFileBase;
784*cdf0e10cSrcweir             ::rtl::OUString		aResultURL1, aResultURL2, aResultURL3, aResultURL4, aResultURL5, aResultURL6;
785*cdf0e10cSrcweir             // ::osl::FileBase::RC	nError;
786*cdf0e10cSrcweir 		sal_Bool		bOk;
787*cdf0e10cSrcweir 
788*cdf0e10cSrcweir 	    public:
789*cdf0e10cSrcweir 
790*cdf0e10cSrcweir 	    	void check_getAbsoluteFileURL( rtl::OUString const& _suBaseURL,  rtl::OString const& _sRelativeURL, ::osl::FileBase::RC _nAssumeError, rtl::OUString const& _suAssumeResultStr );
791*cdf0e10cSrcweir 
792*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_1();
793*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_2();
794*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_3();
795*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_4();
796*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_5();
797*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_6();
798*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_7();
799*cdf0e10cSrcweir 	  void getAbsoluteFileURL_001_8();
800*cdf0e10cSrcweir 	  void getAbsoluteFileURL_002();
801*cdf0e10cSrcweir 	  void getAbsoluteFileURL_003();
802*cdf0e10cSrcweir 	  void getAbsoluteFileURL_004();
803*cdf0e10cSrcweir 
804*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getAbsoluteFileURL );
805*cdf0e10cSrcweir 		CPPUNIT_TEST( getAbsoluteFileURL_001_1 );
806*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_2 );
807*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_3 );
808*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_4 );
809*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_5 );
810*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_6 );
811*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_7 );
812*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_001_8 );
813*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_002 );
814*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_003 );
815*cdf0e10cSrcweir 	  CPPUNIT_TEST( getAbsoluteFileURL_004 );
816*cdf0e10cSrcweir 	  CPPUNIT_TEST_SUITE_END( );
817*cdf0e10cSrcweir 
818*cdf0e10cSrcweir 		}; //class getAbsoluteFileURL
819*cdf0e10cSrcweir 
820*cdf0e10cSrcweir /* use coding format as same as getSystemPathFromFileURL
821*cdf0e10cSrcweir 		// initialization
822*cdf0e10cSrcweir 		void setUp( )
823*cdf0e10cSrcweir 		{
824*cdf0e10cSrcweir 			sal_Char pResultURL1[]  = "/relative/file1";
825*cdf0e10cSrcweir 			sal_Char pResultURL2[]  = "/relative/file2";
826*cdf0e10cSrcweir 			sal_Char pResultURL3[]  = "/file3";
827*cdf0e10cSrcweir 			sal_Char pResultURL4[]  = "/file4";
828*cdf0e10cSrcweir 			sal_Char pResultURL5[]  = "/canonical.name";
829*cdf0e10cSrcweir 			sal_Char pResultURL6[]  = "/relative/";
830*cdf0e10cSrcweir 			aResultURL1 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL1 ) );
831*cdf0e10cSrcweir 			aResultURL2 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL2 ) );
832*cdf0e10cSrcweir 			aResultURL3 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL3 ) );
833*cdf0e10cSrcweir 			aResultURL4 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL4 ) );
834*cdf0e10cSrcweir 			aResultURL5 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL5 ) );
835*cdf0e10cSrcweir 			aResultURL6 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL6 ) );
836*cdf0e10cSrcweir 		}
837*cdf0e10cSrcweir 
838*cdf0e10cSrcweir 		void tearDown( )
839*cdf0e10cSrcweir 		{
840*cdf0e10cSrcweir 		}
841*cdf0e10cSrcweir 
842*cdf0e10cSrcweir 		// test code
843*cdf0e10cSrcweir 		void getAbsoluteFileURL_001( )
844*cdf0e10cSrcweir 		{
845*cdf0e10cSrcweir 			::rtl::OUString aUStr_AbsURL;
846*cdf0e10cSrcweir 
847*cdf0e10cSrcweir 			::osl::FileBase::RC nError11 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL,  aRelURL1, aUStr_AbsURL );
848*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL(' ");
849*cdf0e10cSrcweir 			suError += aUserDirectoryURL;
850*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
851*cdf0e10cSrcweir 			suError += aRelURL1;
852*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
853*cdf0e10cSrcweir 			suError += aUStr_AbsURL;
854*cdf0e10cSrcweir 			suError += outputError( aUStr_AbsURL, aResultURL1, "' ),");
855*cdf0e10cSrcweir 
856*cdf0e10cSrcweir 			sal_Bool nError12 = aUStr_AbsURL.equals( aResultURL1 );
857*cdf0e10cSrcweir 			::osl::FileBase::RC nError21 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL,  aRelURL2, aUStr_AbsURL );
858*cdf0e10cSrcweir 			sal_Bool nError22 = aUStr_AbsURL.equals( aResultURL2 );
859*cdf0e10cSrcweir 			::osl::FileBase::RC nError31 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL,  aRelURL3, aUStr_AbsURL );
860*cdf0e10cSrcweir 			sal_Bool nError32 = aUStr_AbsURL.equals( aResultURL3 );
861*cdf0e10cSrcweir 			::osl::FileBase::RC nError41 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL,  aRelURL4, aUStr_AbsURL );
862*cdf0e10cSrcweir 			sal_Bool nError42 = aUStr_AbsURL.equals( aResultURL4 );
863*cdf0e10cSrcweir 			::osl::FileBase::RC nError61 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL,  aRelURL6, aUStr_AbsURL );
864*cdf0e10cSrcweir 			sal_Bool nError62 = aUStr_AbsURL.equals( aResultURL6 );
865*cdf0e10cSrcweir 			printFileName( aUStr_AbsURL );
866*cdf0e10cSrcweir 			printFileName( aResultURL6 );
867*cdf0e10cSrcweir 
868*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: valid file name with valid directory",
869*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError11 ) && ( sal_True == nError12 ) &&
870*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError21 ) && ( sal_True == nError22 ) &&
871*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError31 ) && ( sal_True == nError32 ) &&
872*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError41 ) && ( sal_True == nError42 ) &&
873*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError61 ) && ( sal_True == nError62 ) );
874*cdf0e10cSrcweir 		}
875*cdf0e10cSrcweir 
876*cdf0e10cSrcweir 
877*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )	//Link is not defined in Windows
878*cdf0e10cSrcweir 		void getAbsoluteFileURL_002( )
879*cdf0e10cSrcweir 		{
880*cdf0e10cSrcweir 			::rtl::OUString aUStr_AbsURL, aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys );
881*cdf0e10cSrcweir 			( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file");
882*cdf0e10cSrcweir 			( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/canonical.name");
883*cdf0e10cSrcweir 
884*cdf0e10cSrcweir                 rtl::OString strLinkFileName, strSrcFileName;
885*cdf0e10cSrcweir                 strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US );
886*cdf0e10cSrcweir                 strSrcFileName =  OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US );
887*cdf0e10cSrcweir 
888*cdf0e10cSrcweir 			createTestFile( aCanURL1 );
889*cdf0e10cSrcweir                 sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() );
890*cdf0e10cSrcweir 			CPPUNIT_ASSERT( fd == 0 );
891*cdf0e10cSrcweir 
892*cdf0e10cSrcweir 			nError = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aLnkURL1, aUStr_AbsURL );
893*cdf0e10cSrcweir 			bOk = aUStr_AbsURL.equals( aResultURL5 );
894*cdf0e10cSrcweir 
895*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL(' ");
896*cdf0e10cSrcweir 			suError += aUserDirectoryURL;
897*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
898*cdf0e10cSrcweir 			suError += aLnkURL1;
899*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
900*cdf0e10cSrcweir 			suError += aUStr_AbsURL;
901*cdf0e10cSrcweir 			suError += outputError( aUStr_AbsURL, aResultURL5, "' ),");
902*cdf0e10cSrcweir 			//printFileName(suError);
903*cdf0e10cSrcweir 
904*cdf0e10cSrcweir 			deleteTestFile( aCanURL1 );
905*cdf0e10cSrcweir                 fd = remove( strLinkFileName.getStr() );
906*cdf0e10cSrcweir 			CPPUNIT_ASSERT( fd == 0 );
907*cdf0e10cSrcweir 
908*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: URL contain link( Solaris version )",
909*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
910*cdf0e10cSrcweir 		}
911*cdf0e10cSrcweir #else		//Windows version
912*cdf0e10cSrcweir 		void getAbsoluteFileURL_002( )
913*cdf0e10cSrcweir 		{
914*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: URL contain link( Windows version )",
915*cdf0e10cSrcweir 					1 );
916*cdf0e10cSrcweir 		}
917*cdf0e10cSrcweir #endif
918*cdf0e10cSrcweir 
919*cdf0e10cSrcweir 		void getAbsoluteFileURL_003( )
920*cdf0e10cSrcweir 		{
921*cdf0e10cSrcweir // LLA: may be a wrong test, aTmpName1 not a real URL
922*cdf0e10cSrcweir #if 0
923*cdf0e10cSrcweir             ::rtl::OUString aUStr_AbsURL;
924*cdf0e10cSrcweir 
925*cdf0e10cSrcweir 			nError = aFileBase.getAbsoluteFileURL( aTmpName1,  aRelURL1, aUStr_AbsURL );    //base dir invalid error
926*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL('");
927*cdf0e10cSrcweir 			suError += aTmpName1;
928*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
929*cdf0e10cSrcweir 			suError += aRelURL1;
930*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
931*cdf0e10cSrcweir 			suError += aUStr_AbsURL;
932*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("' ),Parameter is invalid. it ignore the invalid base in Windows, did not pass in (W32), the reason maybe caused by the similar bug with getSystemPathFromFileURL() ");
933*cdf0e10cSrcweir 
934*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( ::osl::FileBase::E_INVAL == nError ) );
935*cdf0e10cSrcweir #endif
936*cdf0e10cSrcweir         }
937*cdf0e10cSrcweir 
938*cdf0e10cSrcweir 		//use ".." in relartive path, the BasePath must exist on the file system
939*cdf0e10cSrcweir 		void getAbsoluteFileURL_004( )
940*cdf0e10cSrcweir 		{
941*cdf0e10cSrcweir 			//create two level directories under $Temp/PID/
942*cdf0e10cSrcweir 			::rtl::OUString	aUStrUpBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1");
943*cdf0e10cSrcweir 			createTestDirectory( aUStrUpBase );
944*cdf0e10cSrcweir 			::rtl::OUString	aUStrBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1/dir1");
945*cdf0e10cSrcweir 			createTestDirectory( aUStrBase );
946*cdf0e10cSrcweir 
947*cdf0e10cSrcweir 			::rtl::OUString	aUStrRelar = ::rtl::OUString::createFromAscii("../../mytestfile");
948*cdf0e10cSrcweir 			::rtl::OUString	aUStr_AbsURL;
949*cdf0e10cSrcweir 			::rtl::OUString aResultURL6 = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/mytestfile");
950*cdf0e10cSrcweir 
951*cdf0e10cSrcweir 			nError = aFileBase.getAbsoluteFileURL( aUStrBase,  aUStrRelar, aUStr_AbsURL );
952*cdf0e10cSrcweir 			bOk = aUStr_AbsURL.equals( aResultURL6 );
953*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL('");
954*cdf0e10cSrcweir 			suError += aUStrBase;
955*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
956*cdf0e10cSrcweir 			suError += aUStrRelar;
957*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii("', '");
958*cdf0e10cSrcweir 			suError += aUStr_AbsURL;
959*cdf0e10cSrcweir 			suError += outputError( aUStr_AbsURL, aResultURL6, "' ), did not pass on Win32 ");
960*cdf0e10cSrcweir 
961*cdf0e10cSrcweir 			deleteTestDirectory( aUStrBase );
962*cdf0e10cSrcweir 			deleteTestDirectory( aUStrUpBase );
963*cdf0e10cSrcweir 
964*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( ::osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
965*cdf0e10cSrcweir 		}
966*cdf0e10cSrcweir 
967*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getAbsoluteFileURL );
968*cdf0e10cSrcweir 		CPPUNIT_TEST( getAbsoluteFileURL_001 );
969*cdf0e10cSrcweir 		CPPUNIT_TEST( getAbsoluteFileURL_002 );
970*cdf0e10cSrcweir 		CPPUNIT_TEST( getAbsoluteFileURL_003 );
971*cdf0e10cSrcweir 		CPPUNIT_TEST( getAbsoluteFileURL_004 );
972*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
973*cdf0e10cSrcweir 	};// class getAbsoluteFileURL*/
974*cdf0e10cSrcweir 
975*cdf0e10cSrcweir 	void getAbsoluteFileURL::check_getAbsoluteFileURL( rtl::OUString const& _suBaseURL,  rtl::OString const& _sRelativeURL, ::osl::FileBase::RC _nAssumeError, rtl::OUString const& _suAssumeResultStr )
976*cdf0e10cSrcweir 	{
977*cdf0e10cSrcweir 		rtl::OUString suRelativeURL = rtl::OStringToOUString(_sRelativeURL, RTL_TEXTENCODING_UTF8);
978*cdf0e10cSrcweir 		rtl::OString sBaseURL = rtl::OUStringToOString(_suBaseURL, RTL_TEXTENCODING_UTF8);
979*cdf0e10cSrcweir 		rtl::OUString suResultURL;
980*cdf0e10cSrcweir 		osl::FileBase::RC nError = FileBase::getAbsoluteFileURL( _suBaseURL,  suRelativeURL, suResultURL );
981*cdf0e10cSrcweir 		rtl::OString sResultURL = rtl::OUStringToOString( suResultURL, RTL_TEXTENCODING_UTF8);
982*cdf0e10cSrcweir 		rtl::OString sError = errorToString(nError);
983*cdf0e10cSrcweir 		t_print("getAbsoluteFileURL('%s','%s') deliver absolute URL: '%s', error '%s'\n", sBaseURL.getStr(), _sRelativeURL.getStr(),sResultURL.getStr(), sError.getStr() );
984*cdf0e10cSrcweir 		CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong: error number is wrong", nError == _nAssumeError );
985*cdf0e10cSrcweir 		if ( nError == ::osl::FileBase::E_None )
986*cdf0e10cSrcweir 		{
987*cdf0e10cSrcweir 			sal_Bool bStrAreEqual = _suAssumeResultStr.equals( suResultURL );
988*cdf0e10cSrcweir             		CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong: ResultURL is not equal to expected URL ", bStrAreEqual == sal_True );
989*cdf0e10cSrcweir             	}
990*cdf0e10cSrcweir 	}
991*cdf0e10cSrcweir 
992*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_1()
993*cdf0e10cSrcweir   {
994*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/file1") );
995*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "relative/file1",::osl::FileBase::E_None, suAssume );
996*cdf0e10cSrcweir   }
997*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_2()
998*cdf0e10cSrcweir   {
999*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/file2") );
1000*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "relative/./file2",::osl::FileBase::E_None, suAssume );
1001*cdf0e10cSrcweir   }
1002*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_3()
1003*cdf0e10cSrcweir   {
1004*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/file3") );
1005*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "relative/../file3",::osl::FileBase::E_None, suAssume );
1006*cdf0e10cSrcweir   }
1007*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_4()
1008*cdf0e10cSrcweir   {
1009*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/file4") );
1010*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "././relative/../file4",::osl::FileBase::E_None, suAssume );
1011*cdf0e10cSrcweir   }
1012*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_5()
1013*cdf0e10cSrcweir   {
1014*cdf0e10cSrcweir     rtl::OUString suAssume;
1015*cdf0e10cSrcweir #if ( defined UNX )
1016*cdf0e10cSrcweir     suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/") );
1017*cdf0e10cSrcweir #else
1018*cdf0e10cSrcweir     suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative") );
1019*cdf0e10cSrcweir #endif
1020*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "././relative/.",::osl::FileBase::E_None, suAssume );
1021*cdf0e10cSrcweir   }
1022*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_6()
1023*cdf0e10cSrcweir   {
1024*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.relative") );
1025*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "./.relative",::osl::FileBase::E_None, suAssume );
1026*cdf0e10cSrcweir   }
1027*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_7()
1028*cdf0e10cSrcweir   {
1029*cdf0e10cSrcweir     rtl::OUString suAssume;
1030*cdf0e10cSrcweir #if (defined UNX )
1031*cdf0e10cSrcweir     suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.a/") );
1032*cdf0e10cSrcweir #else //windows
1033*cdf0e10cSrcweir     suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.a") );
1034*cdf0e10cSrcweir #endif
1035*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "./.a/mydir/..",::osl::FileBase::E_None, suAssume );
1036*cdf0e10cSrcweir   }
1037*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_001_8()
1038*cdf0e10cSrcweir   {
1039*cdf0e10cSrcweir     rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/tmp/ok") );
1040*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
1041*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "tmp//ok",::osl::FileBase::E_None, suAssume );
1042*cdf0e10cSrcweir #else
1043*cdf0e10cSrcweir     check_getAbsoluteFileURL( aUserDirectoryURL, "tmp//ok",::osl::FileBase::E_INVAL, suAssume );
1044*cdf0e10cSrcweir #endif
1045*cdf0e10cSrcweir   }
1046*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_002()
1047*cdf0e10cSrcweir   {
1048*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )		//Link is not defined in Windows
1049*cdf0e10cSrcweir 		::rtl::OUString aUStr_AbsURL, aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys );
1050*cdf0e10cSrcweir 		( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file");
1051*cdf0e10cSrcweir 		( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/canonical.name");
1052*cdf0e10cSrcweir 
1053*cdf0e10cSrcweir                 rtl::OString strLinkFileName, strSrcFileName;
1054*cdf0e10cSrcweir                 strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US );
1055*cdf0e10cSrcweir                 strSrcFileName =  OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US );
1056*cdf0e10cSrcweir 
1057*cdf0e10cSrcweir 		createTestFile( aCanURL1 );
1058*cdf0e10cSrcweir                 sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() );
1059*cdf0e10cSrcweir 		CPPUNIT_ASSERT( fd == 0 );
1060*cdf0e10cSrcweir 		rtl::OString sLnkURL = OUStringToOString( aLnkURL1, RTL_TEXTENCODING_ASCII_US );
1061*cdf0e10cSrcweir     		rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/canonical.name") );
1062*cdf0e10cSrcweir 		check_getAbsoluteFileURL( aUserDirectoryURL, sLnkURL, ::osl::FileBase::E_None, suAssume );
1063*cdf0e10cSrcweir 		deleteTestFile( aCanURL1 );
1064*cdf0e10cSrcweir                 fd = remove( strLinkFileName.getStr() );
1065*cdf0e10cSrcweir 		CPPUNIT_ASSERT( fd == 0 );
1066*cdf0e10cSrcweir #endif
1067*cdf0e10cSrcweir   }
1068*cdf0e10cSrcweir   //please see line# 930
1069*cdf0e10cSrcweir   void getAbsoluteFileURL::getAbsoluteFileURL_003()
1070*cdf0e10cSrcweir   {
1071*cdf0e10cSrcweir   }
1072*cdf0e10cSrcweir 	void getAbsoluteFileURL::getAbsoluteFileURL_004()
1073*cdf0e10cSrcweir 	{
1074*cdf0e10cSrcweir 		//create two level directories under $Temp/PID/
1075*cdf0e10cSrcweir 		::rtl::OUString	aUStrUpBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1");
1076*cdf0e10cSrcweir 		createTestDirectory( aUStrUpBase );
1077*cdf0e10cSrcweir 		::rtl::OUString	aUStrBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1/dir1");
1078*cdf0e10cSrcweir 		createTestDirectory( aUStrBase );
1079*cdf0e10cSrcweir 
1080*cdf0e10cSrcweir 		::rtl::OUString suAssume = aUserDirectoryURL.concat( ::rtl::OUString::createFromAscii("/mytestfile") );
1081*cdf0e10cSrcweir 		check_getAbsoluteFileURL( aUStrBase, "../../mytestfile" , ::osl::FileBase::E_None, suAssume );
1082*cdf0e10cSrcweir 		deleteTestDirectory( aUStrBase );
1083*cdf0e10cSrcweir 		deleteTestDirectory( aUStrUpBase );
1084*cdf0e10cSrcweir 	}
1085*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1086*cdf0e10cSrcweir 	// testing two methods:
1087*cdf0e10cSrcweir 	// static inline RC getSystemPathFromFileURL( const ::rtl::OUString& ustrFileURL,
1088*cdf0e10cSrcweir 	//				  ::rtl::OUString& ustrSystemPath )
1089*cdf0e10cSrcweir         // static RC getFileURLFromSystemPath( const ::rtl::OUString & ustrSystemPath,
1090*cdf0e10cSrcweir         //                                ::rtl::OUString & ustrFileURL );
1091*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1092*cdf0e10cSrcweir 	class SystemPath_FileURL:public CppUnit::TestFixture
1093*cdf0e10cSrcweir 	{
1094*cdf0e10cSrcweir 		//::osl::FileBase aFileBase;
1095*cdf0e10cSrcweir 		// ::rtl::OUString aUStr;
1096*cdf0e10cSrcweir 		// ::osl::FileBase::RC nError;
1097*cdf0e10cSrcweir 
1098*cdf0e10cSrcweir 	  //void check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr);
1099*cdf0e10cSrcweir 	  void check_SystemPath_FileURL(rtl::OString const& _sSource, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr, sal_Bool bDirection = sal_True );
1100*cdf0e10cSrcweir 	  void checkWNTBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString );
1101*cdf0e10cSrcweir 	  void checkUNXBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString );
1102*cdf0e10cSrcweir 	  void checkWNTBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString);
1103*cdf0e10cSrcweir 	  void checkUNXBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString);
1104*cdf0e10cSrcweir 
1105*cdf0e10cSrcweir     public:
1106*cdf0e10cSrcweir 		// test code.
1107*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_1( );
1108*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_2( );
1109*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_21( );
1110*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_22( );
1111*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_3( );
1112*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_31( );
1113*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_4( );
1114*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_41( );
1115*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_5( );
1116*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_51( );
1117*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_52( );
1118*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_53( );
1119*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_6( );
1120*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_61( );
1121*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_7( );
1122*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_71( );
1123*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_8( );
1124*cdf0e10cSrcweir 	        void getSystemPathFromFileURL_001_81( );
1125*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_9( );
1126*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_91( );
1127*cdf0e10cSrcweir 		void getSystemPathFromFileURL_001_92( );
1128*cdf0e10cSrcweir 		void getSystemPathFromFileURL_004( );
1129*cdf0e10cSrcweir 		void getSystemPathFromFileURL_005( );
1130*cdf0e10cSrcweir 
1131*cdf0e10cSrcweir 	  //test case fot getFileURLFromSystemPath
1132*cdf0e10cSrcweir 	        void getFileURLFromSystemPath_001( );
1133*cdf0e10cSrcweir 	        void getFileURLFromSystemPath_002( );
1134*cdf0e10cSrcweir 	        void getFileURLFromSystemPath_003( );
1135*cdf0e10cSrcweir 	        void getFileURLFromSystemPath_004( );
1136*cdf0e10cSrcweir 		void getFileURLFromSystemPath_005( );
1137*cdf0e10cSrcweir 
1138*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( SystemPath_FileURL );
1139*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_1 );
1140*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_2 );
1141*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_21 );
1142*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_22 );
1143*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_3 );
1144*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_31 );
1145*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_4 );
1146*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_41 );
1147*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_5 );
1148*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_51 );
1149*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_52 );
1150*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_53 );
1151*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_6 );
1152*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_61 );
1153*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_7 );
1154*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_71 );
1155*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_8 );
1156*cdf0e10cSrcweir 	        CPPUNIT_TEST( getSystemPathFromFileURL_001_81 );
1157*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_9 );
1158*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_91 );
1159*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_001_92 );
1160*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_004 );
1161*cdf0e10cSrcweir 		CPPUNIT_TEST( getSystemPathFromFileURL_005 );
1162*cdf0e10cSrcweir 	        CPPUNIT_TEST( getFileURLFromSystemPath_001 );
1163*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileURLFromSystemPath_002 );
1164*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileURLFromSystemPath_003 );
1165*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileURLFromSystemPath_004 );
1166*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileURLFromSystemPath_005 );
1167*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1168*cdf0e10cSrcweir 	};// class SystemPath_FileURL
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir 
1171*cdf0e10cSrcweir     // test code.
1172*cdf0e10cSrcweir 
1173*cdf0e10cSrcweir   /*    void getSystemPathFromFileURL::check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr)
1174*cdf0e10cSrcweir     {
1175*cdf0e10cSrcweir         // PRE: URL as String
1176*cdf0e10cSrcweir         rtl::OUString suURL;
1177*cdf0e10cSrcweir         rtl::OUString suStr;
1178*cdf0e10cSrcweir         suURL = rtl::OStringToOUString(_sURL, RTL_TEXTENCODING_UTF8);
1179*cdf0e10cSrcweir         ::osl::FileBase::RC nError =  osl::FileBase::getSystemPathFromFileURL( suURL, suStr ); // start with /
1180*cdf0e10cSrcweir 
1181*cdf0e10cSrcweir         // if the given string is gt length 0,
1182*cdf0e10cSrcweir         // we check also this string
1183*cdf0e10cSrcweir         rtl::OString sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
1184*cdf0e10cSrcweir         rtl::OString sError = errorToString(nError);
1185*cdf0e10cSrcweir         t_print("getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s'\n", _sURL.getStr(), sStr.getStr(), sError.getStr() );
1186*cdf0e10cSrcweir 
1187*cdf0e10cSrcweir         // rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8);
1188*cdf0e10cSrcweir         // sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
1189*cdf0e10cSrcweir         // t_print("UTF8: %s\n", sStr.getStr() );
1190*cdf0e10cSrcweir 
1191*cdf0e10cSrcweir         if (_sAssumeResultStr.getLength() > 0)
1192*cdf0e10cSrcweir         {
1193*cdf0e10cSrcweir             sal_Bool bStrAreEqual = _sAssumeResultStr.equals(sStr);
1194*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong",
1195*cdf0e10cSrcweir                                     nError == _nAssumeError && bStrAreEqual == sal_True );
1196*cdf0e10cSrcweir         }
1197*cdf0e10cSrcweir         else
1198*cdf0e10cSrcweir         {
1199*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", nError == _nAssumeError );
1200*cdf0e10cSrcweir         }
1201*cdf0e10cSrcweir 	}*/
1202*cdf0e10cSrcweir 
1203*cdf0e10cSrcweir     // if bDirection==sal_True, check getSystemPathFromFileURL
1204*cdf0e10cSrcweir     // if bDirection==sal_False, check getFileURLFromSystemPath
1205*cdf0e10cSrcweir     void SystemPath_FileURL::check_SystemPath_FileURL(rtl::OString const& _sSource, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr, sal_Bool bDirection)
1206*cdf0e10cSrcweir     {
1207*cdf0e10cSrcweir         // PRE: URL as String
1208*cdf0e10cSrcweir         rtl::OUString suSource;
1209*cdf0e10cSrcweir         rtl::OUString suStr;
1210*cdf0e10cSrcweir         suSource = rtl::OStringToOUString(_sSource, RTL_TEXTENCODING_UTF8);
1211*cdf0e10cSrcweir 	::osl::FileBase::RC nError;
1212*cdf0e10cSrcweir 	if ( bDirection == sal_True )
1213*cdf0e10cSrcweir 	  nError = osl::FileBase::getSystemPathFromFileURL( suSource, suStr );
1214*cdf0e10cSrcweir 	else
1215*cdf0e10cSrcweir 	  nError = osl::FileBase::getFileURLFromSystemPath( suSource, suStr );
1216*cdf0e10cSrcweir 
1217*cdf0e10cSrcweir         // if the given string is gt length 0,
1218*cdf0e10cSrcweir         // we check also this string
1219*cdf0e10cSrcweir         rtl::OString sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
1220*cdf0e10cSrcweir         rtl::OString sError = errorToString(nError);
1221*cdf0e10cSrcweir 	if ( bDirection == sal_True )
1222*cdf0e10cSrcweir 	  t_print("getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s'\n", _sSource.getStr(), sStr.getStr(), sError.getStr() );
1223*cdf0e10cSrcweir 	else
1224*cdf0e10cSrcweir 	  t_print("getFileURLFromSystemPath('%s') deliver File URL: '%s', error '%s'\n", _sSource.getStr(), sStr.getStr(), sError.getStr() );
1225*cdf0e10cSrcweir 
1226*cdf0e10cSrcweir         // rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8);
1227*cdf0e10cSrcweir         // sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
1228*cdf0e10cSrcweir         // t_print("UTF8: %s\n", sStr.getStr() );
1229*cdf0e10cSrcweir 
1230*cdf0e10cSrcweir         if (_sAssumeResultStr.getLength() > 0)
1231*cdf0e10cSrcweir         {
1232*cdf0e10cSrcweir             sal_Bool bStrAreEqual = _sAssumeResultStr.equals(sStr);
1233*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong",
1234*cdf0e10cSrcweir                                     nError == _nAssumeError && bStrAreEqual == sal_True );
1235*cdf0e10cSrcweir         }
1236*cdf0e10cSrcweir         else
1237*cdf0e10cSrcweir         {
1238*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", nError == _nAssumeError );
1239*cdf0e10cSrcweir         }
1240*cdf0e10cSrcweir     }
1241*cdf0e10cSrcweir     void SystemPath_FileURL::checkWNTBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString)
1242*cdf0e10cSrcweir     {
1243*cdf0e10cSrcweir #if ( defined WNT )
1244*cdf0e10cSrcweir         check_SystemPath_FileURL(_sURL, _nAssumeError, _sWNTAssumeResultString);
1245*cdf0e10cSrcweir #else
1246*cdf0e10cSrcweir         (void)_sURL;
1247*cdf0e10cSrcweir         (void)_nAssumeError;
1248*cdf0e10cSrcweir         (void)_sWNTAssumeResultString;
1249*cdf0e10cSrcweir #endif
1250*cdf0e10cSrcweir     }
1251*cdf0e10cSrcweir 
1252*cdf0e10cSrcweir     void SystemPath_FileURL::checkUNXBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString)
1253*cdf0e10cSrcweir     {
1254*cdf0e10cSrcweir #if ( defined UNX )
1255*cdf0e10cSrcweir         check_SystemPath_FileURL(_sURL, _nAssumeError, _sUnixAssumeResultString);
1256*cdf0e10cSrcweir #else
1257*cdf0e10cSrcweir         (void)_sURL;
1258*cdf0e10cSrcweir         (void)_nAssumeError;
1259*cdf0e10cSrcweir         (void)_sUnixAssumeResultString;
1260*cdf0e10cSrcweir #endif
1261*cdf0e10cSrcweir     }
1262*cdf0e10cSrcweir 
1263*cdf0e10cSrcweir     void SystemPath_FileURL::checkWNTBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString)
1264*cdf0e10cSrcweir     {
1265*cdf0e10cSrcweir #if ( defined WNT )
1266*cdf0e10cSrcweir         check_SystemPath_FileURL(_sSysPath, _nAssumeError, _sWNTAssumeResultString, sal_False );
1267*cdf0e10cSrcweir #else
1268*cdf0e10cSrcweir         (void)_sSysPath;
1269*cdf0e10cSrcweir         (void)_nAssumeError;
1270*cdf0e10cSrcweir         (void)_sWNTAssumeResultString;
1271*cdf0e10cSrcweir #endif
1272*cdf0e10cSrcweir     }
1273*cdf0e10cSrcweir 
1274*cdf0e10cSrcweir     void SystemPath_FileURL::checkUNXBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString)
1275*cdf0e10cSrcweir     {
1276*cdf0e10cSrcweir #if ( defined UNX )
1277*cdf0e10cSrcweir         check_SystemPath_FileURL(_sSysPath, _nAssumeError, _sUnixAssumeResultString, sal_False );
1278*cdf0e10cSrcweir #else
1279*cdf0e10cSrcweir         (void)_sSysPath;
1280*cdf0e10cSrcweir         (void)_nAssumeError;
1281*cdf0e10cSrcweir         (void)_sUnixAssumeResultString;
1282*cdf0e10cSrcweir #endif
1283*cdf0e10cSrcweir     }
1284*cdf0e10cSrcweir 
1285*cdf0e10cSrcweir     /** LLA: Test for getSystemPathFromFileURL()
1286*cdf0e10cSrcweir         this test is splitted into 2 different OS tests,
1287*cdf0e10cSrcweir         the first function checkUNXBehaviour... runs only on Unix based Systems,
1288*cdf0e10cSrcweir         the second only on windows based systems
1289*cdf0e10cSrcweir         the first parameter are a file URL where we want to get the system path of,
1290*cdf0e10cSrcweir         the second parameter is the assumed error of the osl_getSystemPathFromFileURL() function,
1291*cdf0e10cSrcweir         the thrid parameter is the assumed result string, the string will only test, if it's length is greater 0
1292*cdf0e10cSrcweir     */
1293*cdf0e10cSrcweir 
1294*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_1()
1295*cdf0e10cSrcweir     {
1296*cdf0e10cSrcweir         rtl::OString sURL("");
1297*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1298*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1299*cdf0e10cSrcweir     }
1300*cdf0e10cSrcweir 
1301*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_2()
1302*cdf0e10cSrcweir     {
1303*cdf0e10cSrcweir         rtl::OString sURL("/");
1304*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1305*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "\\");
1306*cdf0e10cSrcweir     }
1307*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_21()
1308*cdf0e10cSrcweir     {
1309*cdf0e10cSrcweir       //        rtl::OString sURL("%2f");
1310*cdf0e10cSrcweir       rtl::OString sURL("%2F");
1311*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/"); // LLA: this is may be a BUG
1312*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1313*cdf0e10cSrcweir     }
1314*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_22()
1315*cdf0e10cSrcweir     {
1316*cdf0e10cSrcweir       rtl::OString sURL("file:///tmp%2Fmydir");
1317*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1318*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1319*cdf0e10cSrcweir     }
1320*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_3()
1321*cdf0e10cSrcweir     {
1322*cdf0e10cSrcweir         rtl::OString sURL("a");
1323*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "a");
1324*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "a");
1325*cdf0e10cSrcweir     }
1326*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_31()
1327*cdf0e10cSrcweir     {
1328*cdf0e10cSrcweir         rtl::OString sURL("tmpname");
1329*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "tmpname");
1330*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "tmpname");
1331*cdf0e10cSrcweir     }
1332*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_4()
1333*cdf0e10cSrcweir     {
1334*cdf0e10cSrcweir         rtl::OString sURL("file://");
1335*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "");
1336*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1337*cdf0e10cSrcweir     }
1338*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_41()
1339*cdf0e10cSrcweir     {
1340*cdf0e10cSrcweir         rtl::OString sURL("file://localhost/tmp");
1341*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "");
1342*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1343*cdf0e10cSrcweir     }
1344*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_5()
1345*cdf0e10cSrcweir     {
1346*cdf0e10cSrcweir         rtl::OString sURL("file:///tmp");
1347*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp");
1348*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1349*cdf0e10cSrcweir     }
1350*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_51()
1351*cdf0e10cSrcweir     {
1352*cdf0e10cSrcweir         rtl::OString sURL("file://c:/tmp");
1353*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:/tmp"); // LLA: this is may be a BUG
1354*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1355*cdf0e10cSrcweir     }
1356*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_52()
1357*cdf0e10cSrcweir     {
1358*cdf0e10cSrcweir         rtl::OString sURL("file:///c:/tmp");
1359*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp");
1360*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp");
1361*cdf0e10cSrcweir     }
1362*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_53()
1363*cdf0e10cSrcweir     {
1364*cdf0e10cSrcweir // LLA: is this a legal file path?
1365*cdf0e10cSrcweir         rtl::OString sURL("file:///c|/tmp");
1366*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c|/tmp");
1367*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp");
1368*cdf0e10cSrcweir     }
1369*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_6()
1370*cdf0e10cSrcweir     {
1371*cdf0e10cSrcweir         rtl::OString sURL("file:///tmp/first");
1372*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/first");
1373*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1374*cdf0e10cSrcweir     }
1375*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_61()
1376*cdf0e10cSrcweir     {
1377*cdf0e10cSrcweir         rtl::OString sURL("file:///c:/tmp/first");
1378*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/first");
1379*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\first");
1380*cdf0e10cSrcweir     }
1381*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_7()
1382*cdf0e10cSrcweir     {
1383*cdf0e10cSrcweir         rtl::OString sURL("file:///tmp/../second");
1384*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/../second"); // LLA: may be a BUG
1385*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1386*cdf0e10cSrcweir     }
1387*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_71()
1388*cdf0e10cSrcweir     {
1389*cdf0e10cSrcweir         rtl::OString sURL("file:///c:/tmp/../second");
1390*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/../second");
1391*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\..\\second");
1392*cdf0e10cSrcweir     }
1393*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_8()
1394*cdf0e10cSrcweir     {
1395*cdf0e10cSrcweir         rtl::OString sURL("../tmp");
1396*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "../tmp");
1397*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "..\\tmp");
1398*cdf0e10cSrcweir     }
1399*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_81()
1400*cdf0e10cSrcweir     {
1401*cdf0e10cSrcweir         rtl::OString sURL("file://~/tmp");
1402*cdf0e10cSrcweir 	char* home_path;
1403*cdf0e10cSrcweir 	home_path = getenv("HOME");
1404*cdf0e10cSrcweir 	rtl::OString expResult(home_path);
1405*cdf0e10cSrcweir 	expResult += "/tmp";
1406*cdf0e10cSrcweir 	checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, expResult );
1407*cdf0e10cSrcweir 	//	checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "\\tmp");
1408*cdf0e10cSrcweir     }
1409*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_9()
1410*cdf0e10cSrcweir     {
1411*cdf0e10cSrcweir         rtl::OString sURL("file:///tmp/first%20second");
1412*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/first second");
1413*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1414*cdf0e10cSrcweir     }
1415*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_91()
1416*cdf0e10cSrcweir     {
1417*cdf0e10cSrcweir         rtl::OString sURL("file:///c:/tmp/first%20second");
1418*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/first second");
1419*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\first second");
1420*cdf0e10cSrcweir     }
1421*cdf0e10cSrcweir 
1422*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_001_92()
1423*cdf0e10cSrcweir     {
1424*cdf0e10cSrcweir         rtl::OString sURL("ca@#;+.,$///78no%01ni..name");
1425*cdf0e10cSrcweir 		checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "");
1426*cdf0e10cSrcweir 		checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, "");
1427*cdf0e10cSrcweir     }
1428*cdf0e10cSrcweir 
1429*cdf0e10cSrcweir #if 0
1430*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_003( )
1431*cdf0e10cSrcweir 		{
1432*cdf0e10cSrcweir // LLA: ???
1433*cdf0e10cSrcweir //!! seams to be, that the directories do not pass together
1434*cdf0e10cSrcweir             ::rtl::OUString aUStr;
1435*cdf0e10cSrcweir 			::rtl::OUString aRelativeURL = ::rtl::OUString::createFromAscii("../../relartive/file3");
1436*cdf0e10cSrcweir 			::rtl::OUString aResultURL ( aSysPath4 );
1437*cdf0e10cSrcweir             ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aRelativeURL, aUStr );
1438*cdf0e10cSrcweir 
1439*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aResultURL );
1440*cdf0e10cSrcweir 
1441*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL(");
1442*cdf0e10cSrcweir 			suError += aRelativeURL;
1443*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii(") function:use a relative file URL, did not pass in(W32), it did not specified in method declaration of relative path issue, ");
1444*cdf0e10cSrcweir 			suError += outputError(aUStr, aResultURL);
1445*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
1446*cdf0e10cSrcweir 		}
1447*cdf0e10cSrcweir #endif
1448*cdf0e10cSrcweir 
1449*cdf0e10cSrcweir 		//normal legal case
1450*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_004( )
1451*cdf0e10cSrcweir 		{
1452*cdf0e10cSrcweir         ::rtl::OUString aUStr;
1453*cdf0e10cSrcweir         ::rtl::OUString aNormalURL( aTmpName6 );
1454*cdf0e10cSrcweir         ::rtl::OUString aResultURL ( aSysPath4 );
1455*cdf0e10cSrcweir         ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aNormalURL, aUStr );
1456*cdf0e10cSrcweir 
1457*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aResultURL );
1458*cdf0e10cSrcweir 
1459*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL(' ");
1460*cdf0e10cSrcweir 			suError += aNormalURL;
1461*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii(" ') function:use an absolute file URL, ");
1462*cdf0e10cSrcweir 			suError += outputError(aUStr, aResultURL);
1463*cdf0e10cSrcweir 
1464*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
1465*cdf0e10cSrcweir 
1466*cdf0e10cSrcweir 		}
1467*cdf0e10cSrcweir 
1468*cdf0e10cSrcweir 		//CJK charactors case
1469*cdf0e10cSrcweir     void SystemPath_FileURL::getSystemPathFromFileURL_005( )
1470*cdf0e10cSrcweir 		{
1471*cdf0e10cSrcweir             ::rtl::OUString aUStr;
1472*cdf0e10cSrcweir             createTestDirectory( aTmpName10 );
1473*cdf0e10cSrcweir             ::rtl::OUString aNormalURL( aTmpName10 );
1474*cdf0e10cSrcweir             ::rtl::OUString aResultURL ( aSysPath5 );
1475*cdf0e10cSrcweir 
1476*cdf0e10cSrcweir             ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aNormalURL, aUStr );
1477*cdf0e10cSrcweir 
1478*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aResultURL );
1479*cdf0e10cSrcweir 
1480*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL(' ");
1481*cdf0e10cSrcweir 			suError += aNormalURL;
1482*cdf0e10cSrcweir 			suError += ::rtl::OUString::createFromAscii(" ') function:use a CJK coded absolute URL, ");
1483*cdf0e10cSrcweir 			suError += outputError(aUStr, aResultURL);
1484*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName10 );
1485*cdf0e10cSrcweir 
1486*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
1487*cdf0e10cSrcweir 		}
1488*cdf0e10cSrcweir      void SystemPath_FileURL::getFileURLFromSystemPath_001()
1489*cdf0e10cSrcweir      {
1490*cdf0e10cSrcweir         rtl::OString sSysPath("~/tmp");
1491*cdf0e10cSrcweir 	char* home_path;
1492*cdf0e10cSrcweir 	home_path = getenv("HOME");
1493*cdf0e10cSrcweir 	rtl::OString expResult(home_path);
1494*cdf0e10cSrcweir 	expResult = "file://"+ expResult + "/tmp";
1495*cdf0e10cSrcweir 		checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, expResult );
1496*cdf0e10cSrcweir 		checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "~/tmp");
1497*cdf0e10cSrcweir      }
1498*cdf0e10cSrcweir      void SystemPath_FileURL::getFileURLFromSystemPath_002()
1499*cdf0e10cSrcweir      {
1500*cdf0e10cSrcweir         rtl::OString sSysPath("c:/tmp");
1501*cdf0e10cSrcweir 		checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "c:/tmp");
1502*cdf0e10cSrcweir 		checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "file:///c:/tmp");
1503*cdf0e10cSrcweir      }
1504*cdf0e10cSrcweir      void SystemPath_FileURL::getFileURLFromSystemPath_003()
1505*cdf0e10cSrcweir      {
1506*cdf0e10cSrcweir         rtl::OString sSysPath("file:///temp");
1507*cdf0e10cSrcweir 		checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, "");
1508*cdf0e10cSrcweir 		checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, "");
1509*cdf0e10cSrcweir      }
1510*cdf0e10cSrcweir     void SystemPath_FileURL::getFileURLFromSystemPath_004()
1511*cdf0e10cSrcweir      {
1512*cdf0e10cSrcweir         rtl::OString sSysPath("//tmp//first start");
1513*cdf0e10cSrcweir 		checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "file:///tmp/first%20start");
1514*cdf0e10cSrcweir 		checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, "");
1515*cdf0e10cSrcweir      }
1516*cdf0e10cSrcweir      void SystemPath_FileURL::getFileURLFromSystemPath_005()
1517*cdf0e10cSrcweir      {
1518*cdf0e10cSrcweir         rtl::OString sSysPath("");
1519*cdf0e10cSrcweir 		checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, "");
1520*cdf0e10cSrcweir 		checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, "");
1521*cdf0e10cSrcweir      }
1522*cdf0e10cSrcweir      	// start with "~user", not impletment
1523*cdf0e10cSrcweir 	//      void SystemPath_FileURL::getFileURLFromSystemPath_006()
1524*cdf0e10cSrcweir 
1525*cdf0e10cSrcweir 
1526*cdf0e10cSrcweir 
1527*cdf0e10cSrcweir 
1528*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1529*cdf0e10cSrcweir 	// testing the method
1530*cdf0e10cSrcweir 	// static inline RC searchFileURL(  const ::rtl::OUString& ustrFileName,
1531*cdf0e10cSrcweir 	// 									const ::rtl::OUString& ustrSearchPath,
1532*cdf0e10cSrcweir 	//									::rtl::OUString& ustrFileURL )
1533*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1534*cdf0e10cSrcweir 	class searchFileURL:public CppUnit::TestFixture
1535*cdf0e10cSrcweir 	{
1536*cdf0e10cSrcweir 		//::osl::FileBase aFileBase;
1537*cdf0e10cSrcweir 		::rtl::OUString aUStr;
1538*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2, nError3,nError4;
1539*cdf0e10cSrcweir 
1540*cdf0e10cSrcweir 	    public:
1541*cdf0e10cSrcweir 
1542*cdf0e10cSrcweir 		// test code.
1543*cdf0e10cSrcweir 		void searchFileURL_001( )
1544*cdf0e10cSrcweir 		{
1545*cdf0e10cSrcweir 			/* search file is passed by system filename */
1546*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::searchFileURL( aTmpName1, aUserDirectorySys, aUStr );
1547*cdf0e10cSrcweir 			/* search file is passed by full qualified file URL */
1548*cdf0e10cSrcweir 			nError2 = ::osl::FileBase::searchFileURL( aCanURL1, aUserDirectorySys, aUStr );
1549*cdf0e10cSrcweir 			/* search file is passed by relative file path */
1550*cdf0e10cSrcweir 			nError3 = ::osl::FileBase::searchFileURL( aRelURL4, aUserDirectorySys, aUStr );
1551*cdf0e10cSrcweir 
1552*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: system filename/URL filename/relative path, system directory, searched files that is not exist, but it reply invalid error, did not pass in (W32) ",
1553*cdf0e10cSrcweir 				 					( osl::FileBase::E_NOENT == nError1 ) &&
1554*cdf0e10cSrcweir 				 					( osl::FileBase::E_NOENT == nError2 ) &&
1555*cdf0e10cSrcweir 									( osl::FileBase::E_NOENT == nError3 ));
1556*cdf0e10cSrcweir 		}
1557*cdf0e10cSrcweir 
1558*cdf0e10cSrcweir  		void searchFileURL_002( )
1559*cdf0e10cSrcweir 		{
1560*cdf0e10cSrcweir 			/* search file is passed by system filename */
1561*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::searchFileURL( aTempDirectorySys, aRootSys, aUStr );
1562*cdf0e10cSrcweir 			sal_Bool bOk1 = compareFileName( aUStr, aTempDirectoryURL );
1563*cdf0e10cSrcweir 			/* search file is passed by full qualified file URL */
1564*cdf0e10cSrcweir 			nError2 = ::osl::FileBase::searchFileURL( aTempDirectoryURL, aRootSys, aUStr );
1565*cdf0e10cSrcweir 			sal_Bool bOk2 = compareFileName( aUStr, aTempDirectoryURL );
1566*cdf0e10cSrcweir 			/* search file is passed by relative file path */
1567*cdf0e10cSrcweir 			nError3 = ::osl::FileBase::searchFileURL( aRelURL5, aRootSys, aUStr );
1568*cdf0e10cSrcweir 			sal_Bool bOk3 = compareFileName( aUStr, aTempDirectoryURL );
1569*cdf0e10cSrcweir 			/* search file is passed by an exist file */
1570*cdf0e10cSrcweir 			createTestFile( aCanURL1 );
1571*cdf0e10cSrcweir 			nError4 = ::osl::FileBase::searchFileURL( aCanURL4, aUserDirectorySys, aUStr );
1572*cdf0e10cSrcweir 			sal_Bool bOk4 = compareFileName( aUStr, aCanURL1 );
1573*cdf0e10cSrcweir 			deleteTestFile( aCanURL1 );
1574*cdf0e10cSrcweir 
1575*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: system filename/URL filename/relative path, system directory, searched file already exist.",
1576*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError1 ) &&
1577*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError2 ) &&
1578*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError3 ) &&
1579*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError4 ) &&
1580*cdf0e10cSrcweir 									( sal_True == bOk1 ) &&
1581*cdf0e10cSrcweir 									( sal_True == bOk2 ) &&
1582*cdf0e10cSrcweir 									( sal_True == bOk3 ) &&
1583*cdf0e10cSrcweir 									( sal_True == bOk4 ) );
1584*cdf0e10cSrcweir 		}
1585*cdf0e10cSrcweir 
1586*cdf0e10cSrcweir 
1587*cdf0e10cSrcweir 		void searchFileURL_003( )
1588*cdf0e10cSrcweir 		{
1589*cdf0e10cSrcweir 			OSLTEST_DECLARE( SystemPathList,  TEST_PLATFORM_ROOT":"TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP":"TEST_PLATFORM_ROOT"system/path" );
1590*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::searchFileURL( aUserDirectoryURL, aSystemPathList, aUStr );
1591*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL );
1592*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: search directory is a list of system paths",
1593*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError1 ) &&
1594*cdf0e10cSrcweir 									( sal_True == bOk ) );
1595*cdf0e10cSrcweir 		}
1596*cdf0e10cSrcweir 
1597*cdf0e10cSrcweir 		void searchFileURL_004( )
1598*cdf0e10cSrcweir 		{
1599*cdf0e10cSrcweir 			OSLTEST_DECLARE( SystemPathList,  TEST_PLATFORM_ROOT PATH_LIST_DELIMITER TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP PATH_LIST_DELIMITER TEST_PLATFORM_ROOT "system/path/../name" );
1600*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::searchFileURL( aUserDirectoryURL, aSystemPathList, aUStr );
1601*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL );
1602*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: search directory is a list of system paths",
1603*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError1 ) &&
1604*cdf0e10cSrcweir 									( sal_True == bOk ) );
1605*cdf0e10cSrcweir 		}
1606*cdf0e10cSrcweir 
1607*cdf0e10cSrcweir 		void searchFileURL_005( )
1608*cdf0e10cSrcweir 		{
1609*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::searchFileURL( aUserDirectoryURL, aNullURL, aUStr );
1610*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL );
1611*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: search directory is NULL",
1612*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError1 ) &&
1613*cdf0e10cSrcweir 									( sal_True == bOk ) );
1614*cdf0e10cSrcweir 		}
1615*cdf0e10cSrcweir 
1616*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( searchFileURL );
1617*cdf0e10cSrcweir 		CPPUNIT_TEST( searchFileURL_001 );
1618*cdf0e10cSrcweir 		CPPUNIT_TEST( searchFileURL_002 );
1619*cdf0e10cSrcweir 		CPPUNIT_TEST( searchFileURL_003 );
1620*cdf0e10cSrcweir 		CPPUNIT_TEST( searchFileURL_004 );
1621*cdf0e10cSrcweir 		CPPUNIT_TEST( searchFileURL_005 );
1622*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1623*cdf0e10cSrcweir 	};// class searchFileURL
1624*cdf0e10cSrcweir 
1625*cdf0e10cSrcweir 
1626*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1627*cdf0e10cSrcweir 	// testing the method
1628*cdf0e10cSrcweir 	// static inline RC getTempDirURL( ::rtl::OUString& ustrTempDirURL )
1629*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1630*cdf0e10cSrcweir 	class getTempDirURL:public CppUnit::TestFixture
1631*cdf0e10cSrcweir 	{
1632*cdf0e10cSrcweir 		//::osl::FileBase aFileBase;
1633*cdf0e10cSrcweir 		::rtl::OUString aUStr;
1634*cdf0e10cSrcweir 		::osl::FileBase::RC nError;
1635*cdf0e10cSrcweir 
1636*cdf0e10cSrcweir 	    public:
1637*cdf0e10cSrcweir 		// initialization
1638*cdf0e10cSrcweir 		void setUp( )
1639*cdf0e10cSrcweir 		{
1640*cdf0e10cSrcweir 			 nError = FileBase::getTempDirURL( aUStr );
1641*cdf0e10cSrcweir 		}
1642*cdf0e10cSrcweir 
1643*cdf0e10cSrcweir 		void tearDown( )
1644*cdf0e10cSrcweir 		{
1645*cdf0e10cSrcweir 		}
1646*cdf0e10cSrcweir 
1647*cdf0e10cSrcweir 		// test code.
1648*cdf0e10cSrcweir 		void getTempDirURL_001( )
1649*cdf0e10cSrcweir 		{
1650*cdf0e10cSrcweir 
1651*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTempDirURL function: excution",
1652*cdf0e10cSrcweir 				 					( osl::FileBase::E_None == nError ) );
1653*cdf0e10cSrcweir 		}
1654*cdf0e10cSrcweir 
1655*cdf0e10cSrcweir 		void getTempDirURL_002( )
1656*cdf0e10cSrcweir 		{
1657*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTempDirURL function: test for open and write access rights",
1658*cdf0e10cSrcweir 									checkDirectory( aUStr, osl_Check_Mode_OpenAccess ) &&
1659*cdf0e10cSrcweir 									checkDirectory( aUStr, osl_Check_Mode_ReadAccess ) &&
1660*cdf0e10cSrcweir 									checkDirectory( aUStr,osl_Check_Mode_WriteAccess ) );
1661*cdf0e10cSrcweir 		}
1662*cdf0e10cSrcweir 
1663*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getTempDirURL );
1664*cdf0e10cSrcweir 		CPPUNIT_TEST( getTempDirURL_001 );
1665*cdf0e10cSrcweir 		CPPUNIT_TEST( getTempDirURL_002 );
1666*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1667*cdf0e10cSrcweir 	};// class getTempDirURL
1668*cdf0e10cSrcweir 
1669*cdf0e10cSrcweir 
1670*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1671*cdf0e10cSrcweir 	// 	testing the method
1672*cdf0e10cSrcweir 	// 	static inline RC createTempFile( ::rtl::OUString* pustrDirectoryURL,
1673*cdf0e10cSrcweir 	//									 oslFileHandle* pHandle,
1674*cdf0e10cSrcweir 	//									 ::rtl::OUString* pustrTempFileURL)
1675*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1676*cdf0e10cSrcweir 	class createTempFile:public CppUnit::TestFixture
1677*cdf0e10cSrcweir 	{
1678*cdf0e10cSrcweir 		//::osl::FileBase aFileBase;
1679*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
1680*cdf0e10cSrcweir 		sal_Bool bOK;
1681*cdf0e10cSrcweir 
1682*cdf0e10cSrcweir 		oslFileHandle	*pHandle;
1683*cdf0e10cSrcweir 		::rtl::OUString	*pUStr_DirURL;
1684*cdf0e10cSrcweir 		::rtl::OUString	*pUStr_FileURL;
1685*cdf0e10cSrcweir 
1686*cdf0e10cSrcweir 	    public:
1687*cdf0e10cSrcweir 
1688*cdf0e10cSrcweir 		// initialization
1689*cdf0e10cSrcweir 		void setUp( )
1690*cdf0e10cSrcweir 		{
1691*cdf0e10cSrcweir 			pHandle = new oslFileHandle();
1692*cdf0e10cSrcweir 			pUStr_DirURL = new ::rtl::OUString( aUserDirectoryURL );
1693*cdf0e10cSrcweir 			pUStr_FileURL = new ::rtl::OUString();
1694*cdf0e10cSrcweir 			//*pUStr_DirURL = aUserDirectoryURL;                /// create temp file in /tmp/PID or c:\temp\PID.*/
1695*cdf0e10cSrcweir 		}
1696*cdf0e10cSrcweir 
1697*cdf0e10cSrcweir 		void tearDown( )
1698*cdf0e10cSrcweir 		{
1699*cdf0e10cSrcweir 			delete pUStr_DirURL;
1700*cdf0e10cSrcweir 			delete pUStr_FileURL;
1701*cdf0e10cSrcweir 			delete pHandle;
1702*cdf0e10cSrcweir 		}
1703*cdf0e10cSrcweir 
1704*cdf0e10cSrcweir 		// test code.
1705*cdf0e10cSrcweir 		void createTempFile_001( )
1706*cdf0e10cSrcweir 		{
1707*cdf0e10cSrcweir 			nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL );
1708*cdf0e10cSrcweir 			::osl::File testFile( *pUStr_FileURL );
1709*cdf0e10cSrcweir 			//printFileName(*pUStr_FileURL);
1710*cdf0e10cSrcweir 			nError2 = testFile.open( OpenFlag_Create );
1711*cdf0e10cSrcweir 			if ( osl::FileBase::E_EXIST == nError2 )  {
1712*cdf0e10cSrcweir 				osl_closeFile( *pHandle );
1713*cdf0e10cSrcweir 				deleteTestFile( *pUStr_FileURL );
1714*cdf0e10cSrcweir 			}
1715*cdf0e10cSrcweir 
1716*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for createTempFile function: create temp file and test the existence",
1717*cdf0e10cSrcweir 				 					( osl::FileBase::E_None == nError1 ) && ( pHandle != NULL ) &&   ( osl::FileBase::E_EXIST== nError2 )   );
1718*cdf0e10cSrcweir 		}
1719*cdf0e10cSrcweir 
1720*cdf0e10cSrcweir 		void createTempFile_002( )
1721*cdf0e10cSrcweir 		{
1722*cdf0e10cSrcweir 			bOK = sal_False;
1723*cdf0e10cSrcweir 			nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL );
1724*cdf0e10cSrcweir 			::osl::File testFile( *pUStr_FileURL );
1725*cdf0e10cSrcweir 			nError2 = testFile.open( OpenFlag_Create );
1726*cdf0e10cSrcweir 
1727*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "createTempFile function: create a temp file, but it does not exist",
1728*cdf0e10cSrcweir 				( osl::FileBase::E_None == nError1 ) && ( pHandle != NULL ) &&
1729*cdf0e10cSrcweir 				( osl::FileBase::E_EXIST == nError2 ) );
1730*cdf0e10cSrcweir 
1731*cdf0e10cSrcweir 			//check file if have the write permission
1732*cdf0e10cSrcweir 			if ( osl::FileBase::E_EXIST == nError2 )  {
1733*cdf0e10cSrcweir 				bOK = ifFileCanWrite( *pUStr_FileURL );
1734*cdf0e10cSrcweir 				osl_closeFile( *pHandle );
1735*cdf0e10cSrcweir 				deleteTestFile( *pUStr_FileURL );
1736*cdf0e10cSrcweir 			}
1737*cdf0e10cSrcweir 
1738*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open and write access rights, in (W32), it did not have write access right, but it should be writtenable.",
1739*cdf0e10cSrcweir 									 ( sal_True == bOK ) );
1740*cdf0e10cSrcweir 		}
1741*cdf0e10cSrcweir 
1742*cdf0e10cSrcweir 		void createTempFile_003( )
1743*cdf0e10cSrcweir 		{
1744*cdf0e10cSrcweir 			nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, 0 );
1745*cdf0e10cSrcweir 			//the temp file will be removed when return from createTempFile
1746*cdf0e10cSrcweir 			bOK = ( pHandle != NULL && pHandle != 0);
1747*cdf0e10cSrcweir 			if ( sal_True == bOK )
1748*cdf0e10cSrcweir 				osl_closeFile( *pHandle );
1749*cdf0e10cSrcweir 
1750*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for createTempFile function: set pUStrFileURL to 0 to let it remove the file after call.",
1751*cdf0e10cSrcweir 								( ::osl::FileBase::E_None == nError1 ) &&( sal_True == bOK ) );
1752*cdf0e10cSrcweir 		}
1753*cdf0e10cSrcweir 		void createTempFile_004( )
1754*cdf0e10cSrcweir 		{
1755*cdf0e10cSrcweir 			nError1 = FileBase::createTempFile( pUStr_DirURL, 0, pUStr_FileURL );
1756*cdf0e10cSrcweir 			bOK = ( pUStr_FileURL != 0);
1757*cdf0e10cSrcweir 			::osl::File testFile( *pUStr_FileURL );
1758*cdf0e10cSrcweir 			nError2 = testFile.open( OpenFlag_Create );
1759*cdf0e10cSrcweir 			deleteTestFile( *pUStr_FileURL );
1760*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "createTempFile function: create a temp file, but it does not exist",
1761*cdf0e10cSrcweir 				( osl::FileBase::E_None == nError1 ) && ( osl::FileBase::E_EXIST == nError2 ) &&( sal_True == bOK ) );
1762*cdf0e10cSrcweir 
1763*cdf0e10cSrcweir 		}
1764*cdf0e10cSrcweir 
1765*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( createTempFile );
1766*cdf0e10cSrcweir 		CPPUNIT_TEST( createTempFile_001 );
1767*cdf0e10cSrcweir 		CPPUNIT_TEST( createTempFile_002 );
1768*cdf0e10cSrcweir 		CPPUNIT_TEST( createTempFile_003 );
1769*cdf0e10cSrcweir 		CPPUNIT_TEST( createTempFile_004 );
1770*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1771*cdf0e10cSrcweir 	};// class createTempFile
1772*cdf0e10cSrcweir 
1773*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
1774*cdf0e10cSrcweir #if 0     //~ this function has been deprecated.
1775*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getCanonicalName, "osl_FileBase" );
1776*cdf0e10cSrcweir #endif
1777*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getAbsoluteFileURL, "osl_FileBase" );
1778*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::SystemPath_FileURL, "osl_FileBase" );
1779*cdf0e10cSrcweir   //        CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getFileURLFromSystemPath, "osl_FileBase" );
1780*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::searchFileURL, "osl_FileBase" );
1781*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getTempDirURL, "osl_FileBase" );
1782*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::createTempFile, "osl_FileBase" );
1783*cdf0e10cSrcweir }// namespace osl_FileBase
1784*cdf0e10cSrcweir 
1785*cdf0e10cSrcweir 
1786*cdf0e10cSrcweir //------------------------------------------------------------------------
1787*cdf0e10cSrcweir // Beginning of the test cases for VolumeDevice class
1788*cdf0e10cSrcweir //------------------------------------------------------------------------
1789*cdf0e10cSrcweir 
1790*cdf0e10cSrcweir #if 0  //~ this Class has been deprecated
1791*cdf0e10cSrcweir namespace osl_VolumeDevice
1792*cdf0e10cSrcweir {
1793*cdf0e10cSrcweir 
1794*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1795*cdf0e10cSrcweir 	// 	testing the method
1796*cdf0e10cSrcweir 	// 	VolumeDevice() : _aHandle( NULL )
1797*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1798*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
1799*cdf0e10cSrcweir 	{
1800*cdf0e10cSrcweir 		::osl::VolumeDevice aVolumeDevice;
1801*cdf0e10cSrcweir 		::rtl::OUString aUStr;
1802*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
1803*cdf0e10cSrcweir 
1804*cdf0e10cSrcweir 	    public:
1805*cdf0e10cSrcweir 		// initialization
1806*cdf0e10cSrcweir 		void setUp( )
1807*cdf0e10cSrcweir 		{
1808*cdf0e10cSrcweir 		}
1809*cdf0e10cSrcweir 
1810*cdf0e10cSrcweir 		void tearDown( )
1811*cdf0e10cSrcweir 		{
1812*cdf0e10cSrcweir 		}
1813*cdf0e10cSrcweir 
1814*cdf0e10cSrcweir 		// test code.
1815*cdf0e10cSrcweir 		void ctors_001( )
1816*cdf0e10cSrcweir 		{
1817*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1;
1818*cdf0e10cSrcweir 
1819*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: Constructor for VolumeDevice with no args.",
1820*cdf0e10cSrcweir 				 					( osl::FileBase::E_None !=  aVolumeDevice1.automount( ) ) &&
1821*cdf0e10cSrcweir 									( osl::FileBase::E_None !=  aVolumeDevice1.unmount( ) )   &&
1822*cdf0e10cSrcweir 									( aNullURL.equals( aVolumeDevice1.getMountPath( ) ) ) );
1823*cdf0e10cSrcweir 		}
1824*cdf0e10cSrcweir 
1825*cdf0e10cSrcweir  		void ctors_002( )
1826*cdf0e10cSrcweir 		{
1827*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( VolumeInfoMask_Attributes );
1828*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aRootURL, aVolumeInfo );
1829*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1830*cdf0e10cSrcweir 
1831*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1( aVolumeInfo.getDeviceHandle( ) );
1832*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aNullURL, aVolumeDevice1.getMountPath( ) );
1833*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: Copy constructor for VolumeDevice, the copied VolumeDevice should have a mount path file:///, but it returned an empty OUString, it also may be the error from getDeviceHandle(), it did not pass in (UNX), (W32).",
1834*cdf0e10cSrcweir 									sal_False == bOk );
1835*cdf0e10cSrcweir 		}
1836*cdf0e10cSrcweir 
1837*cdf0e10cSrcweir  		void ctors_003( )
1838*cdf0e10cSrcweir 		{
1839*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( VolumeInfoMask_Attributes );
1840*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aRootURL, aVolumeInfo );
1841*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1842*cdf0e10cSrcweir 
1843*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1 = aVolumeInfo.getDeviceHandle( );
1844*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aNullURL, aVolumeDevice1.getMountPath( ) );
1845*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: Assigned operator for VolumeDevice, the assigned VolumeDevice should have a mount path file:///, but it returned an empty OUString, it also may be the error from getDeviceHandle(),it did not pass in (UNX), (W32).",
1846*cdf0e10cSrcweir 									sal_False == bOk );
1847*cdf0e10cSrcweir 		}
1848*cdf0e10cSrcweir 
1849*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
1850*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
1851*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_002 );
1852*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_003 );
1853*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1854*cdf0e10cSrcweir 	};// class ctors
1855*cdf0e10cSrcweir 
1856*cdf0e10cSrcweir 
1857*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1858*cdf0e10cSrcweir 	// 	testing the method
1859*cdf0e10cSrcweir 	// 	inline RC automount()
1860*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1861*cdf0e10cSrcweir     class  automount : public CppUnit::TestFixture
1862*cdf0e10cSrcweir 	{
1863*cdf0e10cSrcweir 		::osl::VolumeDevice aVolumeDevice;
1864*cdf0e10cSrcweir 		::rtl::OUString aUStr;
1865*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
1866*cdf0e10cSrcweir 
1867*cdf0e10cSrcweir 	    public:
1868*cdf0e10cSrcweir 		// initialization
1869*cdf0e10cSrcweir 		void setUp( )
1870*cdf0e10cSrcweir 		{
1871*cdf0e10cSrcweir 		}
1872*cdf0e10cSrcweir 
1873*cdf0e10cSrcweir 		void tearDown( )
1874*cdf0e10cSrcweir 		{
1875*cdf0e10cSrcweir 
1876*cdf0e10cSrcweir 		}
1877*cdf0e10cSrcweir 
1878*cdf0e10cSrcweir 		// test code.
1879*cdf0e10cSrcweir 		void automount_001( )
1880*cdf0e10cSrcweir 		{
1881*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1;
1882*cdf0e10cSrcweir 			nError1 = aVolumeDevice1.automount( );
1883*cdf0e10cSrcweir 
1884*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for automount function: invalid parameter.",
1885*cdf0e10cSrcweir 				 					( osl::FileBase::E_INVAL == nError1 ) );
1886*cdf0e10cSrcweir 		}
1887*cdf0e10cSrcweir 
1888*cdf0e10cSrcweir   		void automount_002( )
1889*cdf0e10cSrcweir 		{
1890*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( VolumeInfoMask_Attributes );
1891*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL2, aVolumeInfo );
1892*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1893*cdf0e10cSrcweir 
1894*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1( aVolumeInfo.getDeviceHandle( ) );
1895*cdf0e10cSrcweir       		nError1 = aVolumeDevice1.unmount( );
1896*cdf0e10cSrcweir       		nError1 = aVolumeDevice1.automount( );
1897*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for automount function: this test is not implemented yet, it did not pass in (UNX), (W32).",
1898*cdf0e10cSrcweir 									( osl::FileBase::E_None == nError1 ) );
1899*cdf0e10cSrcweir 		}
1900*cdf0e10cSrcweir 
1901*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( automount );
1902*cdf0e10cSrcweir 		CPPUNIT_TEST( automount_001 );
1903*cdf0e10cSrcweir 		CPPUNIT_TEST( automount_002 );
1904*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
1905*cdf0e10cSrcweir 	};// class automount
1906*cdf0e10cSrcweir 
1907*cdf0e10cSrcweir 
1908*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
1909*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeDevice::ctors, "osl_VolumeDevice" );
1910*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeDevice::automount, "osl_VolumeDevice" );
1911*cdf0e10cSrcweir }// namespace osl_VolumeDevice
1912*cdf0e10cSrcweir #endif
1913*cdf0e10cSrcweir 
1914*cdf0e10cSrcweir 
1915*cdf0e10cSrcweir //------------------------------------------------------------------------
1916*cdf0e10cSrcweir // Beginning of the test cases for VolumeInfo class
1917*cdf0e10cSrcweir //------------------------------------------------------------------------
1918*cdf0e10cSrcweir namespace osl_VolumeInfo
1919*cdf0e10cSrcweir {
1920*cdf0e10cSrcweir 
1921*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1922*cdf0e10cSrcweir 	// 	testing the method
1923*cdf0e10cSrcweir 	// 	VolumeInfo( sal_uInt32 nMask ): _nMask( nMask )
1924*cdf0e10cSrcweir 	//---------------------------------------------------------------------
1925*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
1926*cdf0e10cSrcweir 	{
1927*cdf0e10cSrcweir 		::rtl::OUString aUStr;
1928*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
1929*cdf0e10cSrcweir 
1930*cdf0e10cSrcweir  		::osl::VolumeDevice aVolumeDevice1;
1931*cdf0e10cSrcweir 
1932*cdf0e10cSrcweir 	    public:
1933*cdf0e10cSrcweir 		// initialization
1934*cdf0e10cSrcweir 		void setUp( )
1935*cdf0e10cSrcweir 		{
1936*cdf0e10cSrcweir 		}
1937*cdf0e10cSrcweir 
1938*cdf0e10cSrcweir 		void tearDown( )
1939*cdf0e10cSrcweir 		{
1940*cdf0e10cSrcweir 		}
1941*cdf0e10cSrcweir 
1942*cdf0e10cSrcweir 		// test code.
1943*cdf0e10cSrcweir 		void ctors_001( )
1944*cdf0e10cSrcweir 		{
1945*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( 0 );
1946*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aRootURL, aVolumeInfo );
1947*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1948*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace = aVolumeInfo.getTotalSpace( );
1949*cdf0e10cSrcweir 			sal_uInt32 uiMaxPathLength = aVolumeInfo.getMaxPathLength( );
1950*cdf0e10cSrcweir 			aUStr = aVolumeInfo.getFileSystemName( );
1951*cdf0e10cSrcweir 
1952*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is empty",
1953*cdf0e10cSrcweir 				 					( 0 == uiTotalSpace ) &&
1954*cdf0e10cSrcweir 									( 0 == uiMaxPathLength ) &&
1955*cdf0e10cSrcweir 									sal_True == compareFileName( aUStr, aNullURL ) );
1956*cdf0e10cSrcweir 		}
1957*cdf0e10cSrcweir 
1958*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
1959*cdf0e10cSrcweir 		void ctors_002( )
1960*cdf0e10cSrcweir 		{
1961*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( VolumeInfoMask_TotalSpace |
1962*cdf0e10cSrcweir 											 VolumeInfoMask_UsedSpace |
1963*cdf0e10cSrcweir 											 VolumeInfoMask_FileSystemName );
1964*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL4, aVolumeInfo );
1965*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1966*cdf0e10cSrcweir 			//CPPUNIT_ASSERT( aVolumeInfo.isValid( mask ) );
1967*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace = aVolumeInfo.getTotalSpace( );
1968*cdf0e10cSrcweir 			sal_uInt64 uiUsedSpace = aVolumeInfo.getUsedSpace( );
1969*cdf0e10cSrcweir 			aUStr = aVolumeInfo.getFileSystemName( );
1970*cdf0e10cSrcweir 
1971*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is specified as certain valid fields, and get the masked fields",
1972*cdf0e10cSrcweir 				 					( 0 != uiTotalSpace ) &&
1973*cdf0e10cSrcweir 									( 0 != uiUsedSpace ) &&
1974*cdf0e10cSrcweir 									sal_True == compareFileName( aUStr, "nfs" ) );
1975*cdf0e10cSrcweir 		}
1976*cdf0e10cSrcweir #else           /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
1977*cdf0e10cSrcweir 		void ctors_002( )
1978*cdf0e10cSrcweir 		{
1979*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is specified as certain valid fields, and get the masked fields( Windows version )",
1980*cdf0e10cSrcweir 				 					1 == 1 );
1981*cdf0e10cSrcweir 		}
1982*cdf0e10cSrcweir #endif
1983*cdf0e10cSrcweir 
1984*cdf0e10cSrcweir 		void ctors_003( )
1985*cdf0e10cSrcweir 		{
1986*cdf0e10cSrcweir 
1987*cdf0e10cSrcweir  			sal_Int32 mask1 = VolumeInfoMask_FreeSpace;
1988*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo1( mask1 );
1989*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aRootURL, aVolumeInfo1 );
1990*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo1.isValid( mask1 ) );
1991*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
1992*cdf0e10cSrcweir 
1993*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace1 = aVolumeInfo1.getTotalSpace( );
1994*cdf0e10cSrcweir 			aUStr = aVolumeInfo1.getFileSystemName( );
1995*cdf0e10cSrcweir 
1996*cdf0e10cSrcweir  			sal_Int32 mask2 = VolumeInfoMask_TotalSpace;
1997*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo2( mask2 );
1998*cdf0e10cSrcweir 			nError2 = ::osl::Directory::getVolumeInfo( aRootURL, aVolumeInfo2 );
1999*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo2.isValid( mask2 ) );
2000*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError2 );
2001*cdf0e10cSrcweir 
2002*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace2 = aVolumeInfo2.getTotalSpace( );
2003*cdf0e10cSrcweir 
2004*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is specified as certain valid fields, but get unmasked fields, use mask to FreeSpace, but I can get TotalSpace, did not pass in (UNX)(W32)",
2005*cdf0e10cSrcweir 				 					( 0 == uiTotalSpace1 ) && ( 0 != uiTotalSpace2 ) &&
2006*cdf0e10cSrcweir 									sal_True == compareFileName( aUStr, aNullURL ) );
2007*cdf0e10cSrcweir 		}
2008*cdf0e10cSrcweir 
2009*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
2010*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
2011*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_002 );
2012*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_003 );
2013*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2014*cdf0e10cSrcweir 	};// class ctors
2015*cdf0e10cSrcweir 
2016*cdf0e10cSrcweir 
2017*cdf0e10cSrcweir  	//---------------------------------------------------------------------
2018*cdf0e10cSrcweir 	// 	testing the method
2019*cdf0e10cSrcweir 	// 	inline sal_Bool isValid( sal_uInt32 nMask ) const
2020*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2021*cdf0e10cSrcweir     class  isValid : public CppUnit::TestFixture
2022*cdf0e10cSrcweir 	{
2023*cdf0e10cSrcweir 		::osl::VolumeDevice aVolumeDevice;
2024*cdf0e10cSrcweir 		::rtl::OUString aUStr;
2025*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
2026*cdf0e10cSrcweir 
2027*cdf0e10cSrcweir 	    public:
2028*cdf0e10cSrcweir 		// initialization
2029*cdf0e10cSrcweir 		void setUp( )
2030*cdf0e10cSrcweir 		{
2031*cdf0e10cSrcweir 		}
2032*cdf0e10cSrcweir 
2033*cdf0e10cSrcweir 		void tearDown( )
2034*cdf0e10cSrcweir 		{
2035*cdf0e10cSrcweir 
2036*cdf0e10cSrcweir 		}
2037*cdf0e10cSrcweir 
2038*cdf0e10cSrcweir 		// test code.
2039*cdf0e10cSrcweir 		void isValid_001( )
2040*cdf0e10cSrcweir 		{
2041*cdf0e10cSrcweir 			sal_Int32 mask = 0;
2042*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2043*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL4, aVolumeInfo );
2044*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2045*cdf0e10cSrcweir 
2046*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isValid function: no fields specified.",
2047*cdf0e10cSrcweir 				 					 sal_True == aVolumeInfo.isValid( mask ) );
2048*cdf0e10cSrcweir 		}
2049*cdf0e10cSrcweir 
2050*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
2051*cdf0e10cSrcweir   		void isValid_002( )
2052*cdf0e10cSrcweir 		{
2053*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes | VolumeInfoMask_TotalSpace | osl_VolumeInfo_Mask_UsedSpace |
2054*cdf0e10cSrcweir 							 osl_VolumeInfo_Mask_FreeSpace | osl_VolumeInfo_Mask_MaxNameLength |
2055*cdf0e10cSrcweir 							 osl_VolumeInfo_Mask_MaxPathLength | osl_VolumeInfo_Mask_FileSystemName;
2056*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2057*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL4, aVolumeInfo );
2058*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2059*cdf0e10cSrcweir 
2060*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isValid function: all valid fields specified for a nfs volume.",
2061*cdf0e10cSrcweir 				 					sal_True == aVolumeInfo.isValid( mask ) );
2062*cdf0e10cSrcweir 		}
2063*cdf0e10cSrcweir #else           /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
2064*cdf0e10cSrcweir 		void isValid_002( )
2065*cdf0e10cSrcweir 		{
2066*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isValid function: all valid fields specified for a nfs volume.( Windows version )",
2067*cdf0e10cSrcweir 				 					1 == 1 );
2068*cdf0e10cSrcweir 		}
2069*cdf0e10cSrcweir #endif
2070*cdf0e10cSrcweir 
2071*cdf0e10cSrcweir  		void isValid_003( )
2072*cdf0e10cSrcweir 		{
2073*cdf0e10cSrcweir  			::osl::VolumeDevice aVolumeDevice1;
2074*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2075*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( mask );
2076*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2077*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2078*cdf0e10cSrcweir 			sal_Bool bOk1 = aVolumeInfo.isValid( mask );
2079*cdf0e10cSrcweir 
2080*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL2, aVolumeInfo );
2081*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2082*cdf0e10cSrcweir 			sal_Bool bOk2 = aVolumeInfo.isValid( mask );
2083*cdf0e10cSrcweir 
2084*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isValid function: VolumeInfoMask_Attributes, it should be valid for some volume such as /, floppy, cdrom, etc. but it did not pass",
2085*cdf0e10cSrcweir 				 					( sal_True == bOk1 ) && ( sal_True == bOk2 ) );
2086*cdf0e10cSrcweir 		}
2087*cdf0e10cSrcweir 
2088*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( isValid );
2089*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_001 );
2090*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_002 );
2091*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_003 );
2092*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2093*cdf0e10cSrcweir 	};// class isValid
2094*cdf0e10cSrcweir 
2095*cdf0e10cSrcweir  	//---------------------------------------------------------------------
2096*cdf0e10cSrcweir 	// 	testing the method
2097*cdf0e10cSrcweir 	// 	inline sal_Bool getRemoteFlag() const
2098*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2099*cdf0e10cSrcweir     class  getRemoteFlag : public CppUnit::TestFixture
2100*cdf0e10cSrcweir 	{
2101*cdf0e10cSrcweir 		::osl::VolumeDevice aVolumeDevice;
2102*cdf0e10cSrcweir 		::rtl::OUString aUStr;
2103*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
2104*cdf0e10cSrcweir 
2105*cdf0e10cSrcweir 	    public:
2106*cdf0e10cSrcweir 		// test code.
2107*cdf0e10cSrcweir 		void getRemoteFlag_001( )
2108*cdf0e10cSrcweir 		{
2109*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2110*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2111*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2112*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2113*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRemoteFlag( );
2114*cdf0e10cSrcweir 
2115*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRemoteFlag function: get a volume device which is not remote.",
2116*cdf0e10cSrcweir 				 					( sal_False == bOk ) );
2117*cdf0e10cSrcweir 		}
2118*cdf0e10cSrcweir 
2119*cdf0e10cSrcweir  #if ( defined UNX ) || ( defined OS2 )	//remote Volume is different in Solaris and Windows
2120*cdf0e10cSrcweir 		void getRemoteFlag_002( )
2121*cdf0e10cSrcweir 		{
2122*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2123*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2124*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL4, aVolumeInfo );
2125*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2126*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRemoteFlag( );
2127*cdf0e10cSrcweir 
2128*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRemoteFlag function: get a volume device which is remote( Solaris version ).",
2129*cdf0e10cSrcweir 				 					( sal_True == bOk ) );
2130*cdf0e10cSrcweir 		}
2131*cdf0e10cSrcweir #else                                    //Windows version
2132*cdf0e10cSrcweir 		void getRemoteFlag_002( )
2133*cdf0e10cSrcweir 		{
2134*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRemoteFlag function: get a volume device which is remote( Windows version )",
2135*cdf0e10cSrcweir 				 					1 == 1 );
2136*cdf0e10cSrcweir 		}
2137*cdf0e10cSrcweir #endif
2138*cdf0e10cSrcweir 
2139*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getRemoteFlag );
2140*cdf0e10cSrcweir 		CPPUNIT_TEST( getRemoteFlag_001 );
2141*cdf0e10cSrcweir 		CPPUNIT_TEST( getRemoteFlag_002 );
2142*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2143*cdf0e10cSrcweir 	};// class getRemoteFlag
2144*cdf0e10cSrcweir 
2145*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2146*cdf0e10cSrcweir 	// 	testing the method
2147*cdf0e10cSrcweir 	// 	inline sal_Bool getRemoveableFlag() const
2148*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2149*cdf0e10cSrcweir     class  getRemoveableFlag : public CppUnit::TestFixture
2150*cdf0e10cSrcweir 	{
2151*cdf0e10cSrcweir 		::osl::FileBase::RC nError1, nError2;
2152*cdf0e10cSrcweir 
2153*cdf0e10cSrcweir 	    public:
2154*cdf0e10cSrcweir 		// test code.
2155*cdf0e10cSrcweir 		void getRemoveableFlag_001( )
2156*cdf0e10cSrcweir 		{
2157*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2158*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2159*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2160*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2161*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRemoveableFlag( );
2162*cdf0e10cSrcweir 
2163*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRemoveableFlag function: get a volume device which is not removable.",
2164*cdf0e10cSrcweir 				 					sal_False == bOk );
2165*cdf0e10cSrcweir 		}
2166*cdf0e10cSrcweir 
2167*cdf0e10cSrcweir 		void getRemoveableFlag_002( )
2168*cdf0e10cSrcweir 		{
2169*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2170*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2171*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL2, aVolumeInfo );
2172*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2173*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRemoveableFlag( );
2174*cdf0e10cSrcweir 
2175*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRemoveableFlag function: get a volume device which is removable, not sure, here we use floppy disk, but it did not pass.",
2176*cdf0e10cSrcweir 				 					sal_True == bOk );
2177*cdf0e10cSrcweir 		}
2178*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getRemoveableFlag );
2179*cdf0e10cSrcweir 		CPPUNIT_TEST( getRemoveableFlag_001 );
2180*cdf0e10cSrcweir 		CPPUNIT_TEST( getRemoveableFlag_002 );
2181*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2182*cdf0e10cSrcweir 	};// class getRemoveableFlag
2183*cdf0e10cSrcweir 
2184*cdf0e10cSrcweir 
2185*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2186*cdf0e10cSrcweir 	// 	testing the method
2187*cdf0e10cSrcweir 	// 	inline sal_Bool getCompactDiscFlag() const
2188*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2189*cdf0e10cSrcweir     class  getCompactDiscFlag : public CppUnit::TestFixture
2190*cdf0e10cSrcweir 	{
2191*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2192*cdf0e10cSrcweir 
2193*cdf0e10cSrcweir 	    public:
2194*cdf0e10cSrcweir 		// test code.
2195*cdf0e10cSrcweir 		void getCompactDiscFlag_001( )
2196*cdf0e10cSrcweir 		{
2197*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2198*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2199*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2200*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2201*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getCompactDiscFlag( );
2202*cdf0e10cSrcweir 
2203*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getCompactDiscFlag function: get a volume device which is not a cdrom.",
2204*cdf0e10cSrcweir 				 					 ( sal_False == bOk ) );
2205*cdf0e10cSrcweir 		}
2206*cdf0e10cSrcweir 
2207*cdf0e10cSrcweir 		void getCompactDiscFlag_002( )
2208*cdf0e10cSrcweir 		{
2209*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_Attributes;
2210*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2211*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL6, aVolumeInfo );
2212*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2213*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getCompactDiscFlag( );
2214*cdf0e10cSrcweir 
2215*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getCompactDiscFlag function: get a cdrom volume device flag, it did not pass.",
2216*cdf0e10cSrcweir 				 					 ( sal_True == bOk ) );
2217*cdf0e10cSrcweir 		}
2218*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getCompactDiscFlag );
2219*cdf0e10cSrcweir 		CPPUNIT_TEST( getCompactDiscFlag_001 );
2220*cdf0e10cSrcweir 		CPPUNIT_TEST( getCompactDiscFlag_002 );
2221*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2222*cdf0e10cSrcweir 	};// class getCompactDiscFlag
2223*cdf0e10cSrcweir 
2224*cdf0e10cSrcweir 
2225*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2226*cdf0e10cSrcweir 	// 	testing the method
2227*cdf0e10cSrcweir 	// 	inline sal_Bool getFloppyDiskFlag() const
2228*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2229*cdf0e10cSrcweir     class  getFloppyDiskFlag : public CppUnit::TestFixture
2230*cdf0e10cSrcweir 	{
2231*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2232*cdf0e10cSrcweir 
2233*cdf0e10cSrcweir 	    public:
2234*cdf0e10cSrcweir 		// test code.
2235*cdf0e10cSrcweir 		void getFloppyDiskFlag_001( )
2236*cdf0e10cSrcweir 		{
2237*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2238*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2239*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2240*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2241*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getFloppyDiskFlag( );
2242*cdf0e10cSrcweir 
2243*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFloppyDiskFlag function: get a volume device which is not a floppy disk.",
2244*cdf0e10cSrcweir 				 					 ( sal_False == bOk ) );
2245*cdf0e10cSrcweir 		}
2246*cdf0e10cSrcweir 
2247*cdf0e10cSrcweir 		void getFloppyDiskFlag_002( )
2248*cdf0e10cSrcweir 		{
2249*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_Attributes;
2250*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2251*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL2, aVolumeInfo );
2252*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2253*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getFloppyDiskFlag( );
2254*cdf0e10cSrcweir 
2255*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFloppyDiskFlag function: get a floppy volume device flag, it did not pass.",
2256*cdf0e10cSrcweir 				 					 ( sal_True == bOk ) );
2257*cdf0e10cSrcweir 		}
2258*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFloppyDiskFlag );
2259*cdf0e10cSrcweir 		CPPUNIT_TEST( getFloppyDiskFlag_001 );
2260*cdf0e10cSrcweir 		CPPUNIT_TEST( getFloppyDiskFlag_002 );
2261*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2262*cdf0e10cSrcweir 	};// class getFloppyDiskFlag
2263*cdf0e10cSrcweir 
2264*cdf0e10cSrcweir 
2265*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2266*cdf0e10cSrcweir 	// 	testing the method
2267*cdf0e10cSrcweir 	// 	inline sal_Bool getFixedDiskFlag() const
2268*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2269*cdf0e10cSrcweir     class  getFixedDiskFlag : public CppUnit::TestFixture
2270*cdf0e10cSrcweir 	{
2271*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2272*cdf0e10cSrcweir 
2273*cdf0e10cSrcweir 	    public:
2274*cdf0e10cSrcweir 		// test code.
2275*cdf0e10cSrcweir 		void getFixedDiskFlag_001( )
2276*cdf0e10cSrcweir 		{
2277*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2278*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2279*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL2, aVolumeInfo );
2280*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2281*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getFixedDiskFlag( );
2282*cdf0e10cSrcweir 
2283*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFixedDiskFlag function: get a volume device which is not a fixed disk.",
2284*cdf0e10cSrcweir 				 					( sal_False == bOk ) );
2285*cdf0e10cSrcweir 		}
2286*cdf0e10cSrcweir 
2287*cdf0e10cSrcweir 		void getFixedDiskFlag_002( )
2288*cdf0e10cSrcweir 		{
2289*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_Attributes;
2290*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2291*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2292*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2293*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getFixedDiskFlag( );
2294*cdf0e10cSrcweir 
2295*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFixedDiskFlag function: get a fixed disk volume device flag, it did not pass.",
2296*cdf0e10cSrcweir 				 					( sal_True == bOk ) );
2297*cdf0e10cSrcweir 		}
2298*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFixedDiskFlag );
2299*cdf0e10cSrcweir 		CPPUNIT_TEST( getFixedDiskFlag_001 );
2300*cdf0e10cSrcweir 		CPPUNIT_TEST( getFixedDiskFlag_002 );
2301*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2302*cdf0e10cSrcweir 	};// class getFixedDiskFlag
2303*cdf0e10cSrcweir 
2304*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2305*cdf0e10cSrcweir 	// 	testing the method
2306*cdf0e10cSrcweir 	// 	inline sal_Bool getRAMDiskFlag() const
2307*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2308*cdf0e10cSrcweir     class  getRAMDiskFlag : public CppUnit::TestFixture
2309*cdf0e10cSrcweir 	{
2310*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2311*cdf0e10cSrcweir 
2312*cdf0e10cSrcweir 	    public:
2313*cdf0e10cSrcweir 		// test code.
2314*cdf0e10cSrcweir 		void getRAMDiskFlag_001( )
2315*cdf0e10cSrcweir 		{
2316*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
2317*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2318*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2319*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2320*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRAMDiskFlag( );
2321*cdf0e10cSrcweir 
2322*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRAMDiskFlag function: get a volume device which is not a RAM disk.",
2323*cdf0e10cSrcweir 				 					( sal_False == bOk ) );
2324*cdf0e10cSrcweir 		}
2325*cdf0e10cSrcweir 
2326*cdf0e10cSrcweir 		void getRAMDiskFlag_002( )
2327*cdf0e10cSrcweir 		{
2328*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_Attributes;
2329*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2330*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2331*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2332*cdf0e10cSrcweir 			sal_Bool bOk = aVolumeInfo.getRAMDiskFlag( );
2333*cdf0e10cSrcweir 
2334*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getRAMDiskFlag function: FIX ME, don't know how to get a RAM disk flag, perhaps Windows 98 boot disk can create a RAM disk, it did not pass in (UNX)(W32).",
2335*cdf0e10cSrcweir 				 					( sal_True == bOk ) );
2336*cdf0e10cSrcweir 		}
2337*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getRAMDiskFlag );
2338*cdf0e10cSrcweir 		CPPUNIT_TEST( getRAMDiskFlag_001 );
2339*cdf0e10cSrcweir 		CPPUNIT_TEST( getRAMDiskFlag_002 );
2340*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2341*cdf0e10cSrcweir 	};// class getRAMDiskFlag
2342*cdf0e10cSrcweir 
2343*cdf0e10cSrcweir 
2344*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2345*cdf0e10cSrcweir 	// 	testing the method
2346*cdf0e10cSrcweir 	// 	inline sal_uInt64 getTotalSpace() const
2347*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2348*cdf0e10cSrcweir     class  getTotalSpace : public CppUnit::TestFixture
2349*cdf0e10cSrcweir 	{
2350*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2351*cdf0e10cSrcweir 
2352*cdf0e10cSrcweir 	    public:
2353*cdf0e10cSrcweir 		// test code.
2354*cdf0e10cSrcweir 		void getTotalSpace_001( )
2355*cdf0e10cSrcweir 		{
2356*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_TotalSpace;
2357*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2358*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2359*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2360*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2361*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace = aVolumeInfo.getTotalSpace( );
2362*cdf0e10cSrcweir 
2363*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function: get total space of Fixed disk volume mounted on /, it should not be 0",
2364*cdf0e10cSrcweir 				 					0 != uiTotalSpace );
2365*cdf0e10cSrcweir 		}
2366*cdf0e10cSrcweir 
2367*cdf0e10cSrcweir  #if defined( UNX )
2368*cdf0e10cSrcweir 		void getTotalSpace_002( )
2369*cdf0e10cSrcweir 		{
2370*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_TotalSpace;
2371*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2372*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL3, aVolumeInfo );
2373*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2374*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2375*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace = aVolumeInfo.getTotalSpace( );
2376*cdf0e10cSrcweir 
2377*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function: get total space of /proc, it should be 0",
2378*cdf0e10cSrcweir 				 					0 == uiTotalSpace );
2379*cdf0e10cSrcweir 		}
2380*cdf0e10cSrcweir #else           /// Windows version, in Windows, there is no /proc directory
2381*cdf0e10cSrcweir 		void getTotalSpace_002( )
2382*cdf0e10cSrcweir 		{
2383*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function:not applicable for /proc( Windows version )",
2384*cdf0e10cSrcweir 				 					1 == 1 );
2385*cdf0e10cSrcweir 		}
2386*cdf0e10cSrcweir #endif
2387*cdf0e10cSrcweir 
2388*cdf0e10cSrcweir 
2389*cdf0e10cSrcweir 
2390*cdf0e10cSrcweir #if defined(SOLARIS)
2391*cdf0e10cSrcweir  		void getTotalSpace_003( )
2392*cdf0e10cSrcweir 		{
2393*cdf0e10cSrcweir  			struct statvfs aStatFS;
2394*cdf0e10cSrcweir 			static const sal_Char  name[] = "/";
2395*cdf0e10cSrcweir 
2396*cdf0e10cSrcweir 			memset (&aStatFS, 0, sizeof(aStatFS));
2397*cdf0e10cSrcweir 			statvfs( name, &aStatFS);
2398*cdf0e10cSrcweir 			sal_uInt64 TotalSpace = aStatFS.f_frsize * aStatFS.f_blocks ;
2399*cdf0e10cSrcweir 
2400*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_TotalSpace;
2401*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2402*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2403*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2404*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2405*cdf0e10cSrcweir 			sal_uInt64 uiTotalSpace = aVolumeInfo.getTotalSpace( );
2406*cdf0e10cSrcweir 
2407*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function: get total space by hand, then compare with getTotalSpace, it did not pass",
2408*cdf0e10cSrcweir 				 					uiTotalSpace == TotalSpace );
2409*cdf0e10cSrcweir 		}
2410*cdf0e10cSrcweir #else           /// Windows version
2411*cdf0e10cSrcweir 		void getTotalSpace_003( )
2412*cdf0e10cSrcweir 		{
2413*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function:not implemented yet( Windows version )",
2414*cdf0e10cSrcweir 				 					1 == 1 );
2415*cdf0e10cSrcweir 		}
2416*cdf0e10cSrcweir #endif
2417*cdf0e10cSrcweir 
2418*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getTotalSpace );
2419*cdf0e10cSrcweir 		CPPUNIT_TEST( getTotalSpace_001 );
2420*cdf0e10cSrcweir 		CPPUNIT_TEST( getTotalSpace_002 );
2421*cdf0e10cSrcweir 		CPPUNIT_TEST( getTotalSpace_003 );
2422*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2423*cdf0e10cSrcweir 	};// class getTotalSpace
2424*cdf0e10cSrcweir 
2425*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2426*cdf0e10cSrcweir 	// 	testing the method
2427*cdf0e10cSrcweir 	// 	inline sal_uInt64 getFreeSpace() const
2428*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2429*cdf0e10cSrcweir     class  getFreeSpace : public CppUnit::TestFixture
2430*cdf0e10cSrcweir 	{
2431*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2432*cdf0e10cSrcweir 
2433*cdf0e10cSrcweir 	    public:
2434*cdf0e10cSrcweir 		// test code.
2435*cdf0e10cSrcweir 		void getFreeSpace_001( )
2436*cdf0e10cSrcweir 		{
2437*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FreeSpace;
2438*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2439*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2440*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2441*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2442*cdf0e10cSrcweir 			sal_uInt64 uiFreeSpace = aVolumeInfo.getFreeSpace( );
2443*cdf0e10cSrcweir 
2444*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: get free space of Fixed disk volume mounted on /, it should not be 0, suggestion: returned value, -1 is better, since some times the free space may be 0",
2445*cdf0e10cSrcweir 				 					0 != uiFreeSpace );
2446*cdf0e10cSrcweir 		}
2447*cdf0e10cSrcweir 
2448*cdf0e10cSrcweir #if defined( UNX )
2449*cdf0e10cSrcweir   		void getFreeSpace_002( )
2450*cdf0e10cSrcweir 		{
2451*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_FreeSpace;
2452*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2453*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL3, aVolumeInfo );
2454*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2455*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2456*cdf0e10cSrcweir 			sal_uInt64 uiFreeSpace = aVolumeInfo.getFreeSpace( );
2457*cdf0e10cSrcweir 
2458*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: get free space of /proc, it should be 0",
2459*cdf0e10cSrcweir 				 					0 == uiFreeSpace );
2460*cdf0e10cSrcweir 		}
2461*cdf0e10cSrcweir #else           /// Windows version, in Windows, there is no /proc directory
2462*cdf0e10cSrcweir 		void getFreeSpace_002( )
2463*cdf0e10cSrcweir 		{
2464*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: not applicable for /proc( Windows version )",
2465*cdf0e10cSrcweir 				 					1 == 1 );
2466*cdf0e10cSrcweir 		}
2467*cdf0e10cSrcweir #endif
2468*cdf0e10cSrcweir 
2469*cdf0e10cSrcweir 
2470*cdf0e10cSrcweir #if defined(SOLARIS)
2471*cdf0e10cSrcweir  		void getFreeSpace_003( )
2472*cdf0e10cSrcweir 		{
2473*cdf0e10cSrcweir  			struct statvfs aStatFS;
2474*cdf0e10cSrcweir 			static const sal_Char  name[] = "/";
2475*cdf0e10cSrcweir 
2476*cdf0e10cSrcweir 			memset (&aStatFS, 0, sizeof(aStatFS));
2477*cdf0e10cSrcweir 			statvfs( name, &aStatFS);
2478*cdf0e10cSrcweir 			sal_uInt64 FreeSpace = aStatFS.f_bfree * aStatFS.f_frsize  ;
2479*cdf0e10cSrcweir 
2480*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_FreeSpace;
2481*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2482*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2483*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2484*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2485*cdf0e10cSrcweir 			sal_uInt64 uiFreeSpace = aVolumeInfo.getFreeSpace( );
2486*cdf0e10cSrcweir 
2487*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: get free space by hand, then compare with getFreeSpace, it did not pass",
2488*cdf0e10cSrcweir 				 					uiFreeSpace == FreeSpace );
2489*cdf0e10cSrcweir 		}
2490*cdf0e10cSrcweir #else                                    //Windows version
2491*cdf0e10cSrcweir 		void getFreeSpace_003( )
2492*cdf0e10cSrcweir 		{
2493*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: not implemented yet( Windows version )",
2494*cdf0e10cSrcweir 				 					1 == 1 );
2495*cdf0e10cSrcweir 		}
2496*cdf0e10cSrcweir #endif
2497*cdf0e10cSrcweir 
2498*cdf0e10cSrcweir 
2499*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFreeSpace );
2500*cdf0e10cSrcweir 		CPPUNIT_TEST( getFreeSpace_001 );
2501*cdf0e10cSrcweir  		CPPUNIT_TEST( getFreeSpace_002 );
2502*cdf0e10cSrcweir 		CPPUNIT_TEST( getFreeSpace_003 );
2503*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2504*cdf0e10cSrcweir 	};// class getFreeSpace
2505*cdf0e10cSrcweir 
2506*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2507*cdf0e10cSrcweir 	// 	testing the method
2508*cdf0e10cSrcweir 	// 	inline sal_uInt64 getUsedSpace() const
2509*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2510*cdf0e10cSrcweir     class  getUsedSpace : public CppUnit::TestFixture
2511*cdf0e10cSrcweir 	{
2512*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2513*cdf0e10cSrcweir 
2514*cdf0e10cSrcweir 	    public:
2515*cdf0e10cSrcweir 		// test code.
2516*cdf0e10cSrcweir 		void getUsedSpace_001( )
2517*cdf0e10cSrcweir 		{
2518*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_UsedSpace;
2519*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2520*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2521*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2522*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2523*cdf0e10cSrcweir 			sal_uInt64 uiUsedSpace = aVolumeInfo.getUsedSpace( );
2524*cdf0e10cSrcweir 
2525*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getUsedSpace function: get used space of Fixed disk volume mounted on /, it should not be 0, suggestion: returned value, -1 is better, since some times the used space may be 0",
2526*cdf0e10cSrcweir 				 					0 != uiUsedSpace );
2527*cdf0e10cSrcweir 		}
2528*cdf0e10cSrcweir 
2529*cdf0e10cSrcweir #if defined( UNX )
2530*cdf0e10cSrcweir    		void getUsedSpace_002( )
2531*cdf0e10cSrcweir 		{
2532*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_UsedSpace;
2533*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2534*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL3, aVolumeInfo );
2535*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2536*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2537*cdf0e10cSrcweir 			sal_uInt64 uiUsedSpace = aVolumeInfo.getUsedSpace( );
2538*cdf0e10cSrcweir 
2539*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getUsedSpace function: get used space of /proc, it should be 0",
2540*cdf0e10cSrcweir 				 					0 == uiUsedSpace );
2541*cdf0e10cSrcweir 		}
2542*cdf0e10cSrcweir #else                                    /// Windows version, in Windows, there is no /proc directory
2543*cdf0e10cSrcweir 		void getUsedSpace_002( )
2544*cdf0e10cSrcweir 		{
2545*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getUsedSpace function: not applicable for /proc( Windows version )",
2546*cdf0e10cSrcweir 				 					1 == 1 );
2547*cdf0e10cSrcweir 		}
2548*cdf0e10cSrcweir #endif
2549*cdf0e10cSrcweir 
2550*cdf0e10cSrcweir 
2551*cdf0e10cSrcweir #if defined(SOLARIS)
2552*cdf0e10cSrcweir  		void getUsedSpace_003( )
2553*cdf0e10cSrcweir 		{
2554*cdf0e10cSrcweir  			struct statvfs aStatFS;
2555*cdf0e10cSrcweir 			static const sal_Char  name[] = "/";
2556*cdf0e10cSrcweir 
2557*cdf0e10cSrcweir 			memset (&aStatFS, 0, sizeof(aStatFS));
2558*cdf0e10cSrcweir 			statvfs( name, &aStatFS);
2559*cdf0e10cSrcweir 			sal_uInt64 UsedSpace = ( aStatFS.f_blocks - aStatFS.f_bavail ) * aStatFS.f_frsize;
2560*cdf0e10cSrcweir 
2561*cdf0e10cSrcweir 
2562*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_UsedSpace;
2563*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2564*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2565*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2566*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2567*cdf0e10cSrcweir 			sal_uInt64 uiUsedSpace = aVolumeInfo.getUsedSpace( );
2568*cdf0e10cSrcweir 
2569*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getUsedSpace function: get used space by hand, then compare with getUsedSpace, it did not pass",
2570*cdf0e10cSrcweir 				 					uiUsedSpace == UsedSpace );
2571*cdf0e10cSrcweir 		}
2572*cdf0e10cSrcweir #else                                    //Windows version
2573*cdf0e10cSrcweir 		void getUsedSpace_003( )
2574*cdf0e10cSrcweir 		{
2575*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getUsedSpace function: not implemented yet( Windows version )",
2576*cdf0e10cSrcweir 				 					1 == 1 );
2577*cdf0e10cSrcweir 		}
2578*cdf0e10cSrcweir #endif
2579*cdf0e10cSrcweir 
2580*cdf0e10cSrcweir 
2581*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getUsedSpace );
2582*cdf0e10cSrcweir  		CPPUNIT_TEST( getUsedSpace_001 );
2583*cdf0e10cSrcweir  		CPPUNIT_TEST( getUsedSpace_002 );
2584*cdf0e10cSrcweir 		CPPUNIT_TEST( getUsedSpace_003 );
2585*cdf0e10cSrcweir  		CPPUNIT_TEST_SUITE_END( );
2586*cdf0e10cSrcweir 	};// class getUsedSpace
2587*cdf0e10cSrcweir 
2588*cdf0e10cSrcweir 
2589*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2590*cdf0e10cSrcweir 	// 	testing the method
2591*cdf0e10cSrcweir 	// 	inline sal_uInt32 getMaxNameLength() const
2592*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2593*cdf0e10cSrcweir     class  getMaxNameLength : public CppUnit::TestFixture
2594*cdf0e10cSrcweir 	{
2595*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2596*cdf0e10cSrcweir 
2597*cdf0e10cSrcweir 	    public:
2598*cdf0e10cSrcweir 		// test code.
2599*cdf0e10cSrcweir 		void getMaxNameLength_001( )
2600*cdf0e10cSrcweir 		{
2601*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_MaxNameLength;
2602*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2603*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2604*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2605*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2606*cdf0e10cSrcweir 			sal_uInt32 uiMaxNameLength = aVolumeInfo.getMaxNameLength( );
2607*cdf0e10cSrcweir 
2608*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getMaxNameLength function: get max name length of Fixed disk volume mounted on /, it should not be 0",
2609*cdf0e10cSrcweir 				 					0 != uiMaxNameLength );
2610*cdf0e10cSrcweir 		}
2611*cdf0e10cSrcweir 
2612*cdf0e10cSrcweir 
2613*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
2614*cdf0e10cSrcweir  		void getMaxNameLength_002( )
2615*cdf0e10cSrcweir 		{
2616*cdf0e10cSrcweir  			struct statvfs aStatFS;
2617*cdf0e10cSrcweir 			static const sal_Char  name[] = "/";
2618*cdf0e10cSrcweir 
2619*cdf0e10cSrcweir 			memset (&aStatFS, 0, sizeof(aStatFS));
2620*cdf0e10cSrcweir 			statvfs( name, &aStatFS);
2621*cdf0e10cSrcweir 			sal_uInt64 MaxNameLength = aStatFS.f_namemax;
2622*cdf0e10cSrcweir 
2623*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_MaxNameLength;
2624*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2625*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2626*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2627*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2628*cdf0e10cSrcweir 			sal_uInt64 uiMaxNameLength = aVolumeInfo.getMaxNameLength( );
2629*cdf0e10cSrcweir 
2630*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getMaxNameLength function: get max name length by hand, then compare with getMaxNameLength",
2631*cdf0e10cSrcweir 				 					uiMaxNameLength == MaxNameLength );
2632*cdf0e10cSrcweir 		}
2633*cdf0e10cSrcweir #else                                    //Windows version
2634*cdf0e10cSrcweir 		void getMaxNameLength_002( )
2635*cdf0e10cSrcweir 		{
2636*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getMaxNameLength function: not implemented yet( Windows version )",
2637*cdf0e10cSrcweir 				 					1 == 1 );
2638*cdf0e10cSrcweir 		}
2639*cdf0e10cSrcweir #endif
2640*cdf0e10cSrcweir 
2641*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getMaxNameLength );
2642*cdf0e10cSrcweir  		CPPUNIT_TEST( getMaxNameLength_001 );
2643*cdf0e10cSrcweir 		CPPUNIT_TEST( getMaxNameLength_002 );
2644*cdf0e10cSrcweir  		CPPUNIT_TEST_SUITE_END( );
2645*cdf0e10cSrcweir 	};// class getMaxNameLength
2646*cdf0e10cSrcweir 
2647*cdf0e10cSrcweir 
2648*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2649*cdf0e10cSrcweir 	// 	testing the method
2650*cdf0e10cSrcweir 	// 	inline sal_uInt32 getMaxPathLength() const
2651*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2652*cdf0e10cSrcweir     class  getMaxPathLength : public CppUnit::TestFixture
2653*cdf0e10cSrcweir 	{
2654*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2655*cdf0e10cSrcweir 
2656*cdf0e10cSrcweir 	    public:
2657*cdf0e10cSrcweir 		// test code.
2658*cdf0e10cSrcweir 		void getMaxPathLength_001( )
2659*cdf0e10cSrcweir 		{
2660*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_MaxPathLength;
2661*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2662*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2663*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2664*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2665*cdf0e10cSrcweir 			sal_uInt32 uiMaxPathLength = aVolumeInfo.getMaxPathLength( );
2666*cdf0e10cSrcweir 
2667*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getMaxPathLength function: get max path length of Fixed disk volume mounted on /, it should not be 0",
2668*cdf0e10cSrcweir 				 					0 != uiMaxPathLength );
2669*cdf0e10cSrcweir 		}
2670*cdf0e10cSrcweir 
2671*cdf0e10cSrcweir 
2672*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
2673*cdf0e10cSrcweir  		void getMaxPathLength_002( )
2674*cdf0e10cSrcweir 		{
2675*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_MaxPathLength;
2676*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2677*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2678*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2679*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2680*cdf0e10cSrcweir 			sal_uInt64 uiMaxPathLength = aVolumeInfo.getMaxPathLength( );
2681*cdf0e10cSrcweir 
2682*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getMaxPathLength function: get max path length by hand, then compare with getMaxPathLength",
2683*cdf0e10cSrcweir 				 					uiMaxPathLength == PATH_MAX );
2684*cdf0e10cSrcweir 		}
2685*cdf0e10cSrcweir #else                                    //Windows version
2686*cdf0e10cSrcweir 		void getMaxPathLength_002( )
2687*cdf0e10cSrcweir 		{
2688*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getMaxPathLength function: not implemented yet( Windows version )",
2689*cdf0e10cSrcweir 				 					1 == 1 );
2690*cdf0e10cSrcweir 		}
2691*cdf0e10cSrcweir #endif
2692*cdf0e10cSrcweir 
2693*cdf0e10cSrcweir 
2694*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getMaxPathLength );
2695*cdf0e10cSrcweir  		CPPUNIT_TEST( getMaxPathLength_001 );
2696*cdf0e10cSrcweir 		CPPUNIT_TEST( getMaxPathLength_002 );
2697*cdf0e10cSrcweir  		CPPUNIT_TEST_SUITE_END( );
2698*cdf0e10cSrcweir 	};// class getMaxPathLength
2699*cdf0e10cSrcweir 
2700*cdf0e10cSrcweir 
2701*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2702*cdf0e10cSrcweir 	// 	testing the method
2703*cdf0e10cSrcweir 	// 	inline ::rtl::OUString getFileSystemName() const
2704*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2705*cdf0e10cSrcweir     class  getFileSystemName : public CppUnit::TestFixture
2706*cdf0e10cSrcweir 	{
2707*cdf0e10cSrcweir 		::rtl::OUString aUStr;
2708*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2709*cdf0e10cSrcweir 
2710*cdf0e10cSrcweir 	    public:
2711*cdf0e10cSrcweir 		// test code.
2712*cdf0e10cSrcweir 		void getFileSystemName_001( )
2713*cdf0e10cSrcweir 		{
2714*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FileSystemName;
2715*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2716*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2717*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2718*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2719*cdf0e10cSrcweir 			aUStr = aVolumeInfo.getFileSystemName( );
2720*cdf0e10cSrcweir 
2721*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileSystemName function: get file system name of Fixed disk volume mounted on /, it should not be empty string",
2722*cdf0e10cSrcweir 				 					sal_False == compareFileName( aNullURL, aUStr ) );
2723*cdf0e10cSrcweir 		}
2724*cdf0e10cSrcweir 
2725*cdf0e10cSrcweir 
2726*cdf0e10cSrcweir #if defined(SOLARIS)
2727*cdf0e10cSrcweir  		void getFileSystemName_002( )
2728*cdf0e10cSrcweir 		{
2729*cdf0e10cSrcweir  			struct statvfs aStatFS;
2730*cdf0e10cSrcweir 			static const sal_Char  name[] = "/";
2731*cdf0e10cSrcweir 
2732*cdf0e10cSrcweir 			memset (&aStatFS, 0, sizeof(aStatFS));
2733*cdf0e10cSrcweir 			statvfs( name, &aStatFS);
2734*cdf0e10cSrcweir 			sal_Char * astrFileSystemName = aStatFS.f_basetype;
2735*cdf0e10cSrcweir 
2736*cdf0e10cSrcweir  			sal_Int32 mask = VolumeInfoMask_FileSystemName;
2737*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
2738*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2739*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2740*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
2741*cdf0e10cSrcweir 			aUStr = aVolumeInfo.getFileSystemName( );
2742*cdf0e10cSrcweir 
2743*cdf0e10cSrcweir  			CPPUNIT_ASSERT_MESSAGE( "test for getFileSystemName function: get file system name by hand, then compare with getFileSystemName",
2744*cdf0e10cSrcweir 				 					sal_True == compareFileName( aUStr, astrFileSystemName ) );
2745*cdf0e10cSrcweir 		}
2746*cdf0e10cSrcweir #else                                    //Windows version
2747*cdf0e10cSrcweir 		void getFileSystemName_002( )
2748*cdf0e10cSrcweir 		{
2749*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileSystemName function: not implemented yet( Windows version )",
2750*cdf0e10cSrcweir 				 					1 == 1 );
2751*cdf0e10cSrcweir 		}
2752*cdf0e10cSrcweir #endif
2753*cdf0e10cSrcweir 
2754*cdf0e10cSrcweir 
2755*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileSystemName );
2756*cdf0e10cSrcweir  		CPPUNIT_TEST( getFileSystemName_001 );
2757*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileSystemName_002 );
2758*cdf0e10cSrcweir  		CPPUNIT_TEST_SUITE_END( );
2759*cdf0e10cSrcweir 	};// class getFileSystemName
2760*cdf0e10cSrcweir 
2761*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2762*cdf0e10cSrcweir 	// 	testing the method
2763*cdf0e10cSrcweir 	// 	inline VolumeDevice getDeviceHandle() const
2764*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2765*cdf0e10cSrcweir     class  getDeviceHandle : public CppUnit::TestFixture
2766*cdf0e10cSrcweir 	{
2767*cdf0e10cSrcweir 		::rtl::OUString aUStr;
2768*cdf0e10cSrcweir 		::osl::FileBase::RC nError1;
2769*cdf0e10cSrcweir 
2770*cdf0e10cSrcweir 	    public:
2771*cdf0e10cSrcweir 		// test code.
2772*cdf0e10cSrcweir 		void getDeviceHandle_001( )
2773*cdf0e10cSrcweir 		{
2774*cdf0e10cSrcweir 			::osl::VolumeInfo   aVolumeInfo( VolumeInfoMask_Attributes );
2775*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
2776*cdf0e10cSrcweir 			CPPUNIT_ASSERT( osl::FileBase::E_None == nError1 );
2777*cdf0e10cSrcweir 
2778*cdf0e10cSrcweir 			::osl::VolumeDevice aVolumeDevice1( aVolumeInfo.getDeviceHandle( ) );
2779*cdf0e10cSrcweir 			sal_Bool bOk = compareFileName( aNullURL, aVolumeDevice1.getMountPath( ) );
2780*cdf0e10cSrcweir 
2781*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getDeviceHandle function: get device handle of Fixed disk volume mounted on /, it should not be NULL, it did not pass in (W32) (UNX).",
2782*cdf0e10cSrcweir 				 					( sal_False == bOk ) );
2783*cdf0e10cSrcweir 		}
2784*cdf0e10cSrcweir 
2785*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getDeviceHandle );
2786*cdf0e10cSrcweir  		CPPUNIT_TEST( getDeviceHandle_001 );
2787*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2788*cdf0e10cSrcweir 	};// class getDeviceHandle
2789*cdf0e10cSrcweir 
2790*cdf0e10cSrcweir 
2791*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
2792*cdf0e10cSrcweir 	/*CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::ctors, "osl_VolumeInfo" );
2793*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::isValid, "osl_VolumeInfo" );
2794*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getRemoteFlag, "osl_VolumeInfo" );
2795*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getRemoveableFlag, "osl_VolumeInfo" );
2796*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getCompactDiscFlag, "osl_VolumeInfo" );
2797*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getFloppyDiskFlag, "osl_VolumeInfo" );
2798*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getFixedDiskFlag, "osl_VolumeInfo" );
2799*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getRAMDiskFlag, "osl_VolumeInfo" );
2800*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getTotalSpace, "osl_VolumeInfo" );
2801*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getFreeSpace, "osl_VolumeInfo" );
2802*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getUsedSpace, "osl_VolumeInfo" );
2803*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getMaxNameLength, "osl_VolumeInfo" );
2804*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getMaxPathLength, "osl_VolumeInfo" );
2805*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getFileSystemName, "osl_VolumeInfo" );
2806*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getDeviceHandle, "osl_VolumeInfo" );*/
2807*cdf0e10cSrcweir }// namespace osl_VolumeInfo
2808*cdf0e10cSrcweir 
2809*cdf0e10cSrcweir 
2810*cdf0e10cSrcweir 
2811*cdf0e10cSrcweir //------------------------------------------------------------------------
2812*cdf0e10cSrcweir // Beginning of the test cases for VolumeDevice class
2813*cdf0e10cSrcweir //------------------------------------------------------------------------
2814*cdf0e10cSrcweir namespace osl_FileStatus
2815*cdf0e10cSrcweir {
2816*cdf0e10cSrcweir 
2817*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2818*cdf0e10cSrcweir 	// 	testing the method
2819*cdf0e10cSrcweir 	// 	FileStatus( sal_uInt32 nMask ): _nMask( nMask )
2820*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2821*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
2822*cdf0e10cSrcweir 	{
2823*cdf0e10cSrcweir 		::rtl::OUString         aUStr;
2824*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
2825*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
2826*cdf0e10cSrcweir 
2827*cdf0e10cSrcweir 	    public:
2828*cdf0e10cSrcweir 		// initialization
2829*cdf0e10cSrcweir 		void setUp( )
2830*cdf0e10cSrcweir 		{
2831*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
2832*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
2833*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
2834*cdf0e10cSrcweir 
2835*cdf0e10cSrcweir 			::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) );
2836*cdf0e10cSrcweir 			nError1 = pDir->open( );
2837*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2838*cdf0e10cSrcweir 			nError1 = pDir->getNextItem( rItem, 0 );
2839*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2840*cdf0e10cSrcweir 			pDir->close();
2841*cdf0e10cSrcweir 			/*
2842*cdf0e10cSrcweir 			Directory aDir( aTmpName3 );
2843*cdf0e10cSrcweir 			nError1 = aDir.open();
2844*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2845*cdf0e10cSrcweir 			nError1 = aDir.getNextItem( rItem, 0 );
2846*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2847*cdf0e10cSrcweir 			aDir.close();
2848*cdf0e10cSrcweir 			*/
2849*cdf0e10cSrcweir 		}
2850*cdf0e10cSrcweir 
2851*cdf0e10cSrcweir 		void tearDown( )
2852*cdf0e10cSrcweir 		{
2853*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
2854*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
2855*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
2856*cdf0e10cSrcweir 		}
2857*cdf0e10cSrcweir 
2858*cdf0e10cSrcweir 		// test code.
2859*cdf0e10cSrcweir 		void ctors_001( )
2860*cdf0e10cSrcweir 		{
2861*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_All );
2862*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
2863*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2864*cdf0e10cSrcweir 			aUStr = rFileStatus.getFileName( );
2865*cdf0e10cSrcweir 
2866*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask all and see the file name",
2867*cdf0e10cSrcweir 				 					sal_True == compareFileName( aUStr, aTmpName2)  );
2868*cdf0e10cSrcweir 		}
2869*cdf0e10cSrcweir 
2870*cdf0e10cSrcweir 		void ctors_002( )
2871*cdf0e10cSrcweir 		{
2872*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( 0 );
2873*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
2874*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2875*cdf0e10cSrcweir 			aUStr = rFileStatus.getFileName( );
2876*cdf0e10cSrcweir 
2877*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is empty",
2878*cdf0e10cSrcweir 				 					sal_True == compareFileName( aUStr, aNullURL)  );
2879*cdf0e10cSrcweir 		}
2880*cdf0e10cSrcweir 
2881*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
2882*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
2883*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_002 );
2884*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
2885*cdf0e10cSrcweir 	};// class ctors
2886*cdf0e10cSrcweir 
2887*cdf0e10cSrcweir 
2888*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2889*cdf0e10cSrcweir 	// 	testing the method
2890*cdf0e10cSrcweir 	// 	inline sal_Bool isValid( sal_uInt32 nMask ) const
2891*cdf0e10cSrcweir 	//---------------------------------------------------------------------
2892*cdf0e10cSrcweir     class  isValid : public CppUnit::TestFixture
2893*cdf0e10cSrcweir 	{
2894*cdf0e10cSrcweir 		::rtl::OUString         aUStr;
2895*cdf0e10cSrcweir 		::osl::Directory        *pDir;
2896*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem_file, rItem_link;
2897*cdf0e10cSrcweir 
2898*cdf0e10cSrcweir 	    public:
2899*cdf0e10cSrcweir 		// initialization
2900*cdf0e10cSrcweir 		void setUp( )
2901*cdf0e10cSrcweir 		{
2902*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
2903*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
2904*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
2905*cdf0e10cSrcweir 
2906*cdf0e10cSrcweir 			pDir = new Directory( aTmpName3 );
2907*cdf0e10cSrcweir 			//::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) );
2908*cdf0e10cSrcweir                 	::osl::FileBase::RC nError1 = pDir->open( );
2909*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2910*cdf0e10cSrcweir 			nError1 = pDir->getNextItem( rItem_file, 1 );
2911*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2912*cdf0e10cSrcweir 		}
2913*cdf0e10cSrcweir 
2914*cdf0e10cSrcweir 		void tearDown( )
2915*cdf0e10cSrcweir 		{
2916*cdf0e10cSrcweir                 	::osl::FileBase::RC nError1 = pDir->close( );
2917*cdf0e10cSrcweir                 	delete pDir;
2918*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr(nError1), ::osl::FileBase::E_None == nError1 );
2919*cdf0e10cSrcweir 
2920*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
2921*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
2922*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
2923*cdf0e10cSrcweir 		}
2924*cdf0e10cSrcweir 
2925*cdf0e10cSrcweir 		// test code.
2926*cdf0e10cSrcweir 		void isValid_001( )
2927*cdf0e10cSrcweir 		{
2928*cdf0e10cSrcweir 			sal_uInt32 mask = 0;
2929*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( mask );
2930*cdf0e10cSrcweir                 ::osl::FileBase::RC nError1 = rItem_file.getFileStatus( rFileStatus );
2931*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2932*cdf0e10cSrcweir 			sal_Bool bOk = rFileStatus.isValid( mask );
2933*cdf0e10cSrcweir 
2934*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isValid function: no fields specified",
2935*cdf0e10cSrcweir 				 					( sal_True == bOk ) );
2936*cdf0e10cSrcweir 		}
2937*cdf0e10cSrcweir 
2938*cdf0e10cSrcweir         void check_FileStatus(::osl::FileStatus const& _aStatus)
2939*cdf0e10cSrcweir             {
2940*cdf0e10cSrcweir                 rtl::OString sStat;
2941*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_Type))
2942*cdf0e10cSrcweir                 {
2943*cdf0e10cSrcweir                     sStat += "type ";
2944*cdf0e10cSrcweir                 }
2945*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_Attributes))
2946*cdf0e10cSrcweir                 {
2947*cdf0e10cSrcweir                     sStat += "attributes ";
2948*cdf0e10cSrcweir                 }
2949*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_CreationTime))
2950*cdf0e10cSrcweir                 {
2951*cdf0e10cSrcweir                     sStat += "ctime ";
2952*cdf0e10cSrcweir                 }
2953*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_AccessTime))
2954*cdf0e10cSrcweir                 {
2955*cdf0e10cSrcweir                     sStat += "atime ";
2956*cdf0e10cSrcweir                 }
2957*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_ModifyTime))
2958*cdf0e10cSrcweir                 {
2959*cdf0e10cSrcweir                     sStat += "mtime ";
2960*cdf0e10cSrcweir                 }
2961*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_FileSize))
2962*cdf0e10cSrcweir                 {
2963*cdf0e10cSrcweir                     sStat += "filesize ";
2964*cdf0e10cSrcweir                 }
2965*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_FileName))
2966*cdf0e10cSrcweir                 {
2967*cdf0e10cSrcweir                     sStat += "filename ";
2968*cdf0e10cSrcweir                 }
2969*cdf0e10cSrcweir                 if (_aStatus.isValid(FileStatusMask_FileURL))
2970*cdf0e10cSrcweir                 {
2971*cdf0e10cSrcweir                     sStat += "fileurl ";
2972*cdf0e10cSrcweir                 }
2973*cdf0e10cSrcweir                 t_print("mask: %s\n", sStat.getStr());
2974*cdf0e10cSrcweir             }
2975*cdf0e10cSrcweir 
2976*cdf0e10cSrcweir 		void isValid_002( )
2977*cdf0e10cSrcweir 		{
2978*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
2979*cdf0e10cSrcweir 			sal_uInt32 mask_file = ( FileStatusMask_Type | FileStatusMask_Attributes |
2980*cdf0e10cSrcweir                                    FileStatusMask_CreationTime | FileStatusMask_AccessTime |
2981*cdf0e10cSrcweir                                    FileStatusMask_ModifyTime   | FileStatusMask_FileSize   |
2982*cdf0e10cSrcweir                                    FileStatusMask_FileName     | FileStatusMask_FileURL) ;
2983*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( mask_file );
2984*cdf0e10cSrcweir                 ::osl::FileBase::RC nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem_file );
2985*cdf0e10cSrcweir 			nError1 = rItem_file.getFileStatus( rFileStatus );
2986*cdf0e10cSrcweir 
2987*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr(nError1), ::osl::FileBase::E_None == nError1 );
2988*cdf0e10cSrcweir 
2989*cdf0e10cSrcweir // LLA: this is wrong, we never should try to check on all masks
2990*cdf0e10cSrcweir //      only on one.
2991*cdf0e10cSrcweir //      Second, it's not a bug, if a value is not valid, it's an unhandled feature.
2992*cdf0e10cSrcweir 
2993*cdf0e10cSrcweir // 			sal_Bool bOk = rFileStatus.isValid( mask_file );
2994*cdf0e10cSrcweir 
2995*cdf0e10cSrcweir                 check_FileStatus(rFileStatus);
2996*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
2997*cdf0e10cSrcweir 
2998*cdf0e10cSrcweir                 // CPPUNIT_ASSERT_MESSAGE( "test for isValid function: regular file mask fields test, #FileStatusMask_CreationTime# should be valid field for regular file, but feedback is invalid",
2999*cdf0e10cSrcweir                 // 	 					( sal_True == bOk ) );
3000*cdf0e10cSrcweir 		}
3001*cdf0e10cSrcweir 
3002*cdf0e10cSrcweir 		//Link is not defined in Windows, and on Linux, we can not get the directory item of the link file
3003*cdf0e10cSrcweir         // LLA: we have to differ to filesystems, normal filesystems support links (EXT2, ...)
3004*cdf0e10cSrcweir         //      castrated filesystems don't (FAT, FAT32)
3005*cdf0e10cSrcweir         //      Windows NT NTFS support links, but the windows api don't :-(
3006*cdf0e10cSrcweir 
3007*cdf0e10cSrcweir 		void isValid_003( )
3008*cdf0e10cSrcweir 		{
3009*cdf0e10cSrcweir #if defined ( UNX )
3010*cdf0e10cSrcweir 			// ::osl::FileBase::RC nError;
3011*cdf0e10cSrcweir 			sal_Int32 fd;
3012*cdf0e10cSrcweir 
3013*cdf0e10cSrcweir 			::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys );
3014*cdf0e10cSrcweir 			( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/link.file");
3015*cdf0e10cSrcweir 			( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/tmpname");
3016*cdf0e10cSrcweir 
3017*cdf0e10cSrcweir                 rtl::OString strLinkFileName;
3018*cdf0e10cSrcweir                 rtl::OString strSrcFileName;
3019*cdf0e10cSrcweir                 strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US );
3020*cdf0e10cSrcweir                 strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US );
3021*cdf0e10cSrcweir 
3022*cdf0e10cSrcweir 			//create a link file and link it to file "/tmp/PID/tmpdir/tmpname"
3023*cdf0e10cSrcweir                 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() );
3024*cdf0e10cSrcweir 			CPPUNIT_ASSERT( fd == 0 );
3025*cdf0e10cSrcweir 
3026*cdf0e10cSrcweir 			// testDirectory is "/tmp/PID/tmpdir/"
3027*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 );
3028*cdf0e10cSrcweir                 ::osl::FileBase::RC nError1 = testDirectory.open( );
3029*cdf0e10cSrcweir 			::rtl::OUString aFileName = ::rtl::OUString::createFromAscii("link.file");
3030*cdf0e10cSrcweir 			sal_Bool bOk = sal_False;
3031*cdf0e10cSrcweir 			while (1) {
3032*cdf0e10cSrcweir 				nError1 = testDirectory.getNextItem( rItem_link, 4 );
3033*cdf0e10cSrcweir 				if (::osl::FileBase::E_None == nError1) {
3034*cdf0e10cSrcweir 					sal_uInt32 mask_link = FileStatusMask_FileName | FileStatusMask_LinkTargetURL;
3035*cdf0e10cSrcweir 					::osl::FileStatus   rFileStatus( mask_link );
3036*cdf0e10cSrcweir 					rItem_link.getFileStatus( rFileStatus );
3037*cdf0e10cSrcweir 					//printFileName( rFileStatus.getFileName( ) );
3038*cdf0e10cSrcweir 					if ( compareFileName( rFileStatus.getFileName( ), aFileName) == sal_True )
3039*cdf0e10cSrcweir 					{
3040*cdf0e10cSrcweir 						//t_print("find the link file");
3041*cdf0e10cSrcweir 						if ( sal_True == rFileStatus.isValid( FileStatusMask_LinkTargetURL ) )
3042*cdf0e10cSrcweir 						{
3043*cdf0e10cSrcweir 							bOk = sal_True;
3044*cdf0e10cSrcweir 							break;
3045*cdf0e10cSrcweir 						}
3046*cdf0e10cSrcweir 					}
3047*cdf0e10cSrcweir 				}
3048*cdf0e10cSrcweir 				else
3049*cdf0e10cSrcweir 					break;
3050*cdf0e10cSrcweir 			};
3051*cdf0e10cSrcweir 
3052*cdf0e10cSrcweir 			fd = remove( strLinkFileName );
3053*cdf0e10cSrcweir 			CPPUNIT_ASSERT( fd == 0 );
3054*cdf0e10cSrcweir 
3055*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("test for isValid function: link file, check for LinkTargetURL",
3056*cdf0e10cSrcweir 				 					( sal_True == bOk ) );
3057*cdf0e10cSrcweir #endif
3058*cdf0e10cSrcweir 		}
3059*cdf0e10cSrcweir 
3060*cdf0e10cSrcweir 		void isValid_004( )
3061*cdf0e10cSrcweir 		{
3062*cdf0e10cSrcweir 			sal_uInt32 mask_file_all = FileStatusMask_All;
3063*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus_all( mask_file_all );
3064*cdf0e10cSrcweir                 ::osl::FileBase::RC nError1 = rItem_file.getFileStatus( rFileStatus_all );
3065*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3066*cdf0e10cSrcweir 
3067*cdf0e10cSrcweir                 check_FileStatus(rFileStatus_all);
3068*cdf0e10cSrcweir // LLA: this is wrong
3069*cdf0e10cSrcweir //			sal_Bool bOk1 = rFileStatus_all.isValid( mask_file_all );
3070*cdf0e10cSrcweir 
3071*cdf0e10cSrcweir 			sal_uInt32 mask_file_val = FileStatusMask_Validate;
3072*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus_val( mask_file_val );
3073*cdf0e10cSrcweir 			nError1 = rItem_file.getFileStatus( rFileStatus_val );
3074*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3075*cdf0e10cSrcweir                 // sal_Bool bOk2 = rFileStatus_val.isValid( mask_file_val );
3076*cdf0e10cSrcweir 
3077*cdf0e10cSrcweir                 check_FileStatus(rFileStatus_val);
3078*cdf0e10cSrcweir                 // CPPUNIT_ASSERT_MESSAGE( "test for isValid function: check for Mask_All and Validate, really not sure what validate used for and how to use it, help me.  did not pass (W32)(UNX).",
3079*cdf0e10cSrcweir                 // 	 					( sal_False == bOk1 ) && ( sal_True == bOk2 )  );
3080*cdf0e10cSrcweir 		}
3081*cdf0e10cSrcweir 
3082*cdf0e10cSrcweir 
3083*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( isValid );
3084*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_001 );
3085*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_002 );
3086*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_003 );
3087*cdf0e10cSrcweir 		CPPUNIT_TEST( isValid_004 );
3088*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3089*cdf0e10cSrcweir 	};// class ctors
3090*cdf0e10cSrcweir 
3091*cdf0e10cSrcweir 
3092*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3093*cdf0e10cSrcweir 	// 	testing the method
3094*cdf0e10cSrcweir 	// 	inline Type getFileType() const
3095*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3096*cdf0e10cSrcweir     class  getFileType : public CppUnit::TestFixture
3097*cdf0e10cSrcweir 	{
3098*cdf0e10cSrcweir 		::rtl::OUString         aUStr;
3099*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
3100*cdf0e10cSrcweir 
3101*cdf0e10cSrcweir 		::osl::DirectoryItem    m_aItem_1, m_aItem_2, m_aVolumeItem, m_aFifoItem;
3102*cdf0e10cSrcweir 		::osl::DirectoryItem    m_aLinkItem, m_aSocketItem, m_aSpecialItem;
3103*cdf0e10cSrcweir 
3104*cdf0e10cSrcweir 	    public:
3105*cdf0e10cSrcweir 		// initialization
3106*cdf0e10cSrcweir 		void setUp( )
3107*cdf0e10cSrcweir 		{
3108*cdf0e10cSrcweir 			// create a tempfile: $TEMP/tmpdir/tmpname.
3109*cdf0e10cSrcweir 			//        a tempdirectory: $TEMP/tmpdir/tmpdir.
3110*cdf0e10cSrcweir 			//        use $ROOT/staroffice as volume ---> use dev/fd as volume.
3111*cdf0e10cSrcweir 			// and get their directory item.
3112*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
3113*cdf0e10cSrcweir 			//printFileName( aTmpName2);
3114*cdf0e10cSrcweir 			createTestFile( aTmpName3, aTmpName2 );
3115*cdf0e10cSrcweir 			createTestDirectory( aTmpName3, aTmpName1 );
3116*cdf0e10cSrcweir 
3117*cdf0e10cSrcweir 			::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) );
3118*cdf0e10cSrcweir 			nError1 = pDir->open( );
3119*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("open aTmpName3 failed!", ::osl::FileBase::E_None == nError1 );
3120*cdf0e10cSrcweir 			//getNextItem can not assure which item retrieved
3121*cdf0e10cSrcweir             		nError1 = pDir->getNextItem( m_aItem_1, 1 );
3122*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("get first item failed!", ::osl::FileBase::E_None == nError1 );
3123*cdf0e10cSrcweir 
3124*cdf0e10cSrcweir             		nError1 = pDir->getNextItem( m_aItem_2 );
3125*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("get second item failed!", ::osl::FileBase::E_None == nError1 );
3126*cdf0e10cSrcweir 			pDir->close();
3127*cdf0e10cSrcweir 			//mindy: failed on my RH9,so removed temporaly
3128*cdf0e10cSrcweir 			//nError1 = ::osl::DirectoryItem::get( aVolURL2, m_aVolumeItem );
3129*cdf0e10cSrcweir 			//CPPUNIT_ASSERT_MESSAGE("get volume item failed!", ::osl::FileBase::E_None == nError1 );
3130*cdf0e10cSrcweir 
3131*cdf0e10cSrcweir 		}
3132*cdf0e10cSrcweir 
3133*cdf0e10cSrcweir 		void tearDown( )
3134*cdf0e10cSrcweir 		{
3135*cdf0e10cSrcweir 			// remove all in $TEMP/tmpdir.
3136*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3, aTmpName1 );
3137*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aTmpName2 );
3138*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
3139*cdf0e10cSrcweir 		}
3140*cdf0e10cSrcweir 
3141*cdf0e10cSrcweir 		// test code.
3142*cdf0e10cSrcweir 		void getFileType_001( )
3143*cdf0e10cSrcweir 		{
3144*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type | FileStatusMask_FileName );
3145*cdf0e10cSrcweir             nError1 = m_aItem_1.getFileStatus( rFileStatus );
3146*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("getFileStatus failed", ::osl::FileBase::E_None == nError1 );
3147*cdf0e10cSrcweir 
3148*cdf0e10cSrcweir             check_FileType(rFileStatus);
3149*cdf0e10cSrcweir         }
3150*cdf0e10cSrcweir 
3151*cdf0e10cSrcweir         void check_FileType(osl::FileStatus const& _rFileStatus )
3152*cdf0e10cSrcweir         {
3153*cdf0e10cSrcweir 			sal_Bool bOK = sal_False;
3154*cdf0e10cSrcweir                 if ( _rFileStatus.isValid(FileStatusMask_FileName))
3155*cdf0e10cSrcweir                 {
3156*cdf0e10cSrcweir                     rtl::OUString suFilename = _rFileStatus.getFileName();
3157*cdf0e10cSrcweir 
3158*cdf0e10cSrcweir                     if ( _rFileStatus.isValid(FileStatusMask_Type))
3159*cdf0e10cSrcweir                     {
3160*cdf0e10cSrcweir                         osl::FileStatus::Type eType = _rFileStatus.getFileType( );
3161*cdf0e10cSrcweir 
3162*cdf0e10cSrcweir                         if ( compareFileName( suFilename, aTmpName2) == sal_True )
3163*cdf0e10cSrcweir                         {
3164*cdf0e10cSrcweir                             // regular
3165*cdf0e10cSrcweir                             bOK = ( eType == osl::FileStatus::Regular );
3166*cdf0e10cSrcweir                         }
3167*cdf0e10cSrcweir                         if ( compareFileName( suFilename, aTmpName1) == sal_True )
3168*cdf0e10cSrcweir                         {
3169*cdf0e10cSrcweir                             // directory
3170*cdf0e10cSrcweir                             bOK = ( eType == ::osl::FileStatus::Directory );
3171*cdf0e10cSrcweir                         }
3172*cdf0e10cSrcweir 
3173*cdf0e10cSrcweir                         CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: ",
3174*cdf0e10cSrcweir 				 					( bOK == sal_True ) );
3175*cdf0e10cSrcweir 		}
3176*cdf0e10cSrcweir                 }
3177*cdf0e10cSrcweir                 // LLA: it's not a bug, if a FileStatus not exist, so no else
3178*cdf0e10cSrcweir             }
3179*cdf0e10cSrcweir 
3180*cdf0e10cSrcweir 		void getFileType_002( )
3181*cdf0e10cSrcweir 		{
3182*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type | FileStatusMask_FileName );
3183*cdf0e10cSrcweir                 nError1 = m_aItem_2.getFileStatus( rFileStatus );
3184*cdf0e10cSrcweir 
3185*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3186*cdf0e10cSrcweir                 check_FileType(rFileStatus);
3187*cdf0e10cSrcweir 		}
3188*cdf0e10cSrcweir 
3189*cdf0e10cSrcweir 		void getFileType_003( )
3190*cdf0e10cSrcweir 		{
3191*cdf0e10cSrcweir #if 0
3192*cdf0e10cSrcweir // LLA: this have to be discussed.
3193*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type );
3194*cdf0e10cSrcweir                 nError1 = m_aVolumeItem.getFileStatus( rFileStatus );
3195*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3196*cdf0e10cSrcweir 
3197*cdf0e10cSrcweir                 if (rFileStatus.isValid(FileStatusMask_Type))
3198*cdf0e10cSrcweir                 {
3199*cdf0e10cSrcweir                     osl::FileStatus::Type eType = rFileStatus.getFileType( );
3200*cdf0e10cSrcweir 
3201*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Volume, it seems the volume part of the field is not implemented, it did not pass in (W32)(UNX).",
3202*cdf0e10cSrcweir                                             ( eType == ::osl::FileStatus::Volume ) );
3203*cdf0e10cSrcweir                 }
3204*cdf0e10cSrcweir #endif
3205*cdf0e10cSrcweir 		}
3206*cdf0e10cSrcweir 
3207*cdf0e10cSrcweir 
3208*cdf0e10cSrcweir 		void getFileType_004( )
3209*cdf0e10cSrcweir 		{
3210*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )	//Fifo creation is differ in Windows
3211*cdf0e10cSrcweir 
3212*cdf0e10cSrcweir 			//create a fifo in $ROOT/tmp/tmpdir, get its DirectoryItem.
3213*cdf0e10cSrcweir 		  rtl::OString strFifoSys;
3214*cdf0e10cSrcweir 		  strFifoSys = OUStringToOString( aFifoSys, RTL_TEXTENCODING_ASCII_US );
3215*cdf0e10cSrcweir 		  ::rtl::OUString aFifoURL;
3216*cdf0e10cSrcweir 
3217*cdf0e10cSrcweir                   int fd = mkfifo( strFifoSys.getStr(), O_RDWR | O_CREAT );
3218*cdf0e10cSrcweir 		  CPPUNIT_ASSERT_MESSAGE("mkfifo failed!", fd == 0 );
3219*cdf0e10cSrcweir 			::osl::FileBase::getFileURLFromSystemPath( aFifoSys, aFifoURL );
3220*cdf0e10cSrcweir 
3221*cdf0e10cSrcweir                 nError1 = ::osl::DirectoryItem::get( aFifoURL, m_aFifoItem );
3222*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("get item failed!", ::osl::FileBase::E_None == nError1 );
3223*cdf0e10cSrcweir 
3224*cdf0e10cSrcweir 			//check for File type
3225*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type );
3226*cdf0e10cSrcweir                 nError1 = m_aFifoItem.getFileStatus( rFileStatus );
3227*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("get Status failed!", ::osl::FileBase::E_None == nError1 );
3228*cdf0e10cSrcweir 
3229*cdf0e10cSrcweir 			//delete fifo
3230*cdf0e10cSrcweir 			nError1 = ::osl::File::remove( aFifoURL );
3231*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("remove file failed!", ::osl::FileBase::E_None == nError1 );
3232*cdf0e10cSrcweir 
3233*cdf0e10cSrcweir                 if (rFileStatus.isValid(FileStatusMask_Type))
3234*cdf0e10cSrcweir                 {
3235*cdf0e10cSrcweir                     osl::FileStatus::Type eType = rFileStatus.getFileType( );
3236*cdf0e10cSrcweir 
3237*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Fifo, Solaris version ",
3238*cdf0e10cSrcweir                                             ( eType == ::osl::FileStatus::Fifo ) );
3239*cdf0e10cSrcweir 		}
3240*cdf0e10cSrcweir #endif
3241*cdf0e10cSrcweir 		}
3242*cdf0e10cSrcweir 
3243*cdf0e10cSrcweir /*
3244*cdf0e10cSrcweir  * LLA: removed, m_aSocketItem is wrong initialised.
3245*cdf0e10cSrcweir  */
3246*cdf0e10cSrcweir 
3247*cdf0e10cSrcweir // LLA: 		void getFileType_005( )
3248*cdf0e10cSrcweir // LLA: 		{
3249*cdf0e10cSrcweir // LLA: #if defined ( SOLARIS )	//Socket file may differ in Windows
3250*cdf0e10cSrcweir // LLA:             // nError1 = ::osl::DirectoryItem::get( aTypeURL1, m_aSocketItem );
3251*cdf0e10cSrcweir // LLA:             nError1 = ::osl::DirectoryItem::get( rtl::OUString::createFromAscii("/dev/null"), m_aSocketItem );
3252*cdf0e10cSrcweir // LLA:             printError(nError1);
3253*cdf0e10cSrcweir // LLA: 			CPPUNIT_ASSERT_MESSAGE("get Socket type file failed", ::osl::FileBase::E_None == nError1 );
3254*cdf0e10cSrcweir // LLA:
3255*cdf0e10cSrcweir // LLA: 			//check for File type
3256*cdf0e10cSrcweir // LLA:  			::osl::FileStatus   rFileStatus( FileStatusMask_Type );
3257*cdf0e10cSrcweir // LLA:
3258*cdf0e10cSrcweir // LLA:             nError1 = m_aSocketItem.getFileStatus( rFileStatus );
3259*cdf0e10cSrcweir // LLA: 			CPPUNIT_ASSERT_MESSAGE("getFileStatus failed", ::osl::FileBase::E_None == nError1 );
3260*cdf0e10cSrcweir // LLA:
3261*cdf0e10cSrcweir // LLA:             if (rFileStatus.isValid( FileStatusMask_Type ))
3262*cdf0e10cSrcweir // LLA:             {
3263*cdf0e10cSrcweir // LLA:                 osl::FileStatus::Type eType = rFileStatus.getFileType( );
3264*cdf0e10cSrcweir // LLA:                 printFileType(eType);
3265*cdf0e10cSrcweir // LLA:                 CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Socket, Solaris version ",
3266*cdf0e10cSrcweir // LLA:                                         ( eType == ::osl::FileStatus::Socket ) );
3267*cdf0e10cSrcweir // LLA:             }
3268*cdf0e10cSrcweir // LLA: #endif
3269*cdf0e10cSrcweir // LLA: 		}
3270*cdf0e10cSrcweir 
3271*cdf0e10cSrcweir 
3272*cdf0e10cSrcweir // deprecated since there is a same case Directory::getNextItem_004
3273*cdf0e10cSrcweir /*#if defined 0 //( UNX ) //( SOLARIS )	//Link file is not defined in Windows
3274*cdf0e10cSrcweir 		void getFileType_006( )
3275*cdf0e10cSrcweir 		{
3276*cdf0e10cSrcweir   nError1 = ::osl::DirectoryItem::get( aTypeURL3, m_aLinkItem );
3277*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3278*cdf0e10cSrcweir 
3279*cdf0e10cSrcweir 			//check for File type
3280*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type );
3281*cdf0e10cSrcweir   nError1 = m_aLinkItem.getFileStatus( rFileStatus );
3282*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3283*cdf0e10cSrcweir 
3284*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Link, UNX version ",
3285*cdf0e10cSrcweir 				 					( ::osl::FileStatus::Link == rFileStatus.getFileType( ) ) );
3286*cdf0e10cSrcweir 		}
3287*cdf0e10cSrcweir #endif	*/
3288*cdf0e10cSrcweir 
3289*cdf0e10cSrcweir 		void getFileType_007( )
3290*cdf0e10cSrcweir 		{
3291*cdf0e10cSrcweir #if defined ( SOLARIS )	//Special file is differ in Windows
3292*cdf0e10cSrcweir                 nError1 = ::osl::DirectoryItem::get( aTypeURL2, m_aSpecialItem );
3293*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3294*cdf0e10cSrcweir 
3295*cdf0e10cSrcweir 			//check for File type
3296*cdf0e10cSrcweir  			::osl::FileStatus   rFileStatus( FileStatusMask_Type );
3297*cdf0e10cSrcweir             nError1 = m_aSpecialItem.getFileStatus( rFileStatus );
3298*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
3299*cdf0e10cSrcweir 
3300*cdf0e10cSrcweir             if (rFileStatus.isValid(FileStatusMask_Type))
3301*cdf0e10cSrcweir             {
3302*cdf0e10cSrcweir                 osl::FileStatus::Type eType = rFileStatus.getFileType( );
3303*cdf0e10cSrcweir 
3304*cdf0e10cSrcweir 
3305*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Special, Solaris version ",
3306*cdf0e10cSrcweir                                         ( eType == ::osl::FileStatus::Special ) );
3307*cdf0e10cSrcweir             }
3308*cdf0e10cSrcweir #endif
3309*cdf0e10cSrcweir 		}
3310*cdf0e10cSrcweir 
3311*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileType );
3312*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileType_001 );
3313*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileType_002 );
3314*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileType_003 );
3315*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileType_004 );
3316*cdf0e10cSrcweir 		// LLA: CPPUNIT_TEST( getFileType_005 );
3317*cdf0e10cSrcweir 		//CPPUNIT_TEST( getFileType_006 );
3318*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileType_007 );
3319*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3320*cdf0e10cSrcweir 	};// class getFileType
3321*cdf0e10cSrcweir 
3322*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3323*cdf0e10cSrcweir 	// 	testing the method
3324*cdf0e10cSrcweir 	// 	inline sal_uInt64 getAttributes() const
3325*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3326*cdf0e10cSrcweir     class  getAttributes : public CppUnit::TestFixture
3327*cdf0e10cSrcweir 	{
3328*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL, aTypeURL_Hid;
3329*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3330*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem, rItem_hidden;
3331*cdf0e10cSrcweir 
3332*cdf0e10cSrcweir 	    public:
3333*cdf0e10cSrcweir 		// initialization
3334*cdf0e10cSrcweir 		void setUp( )
3335*cdf0e10cSrcweir 		{
3336*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3337*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3338*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3339*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3340*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3341*cdf0e10cSrcweir 
3342*cdf0e10cSrcweir 			aTypeURL_Hid = aUserDirectoryURL.copy( 0 );
3343*cdf0e10cSrcweir 			concatURL( aTypeURL_Hid, aHidURL1 );
3344*cdf0e10cSrcweir 			createTestFile( aTypeURL_Hid );
3345*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL_Hid, rItem_hidden );
3346*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3347*cdf0e10cSrcweir 		}
3348*cdf0e10cSrcweir 
3349*cdf0e10cSrcweir 		void tearDown( )
3350*cdf0e10cSrcweir 		{
3351*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3352*cdf0e10cSrcweir 			deleteTestFile( aTypeURL_Hid );
3353*cdf0e10cSrcweir 		}
3354*cdf0e10cSrcweir 
3355*cdf0e10cSrcweir 		// test code.
3356*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
3357*cdf0e10cSrcweir //windows only 3 file attributes: normal, readonly, hidden
3358*cdf0e10cSrcweir 		void getAttributes_001( )
3359*cdf0e10cSrcweir 		{
3360*cdf0e10cSrcweir 			changeFileMode( aTypeURL, S_IRUSR | S_IRGRP | S_IROTH );
3361*cdf0e10cSrcweir 
3362*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
3363*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3364*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3365*cdf0e10cSrcweir 
3366*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: ReadOnly, GrpRead, OwnRead, OthRead( UNX version ) ",
3367*cdf0e10cSrcweir 		                            ( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) ==
3368*cdf0e10cSrcweir 		                            rFileStatus.getAttributes( ) );
3369*cdf0e10cSrcweir 		}
3370*cdf0e10cSrcweir #else                                    //Windows version
3371*cdf0e10cSrcweir 		void getAttributes_001( )
3372*cdf0e10cSrcweir 		{
3373*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: ReadOnly, GrpRead, OwnRead, OthRead( Windows version )",
3374*cdf0e10cSrcweir 				 					1 == 1 );
3375*cdf0e10cSrcweir 		}
3376*cdf0e10cSrcweir #endif
3377*cdf0e10cSrcweir 
3378*cdf0e10cSrcweir 
3379*cdf0e10cSrcweir 		void getAttributes_002( )
3380*cdf0e10cSrcweir 		{
3381*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
3382*cdf0e10cSrcweir 			changeFileMode( aTypeURL, S_IXUSR | S_IXGRP | S_IXOTH );
3383*cdf0e10cSrcweir 
3384*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
3385*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3386*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3387*cdf0e10cSrcweir 
3388*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: Executable, GrpExe, OwnExe, OthExe, the result is Readonly, Executable, GrpExe, OwnExe, OthExe, it partly not pass( Solaris version )",
3389*cdf0e10cSrcweir 		                            ( Attribute_ReadOnly | Attribute_Executable | Attribute_GrpExe | Attribute_OwnExe | Attribute_OthExe ) ==
3390*cdf0e10cSrcweir 		                            rFileStatus.getAttributes( ) );
3391*cdf0e10cSrcweir #endif
3392*cdf0e10cSrcweir 		}
3393*cdf0e10cSrcweir 
3394*cdf0e10cSrcweir 
3395*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
3396*cdf0e10cSrcweir 		void getAttributes_003( )
3397*cdf0e10cSrcweir 		{
3398*cdf0e10cSrcweir 			changeFileMode( aTypeURL, S_IWUSR | S_IWGRP | S_IWOTH );
3399*cdf0e10cSrcweir 
3400*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
3401*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3402*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3403*cdf0e10cSrcweir 
3404*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: GrpWrite, OwnWrite, OthWrite( Solaris version )",
3405*cdf0e10cSrcweir 		                            ( Attribute_GrpWrite | Attribute_OwnWrite | Attribute_OthWrite ) ==
3406*cdf0e10cSrcweir 		                            rFileStatus.getAttributes( ) );
3407*cdf0e10cSrcweir 		}
3408*cdf0e10cSrcweir #else                                    //Windows version
3409*cdf0e10cSrcweir 		void getAttributes_003( )
3410*cdf0e10cSrcweir 		{
3411*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: GrpWrite, OwnWrite, OthWrite( Windows version )",
3412*cdf0e10cSrcweir 				 					1 == 1 );
3413*cdf0e10cSrcweir 		}
3414*cdf0e10cSrcweir #endif
3415*cdf0e10cSrcweir 
3416*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )	//hidden file definition may different in Windows
3417*cdf0e10cSrcweir 		void getAttributes_004( )
3418*cdf0e10cSrcweir 		{
3419*cdf0e10cSrcweir 			sal_Int32 test_Attributes = Attribute_Hidden;
3420*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
3421*cdf0e10cSrcweir 			nError = rItem_hidden.getFileStatus( rFileStatus );
3422*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3423*cdf0e10cSrcweir 			test_Attributes &= rFileStatus.getAttributes( );
3424*cdf0e10cSrcweir 
3425*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: Hidden files( Solaris version )",
3426*cdf0e10cSrcweir 		                            test_Attributes == Attribute_Hidden );
3427*cdf0e10cSrcweir 		}
3428*cdf0e10cSrcweir #else                                    //Windows version
3429*cdf0e10cSrcweir 		void getAttributes_004( )
3430*cdf0e10cSrcweir 		{
3431*cdf0e10cSrcweir 			::rtl::OUString aUserHiddenFileURL = ::rtl::OUString::createFromAscii("file:///c:/AUTOEXEC.BAT");
3432*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aUserHiddenFileURL, rItem_hidden );
3433*cdf0e10cSrcweir 			//printFileName( aUserHiddenFileURL );
3434*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("get item fail", nError == FileBase::E_None );
3435*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
3436*cdf0e10cSrcweir 			nError = rItem_hidden.getFileStatus( rFileStatus );
3437*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3438*cdf0e10cSrcweir 
3439*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "Hidden files(Windows version), please check if hidden file c:/AUTOEXEC.BAT exists ",
3440*cdf0e10cSrcweir 		                            (rFileStatus.getAttributes( ) & Attribute_Hidden)!= 0 );
3441*cdf0e10cSrcweir 		}
3442*cdf0e10cSrcweir #endif
3443*cdf0e10cSrcweir 
3444*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getAttributes );
3445*cdf0e10cSrcweir 		CPPUNIT_TEST( getAttributes_001 );
3446*cdf0e10cSrcweir 		CPPUNIT_TEST( getAttributes_002 );
3447*cdf0e10cSrcweir 		CPPUNIT_TEST( getAttributes_003 );
3448*cdf0e10cSrcweir 		CPPUNIT_TEST( getAttributes_004 );
3449*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3450*cdf0e10cSrcweir 	};// class getAttributes
3451*cdf0e10cSrcweir 
3452*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3453*cdf0e10cSrcweir 	// 	testing the method
3454*cdf0e10cSrcweir 	// 	inline TimeValue getAccessTime() const
3455*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3456*cdf0e10cSrcweir     class  getAccessTime : public CppUnit::TestFixture
3457*cdf0e10cSrcweir 	{
3458*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3459*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3460*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3461*cdf0e10cSrcweir 
3462*cdf0e10cSrcweir 	    public:
3463*cdf0e10cSrcweir 		// initialization
3464*cdf0e10cSrcweir 		void setUp( )
3465*cdf0e10cSrcweir 		{
3466*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3467*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3468*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3469*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3470*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3471*cdf0e10cSrcweir 
3472*cdf0e10cSrcweir 		}
3473*cdf0e10cSrcweir 
3474*cdf0e10cSrcweir 		void tearDown( )
3475*cdf0e10cSrcweir 		{
3476*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3477*cdf0e10cSrcweir 		}
3478*cdf0e10cSrcweir 
3479*cdf0e10cSrcweir 		// test code.
3480*cdf0e10cSrcweir 		void getAccessTime_001( )
3481*cdf0e10cSrcweir 		{
3482*cdf0e10cSrcweir 			TimeValue *pTV_current = NULL;
3483*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_current = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
3484*cdf0e10cSrcweir 			TimeValue *pTV_access = NULL;
3485*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_access = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
3486*cdf0e10cSrcweir 
3487*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_AccessTime );
3488*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3489*cdf0e10cSrcweir 			sal_Bool bOk = osl_getSystemTime( pTV_current );
3490*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == bOk && nError == FileBase::E_None );
3491*cdf0e10cSrcweir 
3492*cdf0e10cSrcweir 			*pTV_access = rFileStatus.getAccessTime( );
3493*cdf0e10cSrcweir 
3494*cdf0e10cSrcweir 			sal_Bool bOK = t_compareTime( pTV_access, pTV_current, delta );
3495*cdf0e10cSrcweir 			free( pTV_current );
3496*cdf0e10cSrcweir 			free( pTV_access );
3497*cdf0e10cSrcweir 
3498*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getAccessTime function: This test turns out that UNX pricision is no more than 1 sec, don't know how to test this function, in Windows test, it lost hour min sec, only have date time. ",
3499*cdf0e10cSrcweir 		                            sal_True == bOK );
3500*cdf0e10cSrcweir 		}
3501*cdf0e10cSrcweir 
3502*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getAccessTime );
3503*cdf0e10cSrcweir 		CPPUNIT_TEST( getAccessTime_001 );
3504*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3505*cdf0e10cSrcweir 	};// class getAccessTime
3506*cdf0e10cSrcweir 
3507*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3508*cdf0e10cSrcweir 	// 	testing the method
3509*cdf0e10cSrcweir 	// 	inline TimeValue getModifyTime() const
3510*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3511*cdf0e10cSrcweir     class  getModifyTime : public CppUnit::TestFixture
3512*cdf0e10cSrcweir 	{
3513*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3514*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3515*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3516*cdf0e10cSrcweir 
3517*cdf0e10cSrcweir 	    public:
3518*cdf0e10cSrcweir 
3519*cdf0e10cSrcweir 		// test code.
3520*cdf0e10cSrcweir 		void getModifyTime_001( )
3521*cdf0e10cSrcweir 		{
3522*cdf0e10cSrcweir 			TimeValue *pTV_current = NULL;
3523*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_current = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
3524*cdf0e10cSrcweir 
3525*cdf0e10cSrcweir 			//create file
3526*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3527*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3528*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3529*cdf0e10cSrcweir 
3530*cdf0e10cSrcweir 			//get current time
3531*cdf0e10cSrcweir 			sal_Bool bOk = osl_getSystemTime( pTV_current );
3532*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == bOk );
3533*cdf0e10cSrcweir 
3534*cdf0e10cSrcweir 			//get instance item and filestatus
3535*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3536*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3537*cdf0e10cSrcweir 			::osl::FileStatus   rFileStatus( FileStatusMask_ModifyTime );
3538*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3539*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3540*cdf0e10cSrcweir 
3541*cdf0e10cSrcweir 			//get modify time
3542*cdf0e10cSrcweir 			TimeValue *pTV_modify = NULL;
3543*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_modify = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
3544*cdf0e10cSrcweir 			*pTV_modify = rFileStatus.getModifyTime( );
3545*cdf0e10cSrcweir 
3546*cdf0e10cSrcweir 			sal_Bool bOK = t_compareTime( pTV_modify, pTV_current, delta );
3547*cdf0e10cSrcweir 			//delete file
3548*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3549*cdf0e10cSrcweir 			free( pTV_current );
3550*cdf0e10cSrcweir 
3551*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getModifyTime function: This test turns out that UNX pricision is no more than 1 sec, don't know how to improve this function.  ",
3552*cdf0e10cSrcweir 		                            sal_True == bOK );
3553*cdf0e10cSrcweir 		}
3554*cdf0e10cSrcweir 
3555*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getModifyTime );
3556*cdf0e10cSrcweir 		CPPUNIT_TEST( getModifyTime_001 );
3557*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3558*cdf0e10cSrcweir 	};// class getModifyTime
3559*cdf0e10cSrcweir 
3560*cdf0e10cSrcweir 
3561*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3562*cdf0e10cSrcweir 	// 	testing the method
3563*cdf0e10cSrcweir 	// 	inline sal_uInt64 getFileSize() const
3564*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3565*cdf0e10cSrcweir     class  getFileSize : public CppUnit::TestFixture
3566*cdf0e10cSrcweir 	{
3567*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3568*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3569*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3570*cdf0e10cSrcweir 
3571*cdf0e10cSrcweir 	    public:
3572*cdf0e10cSrcweir 		// initialization
3573*cdf0e10cSrcweir 		void setUp( )
3574*cdf0e10cSrcweir 		{
3575*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3576*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3577*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3578*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3579*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3580*cdf0e10cSrcweir 		}
3581*cdf0e10cSrcweir 
3582*cdf0e10cSrcweir 		void tearDown( )
3583*cdf0e10cSrcweir 		{
3584*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3585*cdf0e10cSrcweir 		}
3586*cdf0e10cSrcweir 
3587*cdf0e10cSrcweir 		// test code.
3588*cdf0e10cSrcweir 		void getFileSize_001( )
3589*cdf0e10cSrcweir 		{
3590*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileSize );
3591*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3592*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3593*cdf0e10cSrcweir 
3594*cdf0e10cSrcweir 			sal_uInt64 uFileSize = rFileStatus.getFileSize( );
3595*cdf0e10cSrcweir 
3596*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileSize function: empty file ",
3597*cdf0e10cSrcweir 		                            0 == uFileSize );
3598*cdf0e10cSrcweir 		}
3599*cdf0e10cSrcweir 
3600*cdf0e10cSrcweir 		void getFileSize_002( )
3601*cdf0e10cSrcweir 		{
3602*cdf0e10cSrcweir 			::osl::File testfile( aTypeURL );
3603*cdf0e10cSrcweir 			nError = testfile.open( OpenFlag_Write | OpenFlag_Read );
3604*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError );
3605*cdf0e10cSrcweir 			nError = testfile.setSize( TEST_FILE_SIZE );
3606*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError );
3607*cdf0e10cSrcweir 
3608*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3609*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3610*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileSize );
3611*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3612*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3613*cdf0e10cSrcweir 			sal_uInt64 uFileSize = rFileStatus.getFileSize( );
3614*cdf0e10cSrcweir 
3615*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileSize function: file with size of TEST_FILE_SIZE, did not pass in (W32). ",
3616*cdf0e10cSrcweir 		                            TEST_FILE_SIZE == uFileSize );
3617*cdf0e10cSrcweir 		}
3618*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileSize );
3619*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileSize_001 );
3620*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileSize_002 );
3621*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3622*cdf0e10cSrcweir 	};// class getFileSize
3623*cdf0e10cSrcweir 
3624*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3625*cdf0e10cSrcweir 	// 	testing the method
3626*cdf0e10cSrcweir 	// 	inline ::rtl::OUString getFileName() const
3627*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3628*cdf0e10cSrcweir     class  getFileName : public CppUnit::TestFixture
3629*cdf0e10cSrcweir 	{
3630*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3631*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3632*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3633*cdf0e10cSrcweir 
3634*cdf0e10cSrcweir 	    public:
3635*cdf0e10cSrcweir 		// initialization
3636*cdf0e10cSrcweir 		void setUp( )
3637*cdf0e10cSrcweir 		{
3638*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3639*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3640*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3641*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
3642*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3643*cdf0e10cSrcweir 		}
3644*cdf0e10cSrcweir 
3645*cdf0e10cSrcweir 		void tearDown( )
3646*cdf0e10cSrcweir 		{
3647*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3648*cdf0e10cSrcweir 		}
3649*cdf0e10cSrcweir 
3650*cdf0e10cSrcweir 		// test code.
3651*cdf0e10cSrcweir 		void getFileName_001( )
3652*cdf0e10cSrcweir 		{
3653*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
3654*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3655*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3656*cdf0e10cSrcweir 
3657*cdf0e10cSrcweir 			::rtl::OUString aFileName = rFileStatus.getFileName( );
3658*cdf0e10cSrcweir 
3659*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileName function: name compare with specify",
3660*cdf0e10cSrcweir 		                            sal_True == compareFileName( aFileName, aTmpName2 ) );
3661*cdf0e10cSrcweir 		}
3662*cdf0e10cSrcweir 
3663*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileName );
3664*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileName_001 );
3665*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3666*cdf0e10cSrcweir 	};// class getFileName
3667*cdf0e10cSrcweir 
3668*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3669*cdf0e10cSrcweir 	// 	testing the method
3670*cdf0e10cSrcweir 	// 	inline ::rtl::OUString getFileURL() const
3671*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3672*cdf0e10cSrcweir     class  getFileURL : public CppUnit::TestFixture
3673*cdf0e10cSrcweir 	{
3674*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3675*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3676*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3677*cdf0e10cSrcweir 
3678*cdf0e10cSrcweir 	    public:
3679*cdf0e10cSrcweir 		// initialization
3680*cdf0e10cSrcweir 		void setUp( )
3681*cdf0e10cSrcweir 		{
3682*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
3683*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aTmpName6, rItem );
3684*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3685*cdf0e10cSrcweir 		}
3686*cdf0e10cSrcweir 
3687*cdf0e10cSrcweir 		void tearDown( )
3688*cdf0e10cSrcweir 		{
3689*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
3690*cdf0e10cSrcweir 		}
3691*cdf0e10cSrcweir 
3692*cdf0e10cSrcweir 		// test code.
3693*cdf0e10cSrcweir 		void getFileURL_001( )
3694*cdf0e10cSrcweir 		{
3695*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileURL );
3696*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3697*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError == FileBase::E_None );
3698*cdf0e10cSrcweir 
3699*cdf0e10cSrcweir 			::rtl::OUString aFileURL = rFileStatus.getFileURL( );
3700*cdf0e10cSrcweir 
3701*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileURL function: ",
3702*cdf0e10cSrcweir 		                            sal_True == compareFileName( aFileURL, aTmpName6 ) );
3703*cdf0e10cSrcweir 		}
3704*cdf0e10cSrcweir 
3705*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileURL );
3706*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileURL_001 );
3707*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3708*cdf0e10cSrcweir 	};// class getFileURL
3709*cdf0e10cSrcweir 
3710*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3711*cdf0e10cSrcweir 	// 	testing the method
3712*cdf0e10cSrcweir 	// 	inline ::rtl::OUString getLinkTargetURL() const
3713*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3714*cdf0e10cSrcweir     class  getLinkTargetURL : public CppUnit::TestFixture
3715*cdf0e10cSrcweir 	{
3716*cdf0e10cSrcweir 		::rtl::OUString         aTypeURL;
3717*cdf0e10cSrcweir 		::osl::FileBase::RC     nError;
3718*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
3719*cdf0e10cSrcweir 
3720*cdf0e10cSrcweir 	    public:
3721*cdf0e10cSrcweir 		// test code.
3722*cdf0e10cSrcweir 		// initialization
3723*cdf0e10cSrcweir 		void setUp( )
3724*cdf0e10cSrcweir 		{
3725*cdf0e10cSrcweir 			aTypeURL = aUserDirectoryURL.copy( 0 );
3726*cdf0e10cSrcweir 			concatURL( aTypeURL, aTmpName2 );
3727*cdf0e10cSrcweir 			createTestFile( aTypeURL );
3728*cdf0e10cSrcweir 		}
3729*cdf0e10cSrcweir 
3730*cdf0e10cSrcweir 		void tearDown( )
3731*cdf0e10cSrcweir 		{
3732*cdf0e10cSrcweir 			deleteTestFile( aTypeURL );
3733*cdf0e10cSrcweir 		}
3734*cdf0e10cSrcweir 
3735*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )	       //Link file is not define in Windows
3736*cdf0e10cSrcweir 		void getLinkTargetURL_001( )
3737*cdf0e10cSrcweir 		{
3738*cdf0e10cSrcweir 			//create a link file;
3739*cdf0e10cSrcweir 			::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys );
3740*cdf0e10cSrcweir 			( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file");
3741*cdf0e10cSrcweir 			( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpname");
3742*cdf0e10cSrcweir 
3743*cdf0e10cSrcweir                 rtl::OString strLinkFileName, strSrcFileName;
3744*cdf0e10cSrcweir                 strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US );
3745*cdf0e10cSrcweir                 strSrcFileName  = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US );
3746*cdf0e10cSrcweir 
3747*cdf0e10cSrcweir 			sal_Int32 fd;
3748*cdf0e10cSrcweir                 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() );
3749*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "in creating link file",  fd == 0 );
3750*cdf0e10cSrcweir 
3751*cdf0e10cSrcweir 			//get linkTarget URL
3752*cdf0e10cSrcweir 			nError = ::osl::DirectoryItem::get( aLnkURL1, rItem );
3753*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "in getting link file item", nError == FileBase::E_None );
3754*cdf0e10cSrcweir 
3755*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_LinkTargetURL );
3756*cdf0e10cSrcweir 			nError = rItem.getFileStatus( rFileStatus );
3757*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "in getting link file status", nError == FileBase::E_None );
3758*cdf0e10cSrcweir 			::rtl::OUString aFileURL = rFileStatus.getLinkTargetURL( );
3759*cdf0e10cSrcweir 
3760*cdf0e10cSrcweir 			//remove link file
3761*cdf0e10cSrcweir                 fd = remove( strLinkFileName.getStr() );
3762*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "in deleting link file",  fd == 0 );
3763*cdf0e10cSrcweir 
3764*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getLinkTargetURL function: Solaris version, creat a file, and a link file link to it, get its LinkTargetURL and compare",
3765*cdf0e10cSrcweir 		                            sal_True == compareFileName( aFileURL, aTypeURL ) );
3766*cdf0e10cSrcweir 		}
3767*cdf0e10cSrcweir #else
3768*cdf0e10cSrcweir 		void getLinkTargetURL_001( )
3769*cdf0e10cSrcweir 		{
3770*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getLinkTargetURL function: Windows version, not tested",
3771*cdf0e10cSrcweir 		                            1 );
3772*cdf0e10cSrcweir 		}
3773*cdf0e10cSrcweir #endif
3774*cdf0e10cSrcweir 
3775*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getLinkTargetURL );
3776*cdf0e10cSrcweir 		CPPUNIT_TEST( getLinkTargetURL_001 );
3777*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3778*cdf0e10cSrcweir 	};// class getLinkTargetURL
3779*cdf0e10cSrcweir 
3780*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
3781*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::ctors, "osl_FileStatus" );
3782*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::isValid, "osl_FileStatus" );
3783*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getFileType, "osl_FileStatus" );
3784*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getAttributes, "osl_FileStatus" );
3785*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getAccessTime, "osl_FileStatus" );
3786*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getModifyTime, "osl_FileStatus" );
3787*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getFileSize, "osl_FileStatus" );
3788*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getFileName, "osl_FileStatus" );
3789*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getFileURL, "osl_FileStatus" );
3790*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileStatus::getLinkTargetURL, "osl_FileStatus" );
3791*cdf0e10cSrcweir }// namespace osl_FileStatus
3792*cdf0e10cSrcweir 
3793*cdf0e10cSrcweir 
3794*cdf0e10cSrcweir 
3795*cdf0e10cSrcweir //------------------------------------------------------------------------
3796*cdf0e10cSrcweir // Beginning of the test cases for File class
3797*cdf0e10cSrcweir //------------------------------------------------------------------------
3798*cdf0e10cSrcweir namespace osl_File
3799*cdf0e10cSrcweir {
3800*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3801*cdf0e10cSrcweir 	// 	testing the method
3802*cdf0e10cSrcweir 	// 	File( const ::rtl::OUString& ustrFileURL )
3803*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3804*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
3805*cdf0e10cSrcweir 	{
3806*cdf0e10cSrcweir 		// ::osl::FileBase::RC     nError1;
3807*cdf0e10cSrcweir 
3808*cdf0e10cSrcweir 	    public:
3809*cdf0e10cSrcweir 		// initialization
3810*cdf0e10cSrcweir 		void setUp( )
3811*cdf0e10cSrcweir 		{
3812*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
3813*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
3814*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
3815*cdf0e10cSrcweir 		}
3816*cdf0e10cSrcweir 
3817*cdf0e10cSrcweir 		void tearDown( )
3818*cdf0e10cSrcweir 		{
3819*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
3820*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
3821*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
3822*cdf0e10cSrcweir 		}
3823*cdf0e10cSrcweir 
3824*cdf0e10cSrcweir 		// test code.
3825*cdf0e10cSrcweir 		void ctors_001( )
3826*cdf0e10cSrcweir 		{
3827*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
3828*cdf0e10cSrcweir 
3829*cdf0e10cSrcweir             ::osl::FileBase::RC nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
3830*cdf0e10cSrcweir             ::osl::FileBase::RC nError2 = testFile.close( );
3831*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: initialize a File and test its open and close",
3832*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) && ( ::osl::FileBase::E_None == nError2 ) );
3833*cdf0e10cSrcweir 		}
3834*cdf0e10cSrcweir 
3835*cdf0e10cSrcweir 		void ctors_002( )
3836*cdf0e10cSrcweir 		{
3837*cdf0e10cSrcweir 			::osl::File testFile( aTmpName5 );
3838*cdf0e10cSrcweir 			sal_Char buffer[30] = "Test for File constructor";
3839*cdf0e10cSrcweir 			sal_uInt64 nCount;
3840*cdf0e10cSrcweir 
3841*cdf0e10cSrcweir                 ::osl::FileBase::RC nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
3842*cdf0e10cSrcweir                 ::osl::FileBase::RC nError2 = testFile.write( buffer, 30, nCount );
3843*cdf0e10cSrcweir 			testFile.close( );
3844*cdf0e10cSrcweir 
3845*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: test relative file URL, this test show that relative file URL is also acceptable",
3846*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) && ( ::osl::FileBase::E_None == nError2 )  );
3847*cdf0e10cSrcweir 		}
3848*cdf0e10cSrcweir 
3849*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
3850*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
3851*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_002 );
3852*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3853*cdf0e10cSrcweir 	};// class ctors
3854*cdf0e10cSrcweir 
3855*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3856*cdf0e10cSrcweir 	// 	testing the method
3857*cdf0e10cSrcweir 	// 	inline RC open( sal_uInt32 uFlags )
3858*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3859*cdf0e10cSrcweir     class  open : public CppUnit::TestFixture
3860*cdf0e10cSrcweir 	{
3861*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2, nError3;
3862*cdf0e10cSrcweir 
3863*cdf0e10cSrcweir 	    public:
3864*cdf0e10cSrcweir 		// initialization
3865*cdf0e10cSrcweir 		void setUp( )
3866*cdf0e10cSrcweir 		{
3867*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
3868*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
3869*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
3870*cdf0e10cSrcweir 		}
3871*cdf0e10cSrcweir 
3872*cdf0e10cSrcweir 		void tearDown( )
3873*cdf0e10cSrcweir 		{
3874*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
3875*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
3876*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
3877*cdf0e10cSrcweir 		}
3878*cdf0e10cSrcweir 
3879*cdf0e10cSrcweir 		// test code.
3880*cdf0e10cSrcweir 		void open_001( )
3881*cdf0e10cSrcweir 		{
3882*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
3883*cdf0e10cSrcweir 
3884*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
3885*cdf0e10cSrcweir 			nError2 = testFile.close( );
3886*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("close error", ::osl::FileBase::E_None == nError2 );
3887*cdf0e10cSrcweir 
3888*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a regular file",
3889*cdf0e10cSrcweir 				 					::osl::FileBase::E_None == nError1 );
3890*cdf0e10cSrcweir 		}
3891*cdf0e10cSrcweir 
3892*cdf0e10cSrcweir 		void open_002( )
3893*cdf0e10cSrcweir 		{
3894*cdf0e10cSrcweir 			::osl::File testFile( aTmpName3 );
3895*cdf0e10cSrcweir 
3896*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read );
3897*cdf0e10cSrcweir 
3898*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a directory",
3899*cdf0e10cSrcweir 				 					( File::E_INVAL == nError1 ) || ( File::E_ACCES == nError1 ) );
3900*cdf0e10cSrcweir 		}
3901*cdf0e10cSrcweir 
3902*cdf0e10cSrcweir 		void open_003( )
3903*cdf0e10cSrcweir 		{
3904*cdf0e10cSrcweir 			::osl::File testFile( aCanURL1 );
3905*cdf0e10cSrcweir 
3906*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
3907*cdf0e10cSrcweir 
3908*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a non-exist file",
3909*cdf0e10cSrcweir 				 					File::E_NOENT == nError1 );
3910*cdf0e10cSrcweir 		}
3911*cdf0e10cSrcweir 
3912*cdf0e10cSrcweir 		void open_004( )
3913*cdf0e10cSrcweir 		{
3914*cdf0e10cSrcweir 			::rtl::OUString  aTestFile( aRootURL );
3915*cdf0e10cSrcweir 			concatURL( aTestFile, aTmpName2 );
3916*cdf0e10cSrcweir 			::osl::File testFile( aTestFile );
3917*cdf0e10cSrcweir 
3918*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Create );
3919*cdf0e10cSrcweir 			sal_Bool bOK = ( File::E_ACCES == nError1 );
3920*cdf0e10cSrcweir #if defined (WNT )
3921*cdf0e10cSrcweir 			bOK = sal_True;  /// in Windows, you can create file in c:/ any way.
3922*cdf0e10cSrcweir 			testFile.close( );
3923*cdf0e10cSrcweir 			deleteTestFile( aTestFile);
3924*cdf0e10cSrcweir #endif
3925*cdf0e10cSrcweir 
3926*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: create an illegal file",
3927*cdf0e10cSrcweir 				 					 bOK == sal_True );
3928*cdf0e10cSrcweir 		}
3929*cdf0e10cSrcweir 
3930*cdf0e10cSrcweir 		void open_005( )
3931*cdf0e10cSrcweir 		{
3932*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
3933*cdf0e10cSrcweir 
3934*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Create );
3935*cdf0e10cSrcweir 
3936*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: create an exist file",
3937*cdf0e10cSrcweir 				 					File::E_EXIST == nError1 );
3938*cdf0e10cSrcweir 		}
3939*cdf0e10cSrcweir 
3940*cdf0e10cSrcweir 		void open_006( )
3941*cdf0e10cSrcweir 		{
3942*cdf0e10cSrcweir 			::osl::File testFile( aCanURL1 );
3943*cdf0e10cSrcweir 			sal_Char buffer_write[30] = "Test for File open";
3944*cdf0e10cSrcweir 			sal_Char buffer_read[30];
3945*cdf0e10cSrcweir 			sal_uInt64 nCount_write, nCount_read;
3946*cdf0e10cSrcweir 
3947*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create );
3948*cdf0e10cSrcweir 			nError2 = testFile.write( buffer_write, 30, nCount_write );
3949*cdf0e10cSrcweir  			::osl::FileBase::RC nError4 = testFile.setPos( Pos_Absolut, 0 );
3950*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError4 );
3951*cdf0e10cSrcweir 			nError3 = testFile.read( buffer_read, 10, nCount_read );
3952*cdf0e10cSrcweir 
3953*cdf0e10cSrcweir  			::osl::FileBase::RC nError5 = testFile.close( );
3954*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError5 );
3955*cdf0e10cSrcweir 			::osl::FileBase::RC nError6 = testFile.remove( aCanURL1 );
3956*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError6 );
3957*cdf0e10cSrcweir 
3958*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: test for OpenFlag_Read,OpenFlag_Write and OpenFlag_Create",
3959*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError1 ) &&
3960*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) &&
3961*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError3 ) &&
3962*cdf0e10cSrcweir 			                        ( 30 == nCount_write ) &&
3963*cdf0e10cSrcweir 			                        ( 10 == nCount_read ) );
3964*cdf0e10cSrcweir 		}
3965*cdf0e10cSrcweir 
3966*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( open );
3967*cdf0e10cSrcweir 		CPPUNIT_TEST( open_001 );
3968*cdf0e10cSrcweir 		CPPUNIT_TEST( open_002 );
3969*cdf0e10cSrcweir 		CPPUNIT_TEST( open_003 );
3970*cdf0e10cSrcweir 		CPPUNIT_TEST( open_004 );
3971*cdf0e10cSrcweir 		CPPUNIT_TEST( open_005 );
3972*cdf0e10cSrcweir 		CPPUNIT_TEST( open_006 );
3973*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
3974*cdf0e10cSrcweir 	};// class open
3975*cdf0e10cSrcweir 
3976*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3977*cdf0e10cSrcweir 	// 	testing the method
3978*cdf0e10cSrcweir 	// 	inline RC close()
3979*cdf0e10cSrcweir 	//---------------------------------------------------------------------
3980*cdf0e10cSrcweir     class  close : public CppUnit::TestFixture
3981*cdf0e10cSrcweir 	{
3982*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2, nError3;
3983*cdf0e10cSrcweir 
3984*cdf0e10cSrcweir 	    public:
3985*cdf0e10cSrcweir 		// initialization
3986*cdf0e10cSrcweir 		void setUp( )
3987*cdf0e10cSrcweir 		{
3988*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
3989*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
3990*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
3991*cdf0e10cSrcweir 		}
3992*cdf0e10cSrcweir 
3993*cdf0e10cSrcweir 		void tearDown( )
3994*cdf0e10cSrcweir 		{
3995*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
3996*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
3997*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
3998*cdf0e10cSrcweir 		}
3999*cdf0e10cSrcweir 
4000*cdf0e10cSrcweir 		// test code.
4001*cdf0e10cSrcweir 		void close_001( )
4002*cdf0e10cSrcweir 		{
4003*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4004*cdf0e10cSrcweir 
4005*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4006*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4007*cdf0e10cSrcweir 
4008*cdf0e10cSrcweir 			nError2 = testFile.close( );
4009*cdf0e10cSrcweir 
4010*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for close function: close a regular file",
4011*cdf0e10cSrcweir 				 					::osl::FileBase::E_None == nError2 );
4012*cdf0e10cSrcweir 		}
4013*cdf0e10cSrcweir 
4014*cdf0e10cSrcweir 		void close_002( )
4015*cdf0e10cSrcweir 		{
4016*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4017*cdf0e10cSrcweir 
4018*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4019*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4020*cdf0e10cSrcweir 
4021*cdf0e10cSrcweir 			nError2 = testFile.close( );
4022*cdf0e10cSrcweir 
4023*cdf0e10cSrcweir  			nError3 = testFile.setPos( Pos_Absolut, 0 );
4024*cdf0e10cSrcweir 
4025*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for close function: manipulate a file after it has been closed",
4026*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError2 ) &&
4027*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None != nError3 ) );
4028*cdf0e10cSrcweir 		}
4029*cdf0e10cSrcweir 
4030*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( close );
4031*cdf0e10cSrcweir 		CPPUNIT_TEST( close_001 );
4032*cdf0e10cSrcweir 		CPPUNIT_TEST( close_002 );
4033*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4034*cdf0e10cSrcweir 	};// class close
4035*cdf0e10cSrcweir 
4036*cdf0e10cSrcweir 
4037*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4038*cdf0e10cSrcweir 	// 	testing the method
4039*cdf0e10cSrcweir 	// 	inline RC setPos( sal_uInt32 uHow, sal_Int64 uPos )
4040*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4041*cdf0e10cSrcweir     class  setPos : public CppUnit::TestFixture
4042*cdf0e10cSrcweir 	{
4043*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1;
4044*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4045*cdf0e10cSrcweir 
4046*cdf0e10cSrcweir 	    public:
4047*cdf0e10cSrcweir 		// initialization
4048*cdf0e10cSrcweir 		void setUp( )
4049*cdf0e10cSrcweir 		{
4050*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4051*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4052*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4053*cdf0e10cSrcweir 
4054*cdf0e10cSrcweir 			//write chars into the file.
4055*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4056*cdf0e10cSrcweir 
4057*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4058*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4059*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4060*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4061*cdf0e10cSrcweir  			nError1 = testFile.close( );
4062*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4063*cdf0e10cSrcweir 		}
4064*cdf0e10cSrcweir 
4065*cdf0e10cSrcweir 		void tearDown( )
4066*cdf0e10cSrcweir 		{
4067*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4068*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4069*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4070*cdf0e10cSrcweir 		}
4071*cdf0e10cSrcweir 
4072*cdf0e10cSrcweir 		// test code.
4073*cdf0e10cSrcweir 		void setPos_001( )
4074*cdf0e10cSrcweir 		{
4075*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4076*cdf0e10cSrcweir 			sal_Char buffer_read[2];
4077*cdf0e10cSrcweir 
4078*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4079*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4080*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, 26 );
4081*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4082*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 1, nCount_read );
4083*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4084*cdf0e10cSrcweir 			nError1 = testFile.close( );
4085*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4086*cdf0e10cSrcweir 
4087*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setPos function: test for Pos_Absolut, set the position to 26, test if the 26th char in file is correct",
4088*cdf0e10cSrcweir 				 					buffer_read[0] == pBuffer_Char[26] );
4089*cdf0e10cSrcweir 		}
4090*cdf0e10cSrcweir 
4091*cdf0e10cSrcweir 		void setPos_002( )
4092*cdf0e10cSrcweir 		{
4093*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4094*cdf0e10cSrcweir 			sal_Char buffer_read[2];
4095*cdf0e10cSrcweir 
4096*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4097*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4098*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, sizeof( pBuffer_Char ) - 2 );
4099*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4100*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Current, 0);
4101*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4102*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 1, nCount_read );
4103*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4104*cdf0e10cSrcweir 			nError1 = testFile.close( );
4105*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4106*cdf0e10cSrcweir 
4107*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setPos function: test for Pos_Current, set the position to end, test if the ( end -1 ) char in file is correct",
4108*cdf0e10cSrcweir 				 					buffer_read[0] == pBuffer_Char[sizeof( pBuffer_Char ) - 2] );
4109*cdf0e10cSrcweir 		}
4110*cdf0e10cSrcweir 
4111*cdf0e10cSrcweir 		void setPos_003( )
4112*cdf0e10cSrcweir 		{
4113*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4114*cdf0e10cSrcweir 			sal_Char buffer_read[2];
4115*cdf0e10cSrcweir 
4116*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4117*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4118*cdf0e10cSrcweir 			//the file size is smaller than 100
4119*cdf0e10cSrcweir 			nError1 = testFile.setPos( Pos_End,  -100 );
4120*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "should return error", ::osl::FileBase::E_INVAL == nError1 );
4121*cdf0e10cSrcweir 
4122*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_End, -53 );
4123*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4124*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 1, nCount_read );
4125*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4126*cdf0e10cSrcweir 			nError1 = testFile.close( );
4127*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4128*cdf0e10cSrcweir 
4129*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setPos function: test for Pos_End, set the position to end, test if the first char in file is correct",
4130*cdf0e10cSrcweir 				 					buffer_read[0] == pBuffer_Char[0] );
4131*cdf0e10cSrcweir 		}
4132*cdf0e10cSrcweir 
4133*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( setPos );
4134*cdf0e10cSrcweir 		CPPUNIT_TEST( setPos_001 );
4135*cdf0e10cSrcweir 		CPPUNIT_TEST( setPos_002 );
4136*cdf0e10cSrcweir 		CPPUNIT_TEST( setPos_003 );
4137*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4138*cdf0e10cSrcweir 	};// class setPos
4139*cdf0e10cSrcweir 
4140*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4141*cdf0e10cSrcweir 	// 	testing the method
4142*cdf0e10cSrcweir 	// 	inline RC getPos( sal_uInt64& uPos )
4143*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4144*cdf0e10cSrcweir     class  getPos : public CppUnit::TestFixture
4145*cdf0e10cSrcweir 	{
4146*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4147*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4148*cdf0e10cSrcweir 
4149*cdf0e10cSrcweir 	    public:
4150*cdf0e10cSrcweir 		// initialization
4151*cdf0e10cSrcweir 		void setUp( )
4152*cdf0e10cSrcweir 		{
4153*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4154*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4155*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4156*cdf0e10cSrcweir 
4157*cdf0e10cSrcweir 			//write chars into the file.
4158*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4159*cdf0e10cSrcweir 
4160*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4161*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4162*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4163*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4164*cdf0e10cSrcweir  			nError1 = testFile.close( );
4165*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4166*cdf0e10cSrcweir 		}
4167*cdf0e10cSrcweir 
4168*cdf0e10cSrcweir 		void tearDown( )
4169*cdf0e10cSrcweir 		{
4170*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4171*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4172*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4173*cdf0e10cSrcweir 		}
4174*cdf0e10cSrcweir 
4175*cdf0e10cSrcweir 		// test code.
4176*cdf0e10cSrcweir 		void getPos_001( )
4177*cdf0e10cSrcweir 		{
4178*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4179*cdf0e10cSrcweir 			sal_uInt64 nFilePointer;
4180*cdf0e10cSrcweir 
4181*cdf0e10cSrcweir 			nError1 = testFile.getPos( nFilePointer );
4182*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_INVAL == nError1 );
4183*cdf0e10cSrcweir 
4184*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4185*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4186*cdf0e10cSrcweir 
4187*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, 26 );
4188*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4189*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4190*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4191*cdf0e10cSrcweir 
4192*cdf0e10cSrcweir 			nError1 = testFile.close( );
4193*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4194*cdf0e10cSrcweir 
4195*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getPos function: set the position to 26, get position and check if it is right",
4196*cdf0e10cSrcweir 				 					26 == nFilePointer );
4197*cdf0e10cSrcweir 		}
4198*cdf0e10cSrcweir 
4199*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getPos );
4200*cdf0e10cSrcweir 		CPPUNIT_TEST( getPos_001 );
4201*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4202*cdf0e10cSrcweir 	};// class getPos
4203*cdf0e10cSrcweir 
4204*cdf0e10cSrcweir 
4205*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4206*cdf0e10cSrcweir 	// 	testing the method
4207*cdf0e10cSrcweir 	// 	inline RC isEndOfFile( sal_Bool *pIsEOF )
4208*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4209*cdf0e10cSrcweir     class  isEndOfFile : public CppUnit::TestFixture
4210*cdf0e10cSrcweir 	{
4211*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4212*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4213*cdf0e10cSrcweir 
4214*cdf0e10cSrcweir 	    public:
4215*cdf0e10cSrcweir 		// initialization
4216*cdf0e10cSrcweir 		void setUp( )
4217*cdf0e10cSrcweir 		{
4218*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4219*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4220*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4221*cdf0e10cSrcweir 
4222*cdf0e10cSrcweir 			//write chars into the file.
4223*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4224*cdf0e10cSrcweir 
4225*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4226*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4227*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4228*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4229*cdf0e10cSrcweir  			nError1 = testFile.close( );
4230*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4231*cdf0e10cSrcweir 		}
4232*cdf0e10cSrcweir 
4233*cdf0e10cSrcweir 		void tearDown( )
4234*cdf0e10cSrcweir 		{
4235*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4236*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4237*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4238*cdf0e10cSrcweir 		}
4239*cdf0e10cSrcweir 
4240*cdf0e10cSrcweir 		// test code.
4241*cdf0e10cSrcweir 		void isEndOfFile_001( )
4242*cdf0e10cSrcweir 		{
4243*cdf0e10cSrcweir 			::osl::File   testFile( aTmpName4 );
4244*cdf0e10cSrcweir 			sal_Bool      bEOF  = sal_False;
4245*cdf0e10cSrcweir 			sal_Bool      *pEOF = &bEOF;
4246*cdf0e10cSrcweir 
4247*cdf0e10cSrcweir 
4248*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4249*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4250*cdf0e10cSrcweir 
4251*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_End, 0 );
4252*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4253*cdf0e10cSrcweir 			nError1 = testFile.isEndOfFile( pEOF );
4254*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4255*cdf0e10cSrcweir 
4256*cdf0e10cSrcweir 			nError1 = testFile.close( );
4257*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4258*cdf0e10cSrcweir 
4259*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isEndOfFile function: set the position to end, check if reach end",
4260*cdf0e10cSrcweir 				 					sal_True == *pEOF );
4261*cdf0e10cSrcweir 		}
4262*cdf0e10cSrcweir 
4263*cdf0e10cSrcweir 		void isEndOfFile_002( )
4264*cdf0e10cSrcweir 		{
4265*cdf0e10cSrcweir  			::osl::File   testFile( aTmpName4 );
4266*cdf0e10cSrcweir 			sal_Bool      bEOF  = sal_False;
4267*cdf0e10cSrcweir 			sal_Bool      *pEOF = &bEOF;
4268*cdf0e10cSrcweir 			sal_uInt64    nFilePointer = 0;
4269*cdf0e10cSrcweir 
4270*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4271*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4272*cdf0e10cSrcweir 
4273*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, 0 );
4274*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4275*cdf0e10cSrcweir 			*pEOF = sal_False;
4276*cdf0e10cSrcweir  			while ( !( *pEOF ) )
4277*cdf0e10cSrcweir 			{
4278*cdf0e10cSrcweir 				nError1 = testFile.isEndOfFile( pEOF );
4279*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4280*cdf0e10cSrcweir 				nError1 = testFile.setPos( Pos_Current, 1 );
4281*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4282*cdf0e10cSrcweir 			}
4283*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4284*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4285*cdf0e10cSrcweir 
4286*cdf0e10cSrcweir 			nError1 = testFile.close( );
4287*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4288*cdf0e10cSrcweir 
4289*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isEndOfFile function: use isEndOfFile to move pointer step by step",
4290*cdf0e10cSrcweir 				 					 sizeof( pBuffer_Char ) + 1 == nFilePointer  );
4291*cdf0e10cSrcweir 		}
4292*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( isEndOfFile );
4293*cdf0e10cSrcweir 		CPPUNIT_TEST( isEndOfFile_001 );
4294*cdf0e10cSrcweir 		CPPUNIT_TEST( isEndOfFile_002 );
4295*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4296*cdf0e10cSrcweir 	};// class isEndOfFile
4297*cdf0e10cSrcweir 
4298*cdf0e10cSrcweir 
4299*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4300*cdf0e10cSrcweir 	// 	testing the method
4301*cdf0e10cSrcweir 	// 	inline RC setSize( sal_uInt64 uSize )
4302*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4303*cdf0e10cSrcweir     class  setSize : public CppUnit::TestFixture
4304*cdf0e10cSrcweir 	{
4305*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4306*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4307*cdf0e10cSrcweir 
4308*cdf0e10cSrcweir 	    public:
4309*cdf0e10cSrcweir 		// initialization
4310*cdf0e10cSrcweir 		void setUp( )
4311*cdf0e10cSrcweir 		{
4312*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4313*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4314*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4315*cdf0e10cSrcweir 
4316*cdf0e10cSrcweir 			//write chars into the file.
4317*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4318*cdf0e10cSrcweir 
4319*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4320*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4321*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4322*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4323*cdf0e10cSrcweir  			nError1 = testFile.close( );
4324*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4325*cdf0e10cSrcweir 		}
4326*cdf0e10cSrcweir 
4327*cdf0e10cSrcweir 		void tearDown( )
4328*cdf0e10cSrcweir 		{
4329*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4330*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4331*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4332*cdf0e10cSrcweir 		}
4333*cdf0e10cSrcweir 
4334*cdf0e10cSrcweir 		// test code.
4335*cdf0e10cSrcweir 		void setSize_001( )
4336*cdf0e10cSrcweir 		{
4337*cdf0e10cSrcweir 			::osl::File   testFile( aTmpName4 );
4338*cdf0e10cSrcweir 			// sal_Bool      bEOF  = sal_False;
4339*cdf0e10cSrcweir 			// sal_Bool      *pEOF = &bEOF;
4340*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4341*cdf0e10cSrcweir 
4342*cdf0e10cSrcweir 
4343*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4344*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4345*cdf0e10cSrcweir 
4346*cdf0e10cSrcweir 			//enlarge the file to size of 100;
4347*cdf0e10cSrcweir  			nError1 = testFile.setSize( 100 );
4348*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4349*cdf0e10cSrcweir 
4350*cdf0e10cSrcweir 			//get the file size;
4351*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_End, 0 );
4352*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4353*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4354*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4355*cdf0e10cSrcweir 
4356*cdf0e10cSrcweir 			nError1 = testFile.close( );
4357*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4358*cdf0e10cSrcweir 
4359*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setSize function: enlarge the file ",
4360*cdf0e10cSrcweir 				 					100 == nFilePointer );
4361*cdf0e10cSrcweir 		}
4362*cdf0e10cSrcweir 
4363*cdf0e10cSrcweir 		void setSize_002( )
4364*cdf0e10cSrcweir 		{
4365*cdf0e10cSrcweir 			::osl::File   testFile( aTmpName4 );
4366*cdf0e10cSrcweir 			// sal_Bool      bEOF  = sal_False;
4367*cdf0e10cSrcweir 			// sal_Bool      *pEOF = &bEOF;
4368*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4369*cdf0e10cSrcweir 
4370*cdf0e10cSrcweir 
4371*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4372*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4373*cdf0e10cSrcweir 
4374*cdf0e10cSrcweir 			//enlarge the file to size of 100;
4375*cdf0e10cSrcweir  			nError1 = testFile.setSize( 10 );
4376*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4377*cdf0e10cSrcweir 
4378*cdf0e10cSrcweir 			//get the file size;
4379*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_End, 0 );
4380*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4381*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4382*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4383*cdf0e10cSrcweir 
4384*cdf0e10cSrcweir 			nError1 = testFile.close( );
4385*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4386*cdf0e10cSrcweir 
4387*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setSize function: truncate the file ",
4388*cdf0e10cSrcweir 				 					10 == nFilePointer );
4389*cdf0e10cSrcweir 		}
4390*cdf0e10cSrcweir 	  /*	        void setSize_003( )
4391*cdf0e10cSrcweir 		{
4392*cdf0e10cSrcweir 			::osl::File   testFile( aTmpName4 );
4393*cdf0e10cSrcweir 			// sal_Bool      bEOF  = sal_False;
4394*cdf0e10cSrcweir 			// sal_Bool      *pEOF = &bEOF;
4395*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4396*cdf0e10cSrcweir 
4397*cdf0e10cSrcweir 
4398*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4399*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4400*cdf0e10cSrcweir 
4401*cdf0e10cSrcweir 			//enlarge the file to size of 100;
4402*cdf0e10cSrcweir  			nError1 = testFile.setSize( 10 );
4403*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4404*cdf0e10cSrcweir 
4405*cdf0e10cSrcweir 			//get the file size;
4406*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_End, 0 );
4407*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4408*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4409*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4410*cdf0e10cSrcweir 
4411*cdf0e10cSrcweir 			nError1 = testFile.close( );
4412*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4413*cdf0e10cSrcweir 
4414*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setSize function: truncate the file ",
4415*cdf0e10cSrcweir 				 					10 == nFilePointer );
4416*cdf0e10cSrcweir 		}
4417*cdf0e10cSrcweir 	  */
4418*cdf0e10cSrcweir 
4419*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( setSize );
4420*cdf0e10cSrcweir 		CPPUNIT_TEST( setSize_001 );
4421*cdf0e10cSrcweir 		CPPUNIT_TEST( setSize_002 );
4422*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4423*cdf0e10cSrcweir 	};// class setSize
4424*cdf0e10cSrcweir 
4425*cdf0e10cSrcweir 
4426*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4427*cdf0e10cSrcweir 	// 	testing the method
4428*cdf0e10cSrcweir 	// 	inline RC read( void *pBuffer, sal_uInt64 uBytesRequested, sal_uInt64& rBytesRead )
4429*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4430*cdf0e10cSrcweir     class  read : public CppUnit::TestFixture
4431*cdf0e10cSrcweir 	{
4432*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4433*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4434*cdf0e10cSrcweir 
4435*cdf0e10cSrcweir 	    public:
4436*cdf0e10cSrcweir 		// initialization
4437*cdf0e10cSrcweir 		void setUp( )
4438*cdf0e10cSrcweir 		{
4439*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4440*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4441*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4442*cdf0e10cSrcweir 
4443*cdf0e10cSrcweir 			//write chars into the file.
4444*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4445*cdf0e10cSrcweir 
4446*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4447*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4448*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4449*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4450*cdf0e10cSrcweir  			nError1 = testFile.close( );
4451*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4452*cdf0e10cSrcweir 		}
4453*cdf0e10cSrcweir 
4454*cdf0e10cSrcweir 		void tearDown( )
4455*cdf0e10cSrcweir 		{
4456*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4457*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4458*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4459*cdf0e10cSrcweir 		}
4460*cdf0e10cSrcweir 
4461*cdf0e10cSrcweir 		// test code.
4462*cdf0e10cSrcweir 		void read_001( )
4463*cdf0e10cSrcweir 		{
4464*cdf0e10cSrcweir 			::osl::File    testFile( aTmpName4 );
4465*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4466*cdf0e10cSrcweir 			sal_Char       buffer_read[10];
4467*cdf0e10cSrcweir 
4468*cdf0e10cSrcweir 
4469*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4470*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4471*cdf0e10cSrcweir 
4472*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 10, nCount_read );
4473*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4474*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4475*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4476*cdf0e10cSrcweir 
4477*cdf0e10cSrcweir 			nError1 = testFile.close( );
4478*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4479*cdf0e10cSrcweir 
4480*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for read function: read whole content in the file to a buffer",
4481*cdf0e10cSrcweir 				 					( 10 == nFilePointer ) && ( 0 == strncmp( buffer_read, pBuffer_Char, 10 ) ) );
4482*cdf0e10cSrcweir 		}
4483*cdf0e10cSrcweir 
4484*cdf0e10cSrcweir 		void read_002( )
4485*cdf0e10cSrcweir 		{
4486*cdf0e10cSrcweir 			::osl::File    testFile( aTmpName4 );
4487*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4488*cdf0e10cSrcweir 			sal_Char       buffer_read[26];
4489*cdf0e10cSrcweir 
4490*cdf0e10cSrcweir 
4491*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4492*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4493*cdf0e10cSrcweir 
4494*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, 26 );
4495*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4496*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 26, nCount_read );
4497*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4498*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4499*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4500*cdf0e10cSrcweir 
4501*cdf0e10cSrcweir 			nError1 = testFile.close( );
4502*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4503*cdf0e10cSrcweir 
4504*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for read function: read from a special positon in the file",
4505*cdf0e10cSrcweir 				 					( 52 == nFilePointer ) && ( 26 == nCount_read ) && ( 0 == strncmp( buffer_read, &pBuffer_Char[26], 26 ) ) );
4506*cdf0e10cSrcweir 		}
4507*cdf0e10cSrcweir 
4508*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( read );
4509*cdf0e10cSrcweir 		CPPUNIT_TEST( read_001 );
4510*cdf0e10cSrcweir 		CPPUNIT_TEST( read_002 );
4511*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4512*cdf0e10cSrcweir 	};// class read
4513*cdf0e10cSrcweir 
4514*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4515*cdf0e10cSrcweir 	// 	testing the method
4516*cdf0e10cSrcweir 	// 	inline RC write(const void *pBuffer, sal_uInt64 uBytesToWrite, sal_uInt64& rBytesWritten)
4517*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4518*cdf0e10cSrcweir     class  write : public CppUnit::TestFixture
4519*cdf0e10cSrcweir 	{
4520*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4521*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4522*cdf0e10cSrcweir 
4523*cdf0e10cSrcweir 	    public:
4524*cdf0e10cSrcweir 		// initialization
4525*cdf0e10cSrcweir 		void setUp( )
4526*cdf0e10cSrcweir 		{
4527*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
4528*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
4529*cdf0e10cSrcweir 		}
4530*cdf0e10cSrcweir 
4531*cdf0e10cSrcweir 		void tearDown( )
4532*cdf0e10cSrcweir 		{
4533*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
4534*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
4535*cdf0e10cSrcweir 		}
4536*cdf0e10cSrcweir 
4537*cdf0e10cSrcweir 		// test code.
4538*cdf0e10cSrcweir 		void write_001( )
4539*cdf0e10cSrcweir 		{
4540*cdf0e10cSrcweir 			::osl::File    testFile( aTmpName6 );
4541*cdf0e10cSrcweir 			sal_uInt64     nFilePointer;
4542*cdf0e10cSrcweir 			sal_Char       buffer_read[10];
4543*cdf0e10cSrcweir 
4544*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4545*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4546*cdf0e10cSrcweir 
4547*cdf0e10cSrcweir 			//write chars into the file.
4548*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, 10, nCount_write );
4549*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4550*cdf0e10cSrcweir 			//get the current pointer;
4551*cdf0e10cSrcweir  			nError1 = testFile.getPos( nFilePointer );
4552*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4553*cdf0e10cSrcweir 			//reset pointer to the begining;
4554*cdf0e10cSrcweir  			nError1 = testFile.setPos( Pos_Absolut, 0 );
4555*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4556*cdf0e10cSrcweir 			nError1 = testFile.read( buffer_read, 10, nCount_read );
4557*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4558*cdf0e10cSrcweir 
4559*cdf0e10cSrcweir 			nError1 = testFile.close( );
4560*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4561*cdf0e10cSrcweir 
4562*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for write function: read whole content in the file to a buffer. Note, buffer size can not smaller than the read size",
4563*cdf0e10cSrcweir 				 					( 10 == nFilePointer ) &&
4564*cdf0e10cSrcweir 			                        ( 0 == strncmp( buffer_read, pBuffer_Char, 10 ) ) &&
4565*cdf0e10cSrcweir 									( 10 == nCount_write ) );
4566*cdf0e10cSrcweir 		}
4567*cdf0e10cSrcweir 
4568*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( write );
4569*cdf0e10cSrcweir 		CPPUNIT_TEST( write_001 );
4570*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4571*cdf0e10cSrcweir 	};// class write
4572*cdf0e10cSrcweir 
4573*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4574*cdf0e10cSrcweir 	// 	testing the method
4575*cdf0e10cSrcweir 	// 	inline RC readLine( ::rtl::ByteSequence& aSeq )
4576*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4577*cdf0e10cSrcweir     class  readLine : public CppUnit::TestFixture
4578*cdf0e10cSrcweir 	{
4579*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4580*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4581*cdf0e10cSrcweir 		::rtl::ByteSequence      aSequence;
4582*cdf0e10cSrcweir 
4583*cdf0e10cSrcweir 	    public:
4584*cdf0e10cSrcweir 		// initialization
4585*cdf0e10cSrcweir 		void setUp( )
4586*cdf0e10cSrcweir 		{
4587*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
4588*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
4589*cdf0e10cSrcweir 
4590*cdf0e10cSrcweir 			//write some strings into the file.
4591*cdf0e10cSrcweir 			::osl::File testFile( aTmpName6 );
4592*cdf0e10cSrcweir 			sal_Char ppStrSeq[3][27]  =  { "abcde\n",
4593*cdf0e10cSrcweir 			                            "1234567890\n",
4594*cdf0e10cSrcweir 			                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
4595*cdf0e10cSrcweir 			                          };
4596*cdf0e10cSrcweir 
4597*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4598*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4599*cdf0e10cSrcweir 
4600*cdf0e10cSrcweir 			for ( int nCount = 0; nCount < 3; nCount++ )
4601*cdf0e10cSrcweir 			{
4602*cdf0e10cSrcweir 				nError1 = testFile.write( ppStrSeq[nCount], strlen( ppStrSeq[nCount] ), nCount_write );
4603*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4604*cdf0e10cSrcweir 			}
4605*cdf0e10cSrcweir 
4606*cdf0e10cSrcweir  			nError1 = testFile.close( );
4607*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4608*cdf0e10cSrcweir 		}
4609*cdf0e10cSrcweir 
4610*cdf0e10cSrcweir 		void tearDown( )
4611*cdf0e10cSrcweir 		{
4612*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
4613*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
4614*cdf0e10cSrcweir 		}
4615*cdf0e10cSrcweir 
4616*cdf0e10cSrcweir 		// test code.
4617*cdf0e10cSrcweir 		void readLine_001( )
4618*cdf0e10cSrcweir 		{
4619*cdf0e10cSrcweir  			::osl::File    testFile( aTmpName6 );
4620*cdf0e10cSrcweir 
4621*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4622*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4623*cdf0e10cSrcweir 			nError1 = testFile.readLine( aSequence );
4624*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4625*cdf0e10cSrcweir 
4626*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for readLine function: read the first line of the file.",
4627*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) &&
4628*cdf0e10cSrcweir 			                        ( 0 == strncmp( ( const char * )aSequence.getArray( ), pBuffer_Char, 5 ) ) );
4629*cdf0e10cSrcweir 		}
4630*cdf0e10cSrcweir 
4631*cdf0e10cSrcweir 		void readLine_002( )
4632*cdf0e10cSrcweir 		{
4633*cdf0e10cSrcweir  			::osl::File    testFile( aTmpName6 );
4634*cdf0e10cSrcweir 			sal_Bool bEOF  = sal_False;
4635*cdf0e10cSrcweir 			sal_Bool *pEOF = &bEOF;
4636*cdf0e10cSrcweir 
4637*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
4638*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4639*cdf0e10cSrcweir 			for ( int nCount = 0; nCount < 3; nCount++ )
4640*cdf0e10cSrcweir 			{
4641*cdf0e10cSrcweir 				nError1 = testFile.readLine( aSequence );
4642*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4643*cdf0e10cSrcweir 			}
4644*cdf0e10cSrcweir  			nError1 = testFile.isEndOfFile( pEOF );
4645*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4646*cdf0e10cSrcweir 
4647*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for readLine function: read three lines of the file and check the file pointer moving.",
4648*cdf0e10cSrcweir 				 					*pEOF &&
4649*cdf0e10cSrcweir 			                        ( 0 == strncmp( ( const char * )aSequence.getArray( ), &pBuffer_Char[26], 26 ) ) );
4650*cdf0e10cSrcweir 		}
4651*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( readLine );
4652*cdf0e10cSrcweir 		CPPUNIT_TEST( readLine_001 );
4653*cdf0e10cSrcweir 		CPPUNIT_TEST( readLine_002 );
4654*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4655*cdf0e10cSrcweir 	};// class readLine
4656*cdf0e10cSrcweir 
4657*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4658*cdf0e10cSrcweir 	// 	testing the method
4659*cdf0e10cSrcweir 	// 	inline static RC copy( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
4660*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4661*cdf0e10cSrcweir     class  copy : public CppUnit::TestFixture
4662*cdf0e10cSrcweir 	{
4663*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1;
4664*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4665*cdf0e10cSrcweir 
4666*cdf0e10cSrcweir 	    public:
4667*cdf0e10cSrcweir 		// initialization
4668*cdf0e10cSrcweir 		void setUp( )
4669*cdf0e10cSrcweir 		{
4670*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4671*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4672*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4673*cdf0e10cSrcweir 
4674*cdf0e10cSrcweir 			//write chars into the file.
4675*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4676*cdf0e10cSrcweir 
4677*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4678*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4679*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4680*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4681*cdf0e10cSrcweir  			nError1 = testFile.close( );
4682*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4683*cdf0e10cSrcweir 		}
4684*cdf0e10cSrcweir 
4685*cdf0e10cSrcweir 		void tearDown( )
4686*cdf0e10cSrcweir 		{
4687*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4688*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4689*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4690*cdf0e10cSrcweir 		}
4691*cdf0e10cSrcweir 
4692*cdf0e10cSrcweir 		// test code.
4693*cdf0e10cSrcweir 		void copy_001( )
4694*cdf0e10cSrcweir 		{
4695*cdf0e10cSrcweir  			::osl::File    testFile( aTmpName6 );
4696*cdf0e10cSrcweir 
4697*cdf0e10cSrcweir 			//copy $TEMP/tmpdir/tmpname to $TEMP/tmpname.
4698*cdf0e10cSrcweir 			nError1 = ::osl::File::copy( aTmpName4, aTmpName6 );
4699*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4700*cdf0e10cSrcweir 			//check
4701*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Create );
4702*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
4703*cdf0e10cSrcweir 
4704*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy function: copy file to upper directory",
4705*cdf0e10cSrcweir 				 					::osl::FileBase::E_EXIST == nError1 );
4706*cdf0e10cSrcweir 		}
4707*cdf0e10cSrcweir 
4708*cdf0e10cSrcweir 		void copy_002( )
4709*cdf0e10cSrcweir 		{
4710*cdf0e10cSrcweir 			//copy $TEMP/tmpdir/tmpname to $TEMP/tmpdir.
4711*cdf0e10cSrcweir 			nError1 = ::osl::File::copy( aTmpName4, aTmpName3 );
4712*cdf0e10cSrcweir 
4713*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy function: use directory as destination",
4714*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_ISDIR == nError1 ) ||( ::osl::FileBase::E_ACCES == nError1 )  );
4715*cdf0e10cSrcweir 		}
4716*cdf0e10cSrcweir 
4717*cdf0e10cSrcweir 		void copy_003( )
4718*cdf0e10cSrcweir 		{
4719*cdf0e10cSrcweir 			//copy $TEMP/tmpdir/tmpname to $ROOT/tmpname.
4720*cdf0e10cSrcweir 			nError1 = ::osl::File::copy( aTmpName4, aTmpName7 );
4721*cdf0e10cSrcweir #if defined (WNT )
4722*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::E_ACCES;  /// for Windows, c:/ is writtenable any way.
4723*cdf0e10cSrcweir 			deleteTestFile( aTmpName7);
4724*cdf0e10cSrcweir #endif
4725*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy function: copy to an illigal place",
4726*cdf0e10cSrcweir 				 					::osl::FileBase::E_ACCES == nError1 );
4727*cdf0e10cSrcweir 		}
4728*cdf0e10cSrcweir 
4729*cdf0e10cSrcweir 		void copy_004( )
4730*cdf0e10cSrcweir 		{
4731*cdf0e10cSrcweir 			//copy $TEMP/tmpname to $TEMP/tmpdir/tmpname.
4732*cdf0e10cSrcweir 			nError1 = ::osl::File::copy( aTmpName6, aTmpName4 );
4733*cdf0e10cSrcweir 
4734*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy function: copy a not exist file",
4735*cdf0e10cSrcweir 				 					::osl::FileBase::E_NOENT == nError1 );
4736*cdf0e10cSrcweir 		}
4737*cdf0e10cSrcweir 
4738*cdf0e10cSrcweir 		void copy_005( )
4739*cdf0e10cSrcweir 		{
4740*cdf0e10cSrcweir 			//copy $TEMP/tmpname to $TEMP/system.path using system path.
4741*cdf0e10cSrcweir 			nError1 = ::osl::File::copy( aTmpName6, aSysPath1 );
4742*cdf0e10cSrcweir 
4743*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy function: copy a file using system file path",
4744*cdf0e10cSrcweir 				 					::osl::FileBase::E_INVAL == nError1 );
4745*cdf0e10cSrcweir 		}
4746*cdf0e10cSrcweir 	  void copy_006( )
4747*cdf0e10cSrcweir 	  {
4748*cdf0e10cSrcweir 	    createTestFile( aTmpName6 );
4749*cdf0e10cSrcweir 	    File tmpFile( aTmpName6 );
4750*cdf0e10cSrcweir 	    FileBase::RC err = tmpFile.open( OpenFlag_Write | OpenFlag_Read );
4751*cdf0e10cSrcweir         (void)err;
4752*cdf0e10cSrcweir 	    tmpFile.setSize( 200 );
4753*cdf0e10cSrcweir 	    tmpFile.close();
4754*cdf0e10cSrcweir 	    //copy to new path
4755*cdf0e10cSrcweir 	    nError1 = ::osl::File::copy( aTmpName6, aTmpName4 );
4756*cdf0e10cSrcweir 	    CPPUNIT_ASSERT( nError1 == FileBase::E_None );
4757*cdf0e10cSrcweir 
4758*cdf0e10cSrcweir 	    //check if is the new file
4759*cdf0e10cSrcweir 	    File newFile( aTmpName4 );
4760*cdf0e10cSrcweir 	    newFile.open( OpenFlag_Write | OpenFlag_Read );
4761*cdf0e10cSrcweir 	    newFile.setPos( Pos_End, 0 );
4762*cdf0e10cSrcweir 	    //		CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4763*cdf0e10cSrcweir 	    sal_uInt64     nFilePointer;
4764*cdf0e10cSrcweir 	    nError1 = newFile.getPos( nFilePointer );
4765*cdf0e10cSrcweir 	    CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4766*cdf0e10cSrcweir 	    newFile.close( );
4767*cdf0e10cSrcweir 	    deleteTestFile( aTmpName6 );
4768*cdf0e10cSrcweir 	    CPPUNIT_ASSERT_MESSAGE( "test for copy function: the dest file exist",
4769*cdf0e10cSrcweir 				    nFilePointer == 200 );
4770*cdf0e10cSrcweir 	  }
4771*cdf0e10cSrcweir 	  //copyLink has not been impletmented yet
4772*cdf0e10cSrcweir 	  void copy_007( )
4773*cdf0e10cSrcweir 	  {
4774*cdf0e10cSrcweir #if ( defined UNX )
4775*cdf0e10cSrcweir 
4776*cdf0e10cSrcweir 	    CPPUNIT_ASSERT_MESSAGE( "test for copy function: source file is link file",
4777*cdf0e10cSrcweir 				 					::osl::FileBase::E_INVAL == nError1 );
4778*cdf0e10cSrcweir #endif
4779*cdf0e10cSrcweir 	  }
4780*cdf0e10cSrcweir 
4781*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( copy );
4782*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_001 );
4783*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_002 );
4784*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_003 );
4785*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_004 );
4786*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_005 );
4787*cdf0e10cSrcweir 	  CPPUNIT_TEST( copy_006 );
4788*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4789*cdf0e10cSrcweir 	};// class copy
4790*cdf0e10cSrcweir 
4791*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4792*cdf0e10cSrcweir 	// 	testing the method
4793*cdf0e10cSrcweir 	// 	inline static RC move( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
4794*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4795*cdf0e10cSrcweir     class  move : public CppUnit::TestFixture
4796*cdf0e10cSrcweir 	{
4797*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1, nError2;
4798*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4799*cdf0e10cSrcweir 
4800*cdf0e10cSrcweir 	    public:
4801*cdf0e10cSrcweir 		// initialization
4802*cdf0e10cSrcweir 		void setUp( )
4803*cdf0e10cSrcweir 		{
4804*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4805*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4806*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4807*cdf0e10cSrcweir 
4808*cdf0e10cSrcweir 			//write chars into the file.
4809*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4810*cdf0e10cSrcweir 
4811*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4812*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4813*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4814*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4815*cdf0e10cSrcweir  			nError1 = testFile.close( );
4816*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4817*cdf0e10cSrcweir 		}
4818*cdf0e10cSrcweir 
4819*cdf0e10cSrcweir 		void tearDown( )
4820*cdf0e10cSrcweir 		{
4821*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4822*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4823*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4824*cdf0e10cSrcweir 		}
4825*cdf0e10cSrcweir 
4826*cdf0e10cSrcweir 		// test code.
4827*cdf0e10cSrcweir 		void move_001( )
4828*cdf0e10cSrcweir 		{
4829*cdf0e10cSrcweir 			//rename $TEMP/tmpdir/tmpname to $TEMP/canonical.name.
4830*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName4, aCanURL1 );
4831*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4832*cdf0e10cSrcweir 			//check
4833*cdf0e10cSrcweir  			::osl::File    testFile( aCanURL1 );
4834*cdf0e10cSrcweir 			nError2 = testFile.open( OpenFlag_Create );
4835*cdf0e10cSrcweir 			deleteTestFile( aCanURL1 );
4836*cdf0e10cSrcweir 
4837*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: rename file to another directory",
4838*cdf0e10cSrcweir 				 					::osl::FileBase::E_EXIST == nError2 );
4839*cdf0e10cSrcweir 		}
4840*cdf0e10cSrcweir 
4841*cdf0e10cSrcweir 		void move_002( )
4842*cdf0e10cSrcweir 		{
4843*cdf0e10cSrcweir 			//move $TEMP/tmpdir/tmpname to $TEMP/tmpdir.
4844*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName4, aTmpName3 );
4845*cdf0e10cSrcweir 			//returned ::osl::FileBase::E_ACCES on WNT
4846*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: use directory as destination",
4847*cdf0e10cSrcweir 				 ( ::osl::FileBase::E_ACCES == nError1 || ::osl::FileBase::E_ISDIR == nError1 ) ||( ::osl::FileBase::E_EXIST == nError1 )  );
4848*cdf0e10cSrcweir 		}
4849*cdf0e10cSrcweir 
4850*cdf0e10cSrcweir 		void move_003( )
4851*cdf0e10cSrcweir 		{
4852*cdf0e10cSrcweir 			//move $TEMP/tmpdir/tmpname to $ROOT/tmpname.
4853*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName4, aTmpName7 );
4854*cdf0e10cSrcweir #if defined (WNT )
4855*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::E_ACCES;  /// for Windows, c:/ is writtenable any way.
4856*cdf0e10cSrcweir 			deleteTestFile( aTmpName7);
4857*cdf0e10cSrcweir #endif
4858*cdf0e10cSrcweir 
4859*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: move to an illigal place",
4860*cdf0e10cSrcweir 				 					::osl::FileBase::E_ACCES == nError1 );
4861*cdf0e10cSrcweir 		}
4862*cdf0e10cSrcweir 
4863*cdf0e10cSrcweir 		void move_004( )
4864*cdf0e10cSrcweir 		{
4865*cdf0e10cSrcweir 			//move $TEMP/tmpname to $TEMP/tmpdir/tmpname.
4866*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName6, aTmpName4 );
4867*cdf0e10cSrcweir 
4868*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: move a not exist file",
4869*cdf0e10cSrcweir 				 					::osl::FileBase::E_NOENT == nError1 );
4870*cdf0e10cSrcweir 		}
4871*cdf0e10cSrcweir 
4872*cdf0e10cSrcweir 		void move_005( )
4873*cdf0e10cSrcweir 		{
4874*cdf0e10cSrcweir 			//move $TEMP/tmpname to $TEMP/system.path using system path.
4875*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName6, aSysPath1 );
4876*cdf0e10cSrcweir 
4877*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: move a file using system file",
4878*cdf0e10cSrcweir 				 					::osl::FileBase::E_INVAL == nError1 );
4879*cdf0e10cSrcweir 		}
4880*cdf0e10cSrcweir 
4881*cdf0e10cSrcweir 		void move_006( )
4882*cdf0e10cSrcweir 		{
4883*cdf0e10cSrcweir 			//move directory $TEMP/tmpname to $TEMP/tmpdir/tmpname.
4884*cdf0e10cSrcweir 			createTestDirectory( aTmpName6 );
4885*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName6, aTmpName4 );
4886*cdf0e10cSrcweir 			//move file $TEMP/tmpdir/tmpname to $TEMP/tmpname
4887*cdf0e10cSrcweir 			nError2 = ::osl::File::move( aTmpName4, aTmpName6 );
4888*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName6 );
4889*cdf0e10cSrcweir #if defined ( WNT )
4890*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName4 );// in Windows, it can be moved!!!!! this is only for not influence the following test.
4891*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
4892*cdf0e10cSrcweir 			nError1 = ::osl::FileBase::E_NOTDIR;
4893*cdf0e10cSrcweir 			nError2 = ::osl::FileBase::E_ISDIR;
4894*cdf0e10cSrcweir #endif
4895*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: move a directory to an exist file with same name, did not pass in (W32)",
4896*cdf0e10cSrcweir 				 					::osl::FileBase::E_NOTDIR == nError1 && ::osl::FileBase::E_ISDIR == nError2 );
4897*cdf0e10cSrcweir 		}
4898*cdf0e10cSrcweir 
4899*cdf0e10cSrcweir 		void move_007( )
4900*cdf0e10cSrcweir 		{
4901*cdf0e10cSrcweir 			//create directory $TEMP/tmpname.
4902*cdf0e10cSrcweir 			createTestDirectory( aTmpName6 );
4903*cdf0e10cSrcweir 			//move directory $TEMP/tmpdir to $TEMP/tmpname/tmpdir
4904*cdf0e10cSrcweir 			nError1 = ::osl::File::move( aTmpName3, aTmpName8 );
4905*cdf0e10cSrcweir 			//check
4906*cdf0e10cSrcweir 			nError2 = ::osl::Directory::create( aTmpName8 );
4907*cdf0e10cSrcweir 			::osl::File::move( aTmpName8, aTmpName3 );
4908*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName6 );
4909*cdf0e10cSrcweir 
4910*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for move function: move a directory to an exist file with same name",
4911*cdf0e10cSrcweir 				 					(::osl::FileBase::E_None == nError1 ) &&
4912*cdf0e10cSrcweir 			                        (::osl::FileBase::E_EXIST == nError2 ) );
4913*cdf0e10cSrcweir 		}
4914*cdf0e10cSrcweir 	  // oldpath and newpath are not on the same filesystem.EXDEV,no such error no on Solaris, only on linux
4915*cdf0e10cSrcweir 	  void move_008( )
4916*cdf0e10cSrcweir 	  {
4917*cdf0e10cSrcweir 	    CPPUNIT_ASSERT_MESSAGE( "oldpath and newpath are not on the same filesystem, should error returns",
4918*cdf0e10cSrcweir 				 					::osl::FileBase::E_None == nError1  );
4919*cdf0e10cSrcweir 	  }
4920*cdf0e10cSrcweir 	  //bugid# 115420, after the bug fix, add the case
4921*cdf0e10cSrcweir 	  void move_009( )
4922*cdf0e10cSrcweir 	  {
4923*cdf0e10cSrcweir 	    //create directory $TEMP/tmpname.
4924*cdf0e10cSrcweir 	    createTestDirectory( aTmpName6 );
4925*cdf0e10cSrcweir 	    //create directory $TEMP/tmpname/tmpdir
4926*cdf0e10cSrcweir 	    createTestDirectory( aTmpName8 );
4927*cdf0e10cSrcweir 	    //move directory $TEMP/tmpname to $TEMP/tmpname/tmpdir/tmpname
4928*cdf0e10cSrcweir 	    rtl::OUString newName = aTmpName8 + OUString::createFromAscii("/tmpname");
4929*cdf0e10cSrcweir 	    //printFileName( newName );
4930*cdf0e10cSrcweir 	    nError1 = ::osl::File::move( aTmpName3, newName );
4931*cdf0e10cSrcweir 	    //deleteTestDirectory( newName + OUString::createFromAscii("/tmpname") );
4932*cdf0e10cSrcweir 	    //deleteTestDirectory( newName );
4933*cdf0e10cSrcweir 	    deleteTestDirectory( aTmpName8 );
4934*cdf0e10cSrcweir 	    deleteTestDirectory( aTmpName6 );
4935*cdf0e10cSrcweir 	    CPPUNIT_ASSERT_MESSAGE( "test for move function: move a directory to it's subdirectory",
4936*cdf0e10cSrcweir 				 				::osl::FileBase::E_None != nError1 );
4937*cdf0e10cSrcweir 	  }
4938*cdf0e10cSrcweir 
4939*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( move );
4940*cdf0e10cSrcweir 		CPPUNIT_TEST( move_001 );
4941*cdf0e10cSrcweir 		CPPUNIT_TEST( move_002 );
4942*cdf0e10cSrcweir 		CPPUNIT_TEST( move_003 );
4943*cdf0e10cSrcweir 		CPPUNIT_TEST( move_004 );
4944*cdf0e10cSrcweir 		CPPUNIT_TEST( move_005 );
4945*cdf0e10cSrcweir 		CPPUNIT_TEST( move_006 );
4946*cdf0e10cSrcweir 		CPPUNIT_TEST( move_007 );
4947*cdf0e10cSrcweir 	  //	  CPPUNIT_TEST( move_008 );
4948*cdf0e10cSrcweir 	  //CPPUNIT_TEST( move_009 );
4949*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
4950*cdf0e10cSrcweir 	};// class move
4951*cdf0e10cSrcweir 
4952*cdf0e10cSrcweir 
4953*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4954*cdf0e10cSrcweir 	// 	testing the method
4955*cdf0e10cSrcweir 	// 	inline static RC remove( const ::rtl::OUString& ustrFileURL )
4956*cdf0e10cSrcweir 	//---------------------------------------------------------------------
4957*cdf0e10cSrcweir     class  remove : public CppUnit::TestFixture
4958*cdf0e10cSrcweir 	{
4959*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1, nError2;
4960*cdf0e10cSrcweir 		sal_uInt64 nCount_write, nCount_read;
4961*cdf0e10cSrcweir 
4962*cdf0e10cSrcweir 	    public:
4963*cdf0e10cSrcweir 		// initialization
4964*cdf0e10cSrcweir 		void setUp( )
4965*cdf0e10cSrcweir 		{
4966*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
4967*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
4968*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
4969*cdf0e10cSrcweir 
4970*cdf0e10cSrcweir 			//write chars into the file.
4971*cdf0e10cSrcweir 			::osl::File testFile( aTmpName4 );
4972*cdf0e10cSrcweir 
4973*cdf0e10cSrcweir 			nError1 = testFile.open( OpenFlag_Write );
4974*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4975*cdf0e10cSrcweir 			nError1 = testFile.write( pBuffer_Char, sizeof( pBuffer_Char ), nCount_write );
4976*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4977*cdf0e10cSrcweir  			nError1 = testFile.close( );
4978*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
4979*cdf0e10cSrcweir 		}
4980*cdf0e10cSrcweir 
4981*cdf0e10cSrcweir 		void tearDown( )
4982*cdf0e10cSrcweir 		{
4983*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
4984*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
4985*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
4986*cdf0e10cSrcweir 		}
4987*cdf0e10cSrcweir 
4988*cdf0e10cSrcweir 		// test code.
4989*cdf0e10cSrcweir 		void remove_001( )
4990*cdf0e10cSrcweir 		{
4991*cdf0e10cSrcweir 			//remove $TEMP/tmpdir/tmpname.
4992*cdf0e10cSrcweir 			nError1 = ::osl::File::remove( aTmpName4 );
4993*cdf0e10cSrcweir 			//check
4994*cdf0e10cSrcweir  			::osl::File    testFile( aTmpName4 );
4995*cdf0e10cSrcweir 			nError2 = testFile.open( OpenFlag_Create );
4996*cdf0e10cSrcweir 
4997*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: remove a file",
4998*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError1 ) &&
4999*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_EXIST != nError2 ) );
5000*cdf0e10cSrcweir 		}
5001*cdf0e10cSrcweir 
5002*cdf0e10cSrcweir 		void remove_002( )
5003*cdf0e10cSrcweir 		{
5004*cdf0e10cSrcweir 			//remove $TEMP/tmpname.
5005*cdf0e10cSrcweir 			nError1 = ::osl::File::remove( aTmpName6 );
5006*cdf0e10cSrcweir 
5007*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: remove a file not exist",
5008*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_NOENT == nError1 ) );
5009*cdf0e10cSrcweir 		}
5010*cdf0e10cSrcweir 
5011*cdf0e10cSrcweir 		void remove_003( )
5012*cdf0e10cSrcweir 		{
5013*cdf0e10cSrcweir 			//remove $TEMP/system/path.
5014*cdf0e10cSrcweir 			nError1 = ::osl::File::remove( aSysPath2 );
5015*cdf0e10cSrcweir 
5016*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: removing a file not using full qualified URL",
5017*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_INVAL == nError1 ) );
5018*cdf0e10cSrcweir 		}
5019*cdf0e10cSrcweir 
5020*cdf0e10cSrcweir 		void remove_004( )
5021*cdf0e10cSrcweir 		{
5022*cdf0e10cSrcweir 			//remove $TEMP/tmpdir.
5023*cdf0e10cSrcweir 			nError1 = ::osl::File::remove( aTmpName3 );
5024*cdf0e10cSrcweir 
5025*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: remove a directory",
5026*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_ISDIR == nError1 ) || ( ::osl::FileBase::E_ACCES == nError1 ));
5027*cdf0e10cSrcweir 		}
5028*cdf0e10cSrcweir 
5029*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( remove );
5030*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_001 );
5031*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_002 );
5032*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_003 );
5033*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_004 );
5034*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5035*cdf0e10cSrcweir 	};// class remove
5036*cdf0e10cSrcweir 
5037*cdf0e10cSrcweir 
5038*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5039*cdf0e10cSrcweir 	// 	testing the method
5040*cdf0e10cSrcweir 	// 	inline static RC setAttributes( const ::rtl::OUString& ustrFileURL, sal_uInt64 uAttributes )
5041*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5042*cdf0e10cSrcweir     class  setAttributes : public CppUnit::TestFixture
5043*cdf0e10cSrcweir 	{
5044*cdf0e10cSrcweir 		::osl::FileBase::RC      nError1, nError2;
5045*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem, rItem_hidden;
5046*cdf0e10cSrcweir 
5047*cdf0e10cSrcweir 	    public:
5048*cdf0e10cSrcweir 		// initialization
5049*cdf0e10cSrcweir 		void setUp( )
5050*cdf0e10cSrcweir 		{
5051*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5052*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5053*cdf0e10cSrcweir 		}
5054*cdf0e10cSrcweir 
5055*cdf0e10cSrcweir 		void tearDown( )
5056*cdf0e10cSrcweir 		{
5057*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5058*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5059*cdf0e10cSrcweir 		}
5060*cdf0e10cSrcweir 
5061*cdf0e10cSrcweir 		// test code.
5062*cdf0e10cSrcweir 		void setAttributes_001( )
5063*cdf0e10cSrcweir 		{
5064*cdf0e10cSrcweir 		//on windows, only can set 2 attributes: Attribute_ReadOnly,  Attribute_HIDDEN
5065*cdf0e10cSrcweir #ifdef UNX
5066*cdf0e10cSrcweir 			//set the file to readonly
5067*cdf0e10cSrcweir 			nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead );
5068*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError2 == FileBase::E_None);
5069*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5070*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None);
5071*cdf0e10cSrcweir 			//get the file attributes
5072*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
5073*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5074*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5075*cdf0e10cSrcweir 
5076*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes and get it to verify.",
5077*cdf0e10cSrcweir 			                        ( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) ==
5078*cdf0e10cSrcweir 		                            rFileStatus.getAttributes( ) );
5079*cdf0e10cSrcweir #else
5080*cdf0e10cSrcweir 			//please see GetFileAttributes
5081*cdf0e10cSrcweir 			nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly );
5082*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError2 == FileBase::E_None);
5083*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5084*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None);
5085*cdf0e10cSrcweir 			//get the file attributes
5086*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_Attributes );
5087*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5088*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5089*cdf0e10cSrcweir 			//here the file has 2 Attributes: FILE_ATTRIBUTE_READONLY and FILE_ATTRIBUTE_NORMAL,
5090*cdf0e10cSrcweir 			// but FILE_ATTRIBUTE_NORMAL is valid only if used alone, so this is maybe a bug
5091*cdf0e10cSrcweir 			/*::rtl::OString aString = ::rtl::OUStringToOString( aTmpName6, RTL_TEXTENCODING_ASCII_US );
5092*cdf0e10cSrcweir 			DWORD dwFileAttributes = GetFileAttributes( aString.getStr( ) );
5093*cdf0e10cSrcweir 			if (dwFileAttributes & FILE_ATTRIBUTE_NORMAL)
5094*cdf0e10cSrcweir 				t_print("has normal attribute");
5095*cdf0e10cSrcweir 			if (dwFileAttributes & FILE_ATTRIBUTE_READONLY)
5096*cdf0e10cSrcweir 				t_print("has readonly attribute");
5097*cdf0e10cSrcweir 			*/
5098*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes READONLY and get it to verify.",
5099*cdf0e10cSrcweir 			                        (Attribute_ReadOnly & rFileStatus.getAttributes( )) != 0  );
5100*cdf0e10cSrcweir #endif
5101*cdf0e10cSrcweir 	}
5102*cdf0e10cSrcweir 		void setAttributes_002( )
5103*cdf0e10cSrcweir 		{
5104*cdf0e10cSrcweir 		//on UNX, can not set hidden attribute to file, rename file can set the attribute
5105*cdf0e10cSrcweir #ifdef WNT
5106*cdf0e10cSrcweir 			//set the file to hidden
5107*cdf0e10cSrcweir 			nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_Hidden);
5108*cdf0e10cSrcweir 
5109*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError2 == FileBase::E_None);
5110*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5111*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None);
5112*cdf0e10cSrcweir 			//get the file attributes
5113*cdf0e10cSrcweir   			::osl::FileStatus rFileStatus( FileStatusMask_Attributes );
5114*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5115*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5116*cdf0e10cSrcweir 
5117*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes and get it to verify.",
5118*cdf0e10cSrcweir 			                        (Attribute_Hidden & rFileStatus.getAttributes( )) != 0 );
5119*cdf0e10cSrcweir #endif
5120*cdf0e10cSrcweir 		}
5121*cdf0e10cSrcweir 
5122*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( setAttributes );
5123*cdf0e10cSrcweir 		CPPUNIT_TEST( setAttributes_001 );
5124*cdf0e10cSrcweir 		CPPUNIT_TEST( setAttributes_002 );
5125*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5126*cdf0e10cSrcweir 	};// class setAttributes
5127*cdf0e10cSrcweir 
5128*cdf0e10cSrcweir 
5129*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5130*cdf0e10cSrcweir 	// 	testing the method
5131*cdf0e10cSrcweir 	// 	inline static RC setTime(
5132*cdf0e10cSrcweir 	// 	       const ::rtl::OUString& ustrFileURL,
5133*cdf0e10cSrcweir 	// 	       const TimeValue& rCreationTime,
5134*cdf0e10cSrcweir 	// 	       const TimeValue& rLastAccessTime,
5135*cdf0e10cSrcweir 	// 	       const TimeValue& rLastWriteTime )
5136*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5137*cdf0e10cSrcweir     class  setTime : public CppUnit::TestFixture
5138*cdf0e10cSrcweir 	{
5139*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5140*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
5141*cdf0e10cSrcweir 
5142*cdf0e10cSrcweir 	    public:
5143*cdf0e10cSrcweir 		// initialization
5144*cdf0e10cSrcweir 		void setUp( )
5145*cdf0e10cSrcweir 		{
5146*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5147*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5148*cdf0e10cSrcweir 		}
5149*cdf0e10cSrcweir 
5150*cdf0e10cSrcweir 		void tearDown( )
5151*cdf0e10cSrcweir 		{
5152*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5153*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5154*cdf0e10cSrcweir 		}
5155*cdf0e10cSrcweir 
5156*cdf0e10cSrcweir 		// test code.
5157*cdf0e10cSrcweir 		void setTime_001( )
5158*cdf0e10cSrcweir 		{
5159*cdf0e10cSrcweir  			TimeValue *pTV_current  = NULL;
5160*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_current = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
5161*cdf0e10cSrcweir 			TimeValue *pTV_creation = NULL;
5162*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_creation = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
5163*cdf0e10cSrcweir 			TimeValue *pTV_access   = NULL;
5164*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_access = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
5165*cdf0e10cSrcweir 			TimeValue *pTV_modify   = NULL;
5166*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ( pTV_modify = ( TimeValue* )malloc( sizeof( TimeValue ) ) ) != NULL );
5167*cdf0e10cSrcweir 
5168*cdf0e10cSrcweir 			//get current time
5169*cdf0e10cSrcweir 			sal_Bool bOk = osl_getSystemTime( pTV_current );
5170*cdf0e10cSrcweir 			CPPUNIT_ASSERT( sal_True == bOk );
5171*cdf0e10cSrcweir 
5172*cdf0e10cSrcweir 			//set the file time
5173*cdf0e10cSrcweir 			nError2 = ::osl::File::setTime( aTmpName6, *pTV_current, *pTV_current, *pTV_current );
5174*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr( nError2 ), nError2 == FileBase::E_None);
5175*cdf0e10cSrcweir 
5176*cdf0e10cSrcweir  			//get the file access time, creation time, modify time
5177*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5178*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None);
5179*cdf0e10cSrcweir 
5180*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_AccessTime );
5181*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5182*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ),nError1 == FileBase::E_None );
5183*cdf0e10cSrcweir 			*pTV_access = rFileStatus.getAccessTime( );
5184*cdf0e10cSrcweir 
5185*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus1( FileStatusMask_CreationTime );
5186*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus1 );
5187*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None );
5188*cdf0e10cSrcweir 			*pTV_creation = rFileStatus1.getCreationTime( );
5189*cdf0e10cSrcweir 
5190*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus2( FileStatusMask_ModifyTime );
5191*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus2 );
5192*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None );
5193*cdf0e10cSrcweir 			*pTV_modify = rFileStatus2.getModifyTime( );
5194*cdf0e10cSrcweir 
5195*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set access time then get it. time precision is still a problem for it cut off the nanosec.",
5196*cdf0e10cSrcweir 				sal_True == t_compareTime( pTV_access, pTV_current, delta ) );
5197*cdf0e10cSrcweir #if defined ( WNT )
5198*cdf0e10cSrcweir 			//Unfortunately there is no way to get the creation time of a file under Unix (its a Windows only feature).
5199*cdf0e10cSrcweir 			//That means the flag osl_FileStatus_Mask_CreationTime should be deprecated under Unix.
5200*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set creation time then get it. ",
5201*cdf0e10cSrcweir 				sal_True == t_compareTime( pTV_creation, pTV_current, delta ) ) ;
5202*cdf0e10cSrcweir #endif
5203*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set modify time then get it. ",
5204*cdf0e10cSrcweir 				sal_True == t_compareTime( pTV_modify, pTV_current, delta ) );
5205*cdf0e10cSrcweir 			free( pTV_current );
5206*cdf0e10cSrcweir 			free( pTV_creation );
5207*cdf0e10cSrcweir 			free( pTV_access );
5208*cdf0e10cSrcweir 			free( pTV_modify );
5209*cdf0e10cSrcweir 		}
5210*cdf0e10cSrcweir 
5211*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( setTime );
5212*cdf0e10cSrcweir 		CPPUNIT_TEST( setTime_001 );
5213*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5214*cdf0e10cSrcweir 	};// class setTime
5215*cdf0e10cSrcweir 
5216*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5217*cdf0e10cSrcweir 	// 	testing the method
5218*cdf0e10cSrcweir 	// 	inline static RC sync()
5219*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5220*cdf0e10cSrcweir         class  sync : public CppUnit::TestFixture
5221*cdf0e10cSrcweir 	{
5222*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5223*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
5224*cdf0e10cSrcweir 
5225*cdf0e10cSrcweir 	    public:
5226*cdf0e10cSrcweir 		// initialization
5227*cdf0e10cSrcweir 		void setUp( )
5228*cdf0e10cSrcweir 		{
5229*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5230*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5231*cdf0e10cSrcweir 
5232*cdf0e10cSrcweir 		}
5233*cdf0e10cSrcweir 
5234*cdf0e10cSrcweir 		void tearDown( )
5235*cdf0e10cSrcweir 		{
5236*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5237*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5238*cdf0e10cSrcweir 		}
5239*cdf0e10cSrcweir 
5240*cdf0e10cSrcweir 		// test case: if The file is located on a read only file system.
5241*cdf0e10cSrcweir 		void sync_001( )
5242*cdf0e10cSrcweir 		{
5243*cdf0e10cSrcweir #ifdef UNX
5244*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5245*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None);
5246*cdf0e10cSrcweir 
5247*cdf0e10cSrcweir 			File tmp_file( aTmpName6 );
5248*cdf0e10cSrcweir 			FileBase::RC err = tmp_file.open(osl_File_OpenFlag_Write );
5249*cdf0e10cSrcweir 
5250*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("File open failed", err == FileBase::E_None);
5251*cdf0e10cSrcweir 
5252*cdf0e10cSrcweir 			char buffer[50000];
5253*cdf0e10cSrcweir 			sal_uInt64 written = 0;
5254*cdf0e10cSrcweir 			nError1 = tmp_file.write((void*)buffer, sizeof(buffer), written);
5255*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE("write failed!", nError1 == FileBase::E_None);
5256*cdf0e10cSrcweir 
5257*cdf0e10cSrcweir 			//set the file to readonly
5258*cdf0e10cSrcweir 			nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead );
5259*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError2 == FileBase::E_None);
5260*cdf0e10cSrcweir 
5261*cdf0e10cSrcweir 			nError2 = tmp_file.sync();
5262*cdf0e10cSrcweir 
5263*cdf0e10cSrcweir         		CPPUNIT_ASSERT_MESSAGE("can not sync to readonly file!", nError2 == FileBase::E_None);
5264*cdf0e10cSrcweir 
5265*cdf0e10cSrcweir 			tmp_file.close();
5266*cdf0e10cSrcweir #endif
5267*cdf0e10cSrcweir 		}
5268*cdf0e10cSrcweir 	  //test case:no enough space, how to create such case???see test_cpy_wrt_file.cxx::test_osl_writeFile
5269*cdf0e10cSrcweir 
5270*cdf0e10cSrcweir 
5271*cdf0e10cSrcweir 
5272*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( sync );
5273*cdf0e10cSrcweir 		CPPUNIT_TEST( sync_001 );
5274*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5275*cdf0e10cSrcweir 	};// class setTime
5276*cdf0e10cSrcweir 
5277*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
5278*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::ctors, "osl_File" );
5279*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::open, "osl_File" );
5280*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::close, "osl_File" );
5281*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::setPos, "osl_File" );
5282*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::getPos, "osl_File" );
5283*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::isEndOfFile, "osl_File" );
5284*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::setSize, "osl_File" );
5285*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::read, "osl_File" );
5286*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::write, "osl_File" );
5287*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::readLine, "osl_File" );
5288*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::copy, "osl_File" );
5289*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::move, "osl_File" );
5290*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::remove, "osl_File" );
5291*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::setAttributes, "osl_File" );
5292*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::setTime, "osl_File" );
5293*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::sync, "osl_File" );
5294*cdf0e10cSrcweir 
5295*cdf0e10cSrcweir }// namespace osl_File
5296*cdf0e10cSrcweir 
5297*cdf0e10cSrcweir 
5298*cdf0e10cSrcweir //------------------------------------------------------------------------
5299*cdf0e10cSrcweir // Beginning of the test cases for DirectoryItem class
5300*cdf0e10cSrcweir //------------------------------------------------------------------------
5301*cdf0e10cSrcweir namespace osl_DirectoryItem
5302*cdf0e10cSrcweir {
5303*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5304*cdf0e10cSrcweir 	// 	testing the method
5305*cdf0e10cSrcweir 	// 	DirectoryItem(): _pData( NULL )
5306*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5307*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
5308*cdf0e10cSrcweir 	{
5309*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5310*cdf0e10cSrcweir 
5311*cdf0e10cSrcweir 	    public:
5312*cdf0e10cSrcweir 		// initialization
5313*cdf0e10cSrcweir 		void setUp( )
5314*cdf0e10cSrcweir 		{
5315*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
5316*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5317*cdf0e10cSrcweir 		}
5318*cdf0e10cSrcweir 
5319*cdf0e10cSrcweir 		void tearDown( )
5320*cdf0e10cSrcweir 		{
5321*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
5322*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5323*cdf0e10cSrcweir 		}
5324*cdf0e10cSrcweir 
5325*cdf0e10cSrcweir 		// test code.
5326*cdf0e10cSrcweir 		void ctors_001( )
5327*cdf0e10cSrcweir 		{
5328*cdf0e10cSrcweir 			::osl::File testFile( aTmpName6 );
5329*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5330*cdf0e10cSrcweir 
5331*cdf0e10cSrcweir  			//get the DirectoryItem.
5332*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5333*cdf0e10cSrcweir 			CPPUNIT_ASSERT( FileBase::E_None == nError1 );
5334*cdf0e10cSrcweir 
5335*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: initialize a new instance of DirectoryItem and get an item to check.",
5336*cdf0e10cSrcweir 				 					 ::osl::FileBase::E_None == nError1  );
5337*cdf0e10cSrcweir 		}
5338*cdf0e10cSrcweir 
5339*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
5340*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
5341*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5342*cdf0e10cSrcweir 	};// class ctors
5343*cdf0e10cSrcweir 
5344*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5345*cdf0e10cSrcweir 	// 	testing the method
5346*cdf0e10cSrcweir 	// 	DirectoryItem( const DirectoryItem& rItem ): _pData( rItem._pData)
5347*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5348*cdf0e10cSrcweir     class  copy_assin_Ctors : public CppUnit::TestFixture
5349*cdf0e10cSrcweir 	{
5350*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5351*cdf0e10cSrcweir 
5352*cdf0e10cSrcweir 	    public:
5353*cdf0e10cSrcweir 		// initialization
5354*cdf0e10cSrcweir 		void setUp( )
5355*cdf0e10cSrcweir 		{
5356*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
5357*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5358*cdf0e10cSrcweir 		}
5359*cdf0e10cSrcweir 
5360*cdf0e10cSrcweir 		void tearDown( )
5361*cdf0e10cSrcweir 		{
5362*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
5363*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5364*cdf0e10cSrcweir 		}
5365*cdf0e10cSrcweir 
5366*cdf0e10cSrcweir 		// test code.
5367*cdf0e10cSrcweir 		void copy_assin_Ctors_001( )
5368*cdf0e10cSrcweir 		{
5369*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5370*cdf0e10cSrcweir  			//get the DirectoryItem.
5371*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5372*cdf0e10cSrcweir 			CPPUNIT_ASSERT( FileBase::E_None == nError1 );
5373*cdf0e10cSrcweir 
5374*cdf0e10cSrcweir 			::osl::DirectoryItem    copyItem( rItem ); //copy constructor
5375*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5376*cdf0e10cSrcweir 			nError1 = copyItem.getFileStatus( rFileStatus );
5377*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5378*cdf0e10cSrcweir 
5379*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy_assin_Ctors function: use copy constructor to get an item and check filename.",
5380*cdf0e10cSrcweir 			                        ( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName2 ) ) );
5381*cdf0e10cSrcweir 		}
5382*cdf0e10cSrcweir 
5383*cdf0e10cSrcweir 		void copy_assin_Ctors_002( )
5384*cdf0e10cSrcweir 		{
5385*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5386*cdf0e10cSrcweir  			//get the DirectoryItem.
5387*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5388*cdf0e10cSrcweir 			CPPUNIT_ASSERT( FileBase::E_None == nError1 );
5389*cdf0e10cSrcweir 
5390*cdf0e10cSrcweir 			::osl::DirectoryItem    copyItem;
5391*cdf0e10cSrcweir 			copyItem = rItem;               //assinment operator
5392*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5393*cdf0e10cSrcweir 			nError1 = copyItem.getFileStatus( rFileStatus );
5394*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5395*cdf0e10cSrcweir 
5396*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for copy_assin_Ctors function: test assinment operator here since it is same as copy constructor in test way.",
5397*cdf0e10cSrcweir 			                        ( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName2 ) ) );
5398*cdf0e10cSrcweir 		}
5399*cdf0e10cSrcweir 
5400*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( copy_assin_Ctors );
5401*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_assin_Ctors_001 );
5402*cdf0e10cSrcweir 		CPPUNIT_TEST( copy_assin_Ctors_002 );
5403*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5404*cdf0e10cSrcweir 	};// class copy_assin_Ctors
5405*cdf0e10cSrcweir 
5406*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5407*cdf0e10cSrcweir 	// 	testing the method
5408*cdf0e10cSrcweir 	// 	inline sal_Bool is()
5409*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5410*cdf0e10cSrcweir     class  is : public CppUnit::TestFixture
5411*cdf0e10cSrcweir 	{
5412*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5413*cdf0e10cSrcweir 
5414*cdf0e10cSrcweir 	    public:
5415*cdf0e10cSrcweir 		// initialization
5416*cdf0e10cSrcweir 		void setUp( )
5417*cdf0e10cSrcweir 		{
5418*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
5419*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5420*cdf0e10cSrcweir 		}
5421*cdf0e10cSrcweir 
5422*cdf0e10cSrcweir 		void tearDown( )
5423*cdf0e10cSrcweir 		{
5424*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
5425*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5426*cdf0e10cSrcweir 		}
5427*cdf0e10cSrcweir 
5428*cdf0e10cSrcweir 		// test code.
5429*cdf0e10cSrcweir 		void is_001( )
5430*cdf0e10cSrcweir 		{
5431*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5432*cdf0e10cSrcweir 
5433*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for is function: use an uninitialized instance.",
5434*cdf0e10cSrcweir 			                        !rItem.is( ) );
5435*cdf0e10cSrcweir 		}
5436*cdf0e10cSrcweir 
5437*cdf0e10cSrcweir 		void is_002( )
5438*cdf0e10cSrcweir 		{
5439*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5440*cdf0e10cSrcweir  			//get the DirectoryItem.
5441*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5442*cdf0e10cSrcweir 			CPPUNIT_ASSERT( FileBase::E_None == nError1 );
5443*cdf0e10cSrcweir 
5444*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for is function: use an uninitialized instance.",
5445*cdf0e10cSrcweir 			                        ( sal_True == rItem.is( ) ) );
5446*cdf0e10cSrcweir 		}
5447*cdf0e10cSrcweir 
5448*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( is );
5449*cdf0e10cSrcweir 		CPPUNIT_TEST( is_001 );
5450*cdf0e10cSrcweir 		CPPUNIT_TEST( is_002 );
5451*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5452*cdf0e10cSrcweir 	};// class is
5453*cdf0e10cSrcweir 
5454*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5455*cdf0e10cSrcweir 	// 	testing the method
5456*cdf0e10cSrcweir 	// 	static inline RC get( const ::rtl::OUString& ustrFileURL, DirectoryItem& rItem )
5457*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5458*cdf0e10cSrcweir     class  get : public CppUnit::TestFixture
5459*cdf0e10cSrcweir 	{
5460*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5461*cdf0e10cSrcweir 
5462*cdf0e10cSrcweir 	    public:
5463*cdf0e10cSrcweir 		// initialization
5464*cdf0e10cSrcweir 		void setUp( )
5465*cdf0e10cSrcweir 		{
5466*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpname.
5467*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
5468*cdf0e10cSrcweir 		}
5469*cdf0e10cSrcweir 
5470*cdf0e10cSrcweir 		void tearDown( )
5471*cdf0e10cSrcweir 		{
5472*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpname.
5473*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
5474*cdf0e10cSrcweir 		}
5475*cdf0e10cSrcweir 
5476*cdf0e10cSrcweir 		// test code.
5477*cdf0e10cSrcweir 		void get_001( )
5478*cdf0e10cSrcweir 		{
5479*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5480*cdf0e10cSrcweir  			//get the DirectoryItem.
5481*cdf0e10cSrcweir 			nError2 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5482*cdf0e10cSrcweir 
5483*cdf0e10cSrcweir 			//check the file name
5484*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5485*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5486*cdf0e10cSrcweir 			CPPUNIT_ASSERT( nError1 == FileBase::E_None );
5487*cdf0e10cSrcweir 
5488*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for get function: use copy constructor to get an item and check filename.",
5489*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) &&
5490*cdf0e10cSrcweir 			                        ( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName2 ) ) );
5491*cdf0e10cSrcweir 		}
5492*cdf0e10cSrcweir 
5493*cdf0e10cSrcweir 		void get_002( )
5494*cdf0e10cSrcweir 		{
5495*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;
5496*cdf0e10cSrcweir  			//get the DirectoryItem.
5497*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aSysPath1, rItem );
5498*cdf0e10cSrcweir 
5499*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for get function: use a system name instead of a URL.",
5500*cdf0e10cSrcweir 			                        FileBase::E_INVAL == nError1 );
5501*cdf0e10cSrcweir 		}
5502*cdf0e10cSrcweir 
5503*cdf0e10cSrcweir 		void get_003( )
5504*cdf0e10cSrcweir 		{
5505*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;
5506*cdf0e10cSrcweir  			//get the DirectoryItem.
5507*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName3, rItem );
5508*cdf0e10cSrcweir 
5509*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for get function: use a non existed file URL.",
5510*cdf0e10cSrcweir 			                        FileBase::E_NOENT == nError1 );
5511*cdf0e10cSrcweir 		}
5512*cdf0e10cSrcweir 
5513*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( get );
5514*cdf0e10cSrcweir 		CPPUNIT_TEST( get_001 );
5515*cdf0e10cSrcweir 		CPPUNIT_TEST( get_002 );
5516*cdf0e10cSrcweir 		CPPUNIT_TEST( get_003 );
5517*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5518*cdf0e10cSrcweir 	};// class get
5519*cdf0e10cSrcweir 
5520*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5521*cdf0e10cSrcweir 	// 	testing the method
5522*cdf0e10cSrcweir 	// 	inline RC getFileStatus( FileStatus& rStatus )
5523*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5524*cdf0e10cSrcweir     class  getFileStatus : public CppUnit::TestFixture
5525*cdf0e10cSrcweir 	{
5526*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5527*cdf0e10cSrcweir 
5528*cdf0e10cSrcweir 	    public:
5529*cdf0e10cSrcweir 		// initialization
5530*cdf0e10cSrcweir 		void setUp( )
5531*cdf0e10cSrcweir 		{
5532*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5533*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5534*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
5535*cdf0e10cSrcweir 		}
5536*cdf0e10cSrcweir 
5537*cdf0e10cSrcweir 		void tearDown( )
5538*cdf0e10cSrcweir 		{
5539*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5540*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
5541*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5542*cdf0e10cSrcweir 		}
5543*cdf0e10cSrcweir 
5544*cdf0e10cSrcweir 		// test code.
5545*cdf0e10cSrcweir 		void getFileStatus_001( )
5546*cdf0e10cSrcweir 		{
5547*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5548*cdf0e10cSrcweir  			//get the DirectoryItem.
5549*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName4, rItem );
5550*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5551*cdf0e10cSrcweir 
5552*cdf0e10cSrcweir 			//check the file name
5553*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5554*cdf0e10cSrcweir 			nError2 = rItem.getFileStatus( rFileStatus );
5555*cdf0e10cSrcweir 
5556*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileStatus function: get file status and check filename",
5557*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) &&
5558*cdf0e10cSrcweir 			                        ( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName2 ) ) );
5559*cdf0e10cSrcweir 		}
5560*cdf0e10cSrcweir 
5561*cdf0e10cSrcweir 		void getFileStatus_002( )
5562*cdf0e10cSrcweir 		{
5563*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5564*cdf0e10cSrcweir  			//get the DirectoryItem.
5565*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
5566*cdf0e10cSrcweir 
5567*cdf0e10cSrcweir 			//check the file name
5568*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5569*cdf0e10cSrcweir 			nError2 = rItem.getFileStatus( rFileStatus );
5570*cdf0e10cSrcweir 
5571*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileStatus function: file not existed",
5572*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_INVAL == nError2 )  );
5573*cdf0e10cSrcweir 		}
5574*cdf0e10cSrcweir 
5575*cdf0e10cSrcweir 		void getFileStatus_003( )
5576*cdf0e10cSrcweir 		{
5577*cdf0e10cSrcweir 			::osl::DirectoryItem    rItem;  //constructor
5578*cdf0e10cSrcweir  			//get the DirectoryItem.
5579*cdf0e10cSrcweir 			nError1 = ::osl::DirectoryItem::get( aTmpName3, rItem );
5580*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5581*cdf0e10cSrcweir 
5582*cdf0e10cSrcweir 			//check the file name
5583*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5584*cdf0e10cSrcweir 			nError2 = rItem.getFileStatus( rFileStatus );
5585*cdf0e10cSrcweir 
5586*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getFileStatus function: get directory information",
5587*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) &&
5588*cdf0e10cSrcweir 			                        ( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName1 ) ) );
5589*cdf0e10cSrcweir 		}
5590*cdf0e10cSrcweir 
5591*cdf0e10cSrcweir 
5592*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getFileStatus );
5593*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileStatus_001 );
5594*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileStatus_002 );
5595*cdf0e10cSrcweir 		CPPUNIT_TEST( getFileStatus_003 );
5596*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5597*cdf0e10cSrcweir 	};// class getFileStatus
5598*cdf0e10cSrcweir 
5599*cdf0e10cSrcweir 
5600*cdf0e10cSrcweir 
5601*cdf0e10cSrcweir  	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::ctors, "osl_DirectoryItem" );
5602*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::copy_assin_Ctors, "osl_DirectoryItem" );
5603*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::is, "osl_DirectoryItem" );
5604*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::get, "osl_DirectoryItem" );
5605*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::getFileStatus, "osl_DirectoryItem" );
5606*cdf0e10cSrcweir }// namespace osl_DirectoryItem
5607*cdf0e10cSrcweir 
5608*cdf0e10cSrcweir 
5609*cdf0e10cSrcweir //------------------------------------------------------------------------
5610*cdf0e10cSrcweir // Beginning of the test cases for Directory class
5611*cdf0e10cSrcweir //------------------------------------------------------------------------
5612*cdf0e10cSrcweir namespace osl_Directory
5613*cdf0e10cSrcweir {
5614*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5615*cdf0e10cSrcweir 	// 	testing the method
5616*cdf0e10cSrcweir 	// 	Directory( const ::rtl::OUString& strPath ): _pData( 0 ), _aPath( strPath )
5617*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5618*cdf0e10cSrcweir     class  ctors : public CppUnit::TestFixture
5619*cdf0e10cSrcweir 	{
5620*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5621*cdf0e10cSrcweir 
5622*cdf0e10cSrcweir 	    public:
5623*cdf0e10cSrcweir 		// initialization
5624*cdf0e10cSrcweir 		void setUp( )
5625*cdf0e10cSrcweir 		{
5626*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5627*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5628*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
5629*cdf0e10cSrcweir 		}
5630*cdf0e10cSrcweir 
5631*cdf0e10cSrcweir 		void tearDown( )
5632*cdf0e10cSrcweir 		{
5633*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5634*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
5635*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5636*cdf0e10cSrcweir             // LLA: t_print("tearDown done.\n");
5637*cdf0e10cSrcweir 		}
5638*cdf0e10cSrcweir 
5639*cdf0e10cSrcweir 		// test code.
5640*cdf0e10cSrcweir 		void ctors_001( )
5641*cdf0e10cSrcweir 		{
5642*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5643*cdf0e10cSrcweir 
5644*cdf0e10cSrcweir 			//open a directory
5645*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5646*cdf0e10cSrcweir  			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5647*cdf0e10cSrcweir 			//close a directory
5648*cdf0e10cSrcweir 			nError2 = testDirectory.close( );
5649*cdf0e10cSrcweir  			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
5650*cdf0e10cSrcweir 
5651*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: create an instance and check open and close",
5652*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) &&
5653*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) );
5654*cdf0e10cSrcweir 		}
5655*cdf0e10cSrcweir 
5656*cdf0e10cSrcweir 		void ctors_002( )
5657*cdf0e10cSrcweir 		{
5658*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName9 ); //constructor
5659*cdf0e10cSrcweir 
5660*cdf0e10cSrcweir 			//open a directory
5661*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5662*cdf0e10cSrcweir  			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5663*cdf0e10cSrcweir 			//close a directory
5664*cdf0e10cSrcweir 			nError2 = testDirectory.close( );
5665*cdf0e10cSrcweir  			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
5666*cdf0e10cSrcweir 
5667*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for ctors function: relative URL, :-), it is also worked",
5668*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) &&
5669*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) );
5670*cdf0e10cSrcweir 		}
5671*cdf0e10cSrcweir 
5672*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( ctors );
5673*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_001 );
5674*cdf0e10cSrcweir 		CPPUNIT_TEST( ctors_002 );
5675*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5676*cdf0e10cSrcweir 	};// class ctors
5677*cdf0e10cSrcweir 
5678*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5679*cdf0e10cSrcweir 	// 	testing the method
5680*cdf0e10cSrcweir 	// 	inline RC open()
5681*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5682*cdf0e10cSrcweir     class  open : public CppUnit::TestFixture
5683*cdf0e10cSrcweir 	{
5684*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5685*cdf0e10cSrcweir 
5686*cdf0e10cSrcweir 	    public:
5687*cdf0e10cSrcweir 		// initialization
5688*cdf0e10cSrcweir 		void setUp( )
5689*cdf0e10cSrcweir 		{
5690*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5691*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5692*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
5693*cdf0e10cSrcweir 		}
5694*cdf0e10cSrcweir 
5695*cdf0e10cSrcweir 		void tearDown( )
5696*cdf0e10cSrcweir 		{
5697*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5698*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
5699*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5700*cdf0e10cSrcweir 		}
5701*cdf0e10cSrcweir 
5702*cdf0e10cSrcweir 		// test code.
5703*cdf0e10cSrcweir 		void open_001( )
5704*cdf0e10cSrcweir 		{
5705*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5706*cdf0e10cSrcweir 
5707*cdf0e10cSrcweir 			//open a directory
5708*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5709*cdf0e10cSrcweir 			//check if directory is opened.
5710*cdf0e10cSrcweir 			sal_Bool bOk = testDirectory.isOpen( );
5711*cdf0e10cSrcweir 			//close a directory
5712*cdf0e10cSrcweir 			nError2 = testDirectory.close( );
5713*cdf0e10cSrcweir 
5714*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a directory and check for open",
5715*cdf0e10cSrcweir 			                        ( sal_True == bOk ) &&
5716*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_None == nError1 ) &&
5717*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) );
5718*cdf0e10cSrcweir 		}
5719*cdf0e10cSrcweir 
5720*cdf0e10cSrcweir 		void open_002( )
5721*cdf0e10cSrcweir 		{
5722*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName6 ); //constructor
5723*cdf0e10cSrcweir 
5724*cdf0e10cSrcweir 			//open a directory
5725*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5726*cdf0e10cSrcweir  			if ( ::osl::FileBase::E_None == nError1 )
5727*cdf0e10cSrcweir 			{
5728*cdf0e10cSrcweir 				nError2 = testDirectory.close( );
5729*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
5730*cdf0e10cSrcweir 			}
5731*cdf0e10cSrcweir 
5732*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a file that is not existed",
5733*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_NOENT == nError1 ) );
5734*cdf0e10cSrcweir 		}
5735*cdf0e10cSrcweir 
5736*cdf0e10cSrcweir 		void open_003( )
5737*cdf0e10cSrcweir 		{
5738*cdf0e10cSrcweir 			::osl::Directory testDirectory( aUserDirectorySys ); //constructor
5739*cdf0e10cSrcweir 
5740*cdf0e10cSrcweir 			//open a directory
5741*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5742*cdf0e10cSrcweir  			if ( ::osl::FileBase::E_None == nError1 )
5743*cdf0e10cSrcweir 			{
5744*cdf0e10cSrcweir 				nError2 = testDirectory.close( );
5745*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
5746*cdf0e10cSrcweir 			}
5747*cdf0e10cSrcweir 
5748*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: using system path",
5749*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_INVAL == nError1 ) );
5750*cdf0e10cSrcweir 		}
5751*cdf0e10cSrcweir 
5752*cdf0e10cSrcweir 		void open_004( )
5753*cdf0e10cSrcweir 		{
5754*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName4 ); //constructor
5755*cdf0e10cSrcweir 
5756*cdf0e10cSrcweir 			//open a directory
5757*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5758*cdf0e10cSrcweir  			if ( ::osl::FileBase::E_None == nError1 )
5759*cdf0e10cSrcweir 			{
5760*cdf0e10cSrcweir 				nError2 = testDirectory.close( );
5761*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
5762*cdf0e10cSrcweir 			}
5763*cdf0e10cSrcweir 
5764*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for open function: open a file instead of a directory",
5765*cdf0e10cSrcweir 				 					( ::osl::FileBase::E_NOTDIR == nError1 ) || ( ::osl::FileBase::E_ACCES ) );
5766*cdf0e10cSrcweir 		}
5767*cdf0e10cSrcweir 
5768*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( open );
5769*cdf0e10cSrcweir 		CPPUNIT_TEST( open_001 );
5770*cdf0e10cSrcweir 		CPPUNIT_TEST( open_002 );
5771*cdf0e10cSrcweir 		CPPUNIT_TEST( open_003 );
5772*cdf0e10cSrcweir 		CPPUNIT_TEST( open_004 );
5773*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5774*cdf0e10cSrcweir 	};// class open
5775*cdf0e10cSrcweir 
5776*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5777*cdf0e10cSrcweir 	// 	testing the method
5778*cdf0e10cSrcweir 	// 	inline sal_Bool isOpen() { return _pData != NULL; };
5779*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5780*cdf0e10cSrcweir     class  isOpen : public CppUnit::TestFixture
5781*cdf0e10cSrcweir 	{
5782*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5783*cdf0e10cSrcweir 
5784*cdf0e10cSrcweir 	    public:
5785*cdf0e10cSrcweir 		// initialization
5786*cdf0e10cSrcweir 		void setUp( )
5787*cdf0e10cSrcweir 		{
5788*cdf0e10cSrcweir 			// create a tempfile in $TEMP/tmpdir/tmpname.
5789*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5790*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
5791*cdf0e10cSrcweir 		}
5792*cdf0e10cSrcweir 
5793*cdf0e10cSrcweir 		void tearDown( )
5794*cdf0e10cSrcweir 		{
5795*cdf0e10cSrcweir 			// remove the tempfile in $TEMP/tmpdir/tmpname.
5796*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
5797*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5798*cdf0e10cSrcweir 		}
5799*cdf0e10cSrcweir 
5800*cdf0e10cSrcweir 		// test code.
5801*cdf0e10cSrcweir 		void isOpen_001( )
5802*cdf0e10cSrcweir 		{
5803*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5804*cdf0e10cSrcweir 
5805*cdf0e10cSrcweir 			//open a directory
5806*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5807*cdf0e10cSrcweir 			//check if directory is opened.
5808*cdf0e10cSrcweir 			sal_Bool bOk = testDirectory.isOpen( );
5809*cdf0e10cSrcweir 			//close a directory
5810*cdf0e10cSrcweir 			nError2 = testDirectory.close( );
5811*cdf0e10cSrcweir 
5812*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isOpen function: open a directory and check for open",
5813*cdf0e10cSrcweir 			                        ( sal_True == bOk ) );
5814*cdf0e10cSrcweir 		}
5815*cdf0e10cSrcweir 
5816*cdf0e10cSrcweir 		void isOpen_002( )
5817*cdf0e10cSrcweir 		{
5818*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5819*cdf0e10cSrcweir 
5820*cdf0e10cSrcweir 			//check if directory is opened.
5821*cdf0e10cSrcweir 			sal_Bool bOk = testDirectory.isOpen( );
5822*cdf0e10cSrcweir 
5823*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isOpen function: do not open a directory and check for open",
5824*cdf0e10cSrcweir 			                        !( sal_True == bOk ) );
5825*cdf0e10cSrcweir 		}
5826*cdf0e10cSrcweir 
5827*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( isOpen );
5828*cdf0e10cSrcweir 		CPPUNIT_TEST( isOpen_001 );
5829*cdf0e10cSrcweir 		CPPUNIT_TEST( isOpen_002 );
5830*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5831*cdf0e10cSrcweir 	};// class isOpen
5832*cdf0e10cSrcweir 
5833*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5834*cdf0e10cSrcweir 	// 	testing the method
5835*cdf0e10cSrcweir 	// 	inline RC close()
5836*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5837*cdf0e10cSrcweir     class  close : public CppUnit::TestFixture
5838*cdf0e10cSrcweir 	{
5839*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5840*cdf0e10cSrcweir 
5841*cdf0e10cSrcweir 	    public:
5842*cdf0e10cSrcweir 		// initialization
5843*cdf0e10cSrcweir 		void setUp( )
5844*cdf0e10cSrcweir 		{
5845*cdf0e10cSrcweir 			// create a tempdirectory : $TEMP/tmpdir.
5846*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5847*cdf0e10cSrcweir 		}
5848*cdf0e10cSrcweir 
5849*cdf0e10cSrcweir 		void tearDown( )
5850*cdf0e10cSrcweir 		{
5851*cdf0e10cSrcweir 			// remove a tempdirectory : $TEMP/tmpdir.
5852*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5853*cdf0e10cSrcweir 		}
5854*cdf0e10cSrcweir 
5855*cdf0e10cSrcweir 		// test code.
5856*cdf0e10cSrcweir 		void close_001( )
5857*cdf0e10cSrcweir 		{
5858*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5859*cdf0e10cSrcweir 
5860*cdf0e10cSrcweir 			//open a directory
5861*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5862*cdf0e10cSrcweir 			//close a directory
5863*cdf0e10cSrcweir 			nError2 = testDirectory.close( );
5864*cdf0e10cSrcweir 			//check if directory is opened.
5865*cdf0e10cSrcweir 			sal_Bool bOk = testDirectory.isOpen( );
5866*cdf0e10cSrcweir 
5867*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isOpen function: close a directory and check for open",
5868*cdf0e10cSrcweir 			                        !( sal_True == bOk ) );
5869*cdf0e10cSrcweir 		}
5870*cdf0e10cSrcweir 
5871*cdf0e10cSrcweir 		void close_002( )
5872*cdf0e10cSrcweir 		{
5873*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5874*cdf0e10cSrcweir 
5875*cdf0e10cSrcweir 			//close a directory
5876*cdf0e10cSrcweir 			nError1 = testDirectory.close( );
5877*cdf0e10cSrcweir 
5878*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for isOpen function: close a not opened directory",
5879*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_BADF == nError1 ) );
5880*cdf0e10cSrcweir 		}
5881*cdf0e10cSrcweir 
5882*cdf0e10cSrcweir 
5883*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( close );
5884*cdf0e10cSrcweir 		CPPUNIT_TEST( close_001 );
5885*cdf0e10cSrcweir 		CPPUNIT_TEST( close_002 );
5886*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5887*cdf0e10cSrcweir 	};// class close
5888*cdf0e10cSrcweir 
5889*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5890*cdf0e10cSrcweir 	// 	testing the method
5891*cdf0e10cSrcweir 	// 	inline RC reset()
5892*cdf0e10cSrcweir 	//---------------------------------------------------------------------
5893*cdf0e10cSrcweir     class  reset : public CppUnit::TestFixture
5894*cdf0e10cSrcweir 	{
5895*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
5896*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
5897*cdf0e10cSrcweir 
5898*cdf0e10cSrcweir 	    public:
5899*cdf0e10cSrcweir 		// initialization
5900*cdf0e10cSrcweir 		void setUp( )
5901*cdf0e10cSrcweir 		{
5902*cdf0e10cSrcweir 			// create a tempdirectory : $TEMP/tmpdir.
5903*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
5904*cdf0e10cSrcweir 			// create three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
5905*cdf0e10cSrcweir 			createTestFile( aTmpName3, aTmpName2);
5906*cdf0e10cSrcweir 			createTestFile( aTmpName3, aTmpName1);
5907*cdf0e10cSrcweir 			createTestFile( aTmpName3, aHidURL1);
5908*cdf0e10cSrcweir 		}
5909*cdf0e10cSrcweir 
5910*cdf0e10cSrcweir 		void tearDown( )
5911*cdf0e10cSrcweir 		{
5912*cdf0e10cSrcweir 			// remove three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
5913*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aHidURL1);
5914*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aTmpName1);
5915*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aTmpName2);
5916*cdf0e10cSrcweir 			// remove a tempdirectory : $TEMP/tmpdir.
5917*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
5918*cdf0e10cSrcweir 		}
5919*cdf0e10cSrcweir 
5920*cdf0e10cSrcweir 		// test code.
5921*cdf0e10cSrcweir 		void reset_001( )
5922*cdf0e10cSrcweir 		{
5923*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 ); //constructor
5924*cdf0e10cSrcweir 
5925*cdf0e10cSrcweir 			//open a directory
5926*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
5927*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5928*cdf0e10cSrcweir 			//get first Item
5929*cdf0e10cSrcweir 			nError1 = testDirectory.getNextItem( rItem, 1 );
5930*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5931*cdf0e10cSrcweir 			//get second Item
5932*cdf0e10cSrcweir 			//mindy: nError1 = testDirectory.getNextItem( rItem, 0 );
5933*cdf0e10cSrcweir 			//mindy: CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5934*cdf0e10cSrcweir 
5935*cdf0e10cSrcweir 			//reset enumeration
5936*cdf0e10cSrcweir 			nError2 = testDirectory.reset( );
5937*cdf0e10cSrcweir 			//get reseted Item, if reset does not work, getNextItem() should return the second Item (aTmpName1)
5938*cdf0e10cSrcweir 			nError1 = testDirectory.getNextItem( rItem, 0 );
5939*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5940*cdf0e10cSrcweir 
5941*cdf0e10cSrcweir 			//check the file name
5942*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
5943*cdf0e10cSrcweir 			nError1 = rItem.getFileStatus( rFileStatus );
5944*cdf0e10cSrcweir 			//close a directory
5945*cdf0e10cSrcweir 			nError1 = testDirectory.close( );
5946*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
5947*cdf0e10cSrcweir 
5948*cdf0e10cSrcweir 			sal_Bool bOK1,bOK2;
5949*cdf0e10cSrcweir 			bOK1 = compareFileName( rFileStatus.getFileName( ), aTmpName2 );
5950*cdf0e10cSrcweir 			bOK2 = compareFileName( rFileStatus.getFileName( ), aHidURL1 );
5951*cdf0e10cSrcweir 
5952*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for reset function: get two directory item, reset it, then get again, check the filename",
5953*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_None == nError2 ) &&
5954*cdf0e10cSrcweir 			                        ( sal_True == bOK1 || bOK2 ) );
5955*cdf0e10cSrcweir 		}
5956*cdf0e10cSrcweir 
5957*cdf0e10cSrcweir 		void reset_002( )
5958*cdf0e10cSrcweir 		{
5959*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName6 ); //constructor
5960*cdf0e10cSrcweir 
5961*cdf0e10cSrcweir 			//close a directory
5962*cdf0e10cSrcweir 			nError1 = testDirectory.reset( );
5963*cdf0e10cSrcweir 
5964*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for reset function: reset a non existed directory",
5965*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_NOENT == nError1 ) );
5966*cdf0e10cSrcweir 		}
5967*cdf0e10cSrcweir 
5968*cdf0e10cSrcweir 
5969*cdf0e10cSrcweir 		void reset_003( )
5970*cdf0e10cSrcweir 		{
5971*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName4 ); //constructor
5972*cdf0e10cSrcweir 
5973*cdf0e10cSrcweir 			//close a directory
5974*cdf0e10cSrcweir 			nError1 = testDirectory.reset( );
5975*cdf0e10cSrcweir 
5976*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for reset function: reset a file instead of a directory",
5977*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_NOTDIR == nError1 ) || ( ::osl::FileBase::E_NOENT == nError1 ) );
5978*cdf0e10cSrcweir 		}
5979*cdf0e10cSrcweir 
5980*cdf0e10cSrcweir 		void reset_004( )
5981*cdf0e10cSrcweir 		{
5982*cdf0e10cSrcweir 			::osl::Directory testDirectory( aUserDirectorySys ); //constructor
5983*cdf0e10cSrcweir 
5984*cdf0e10cSrcweir 			//close a directory
5985*cdf0e10cSrcweir 			nError1 = testDirectory.reset( );
5986*cdf0e10cSrcweir 
5987*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for reset function: use a system path",
5988*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_INVAL == nError1 ) );
5989*cdf0e10cSrcweir 		}
5990*cdf0e10cSrcweir 
5991*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( reset );
5992*cdf0e10cSrcweir 		CPPUNIT_TEST( reset_001 );
5993*cdf0e10cSrcweir 		CPPUNIT_TEST( reset_002 );
5994*cdf0e10cSrcweir 		CPPUNIT_TEST( reset_003 );
5995*cdf0e10cSrcweir 		CPPUNIT_TEST( reset_004 );
5996*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
5997*cdf0e10cSrcweir 	};// class reset
5998*cdf0e10cSrcweir 
5999*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6000*cdf0e10cSrcweir 	// 	testing the method
6001*cdf0e10cSrcweir 	// 	inline RC getNextItem( DirectoryItem& rItem, sal_uInt32 nHint = 0 )
6002*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6003*cdf0e10cSrcweir     class  getNextItem : public CppUnit::TestFixture
6004*cdf0e10cSrcweir 	{
6005*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
6006*cdf0e10cSrcweir 		::osl::DirectoryItem    rItem;
6007*cdf0e10cSrcweir 
6008*cdf0e10cSrcweir 	    public:
6009*cdf0e10cSrcweir 		// initialization
6010*cdf0e10cSrcweir 		void setUp( )
6011*cdf0e10cSrcweir 		{
6012*cdf0e10cSrcweir 			// create a tempdirectory : $TEMP/tmpdir.
6013*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
6014*cdf0e10cSrcweir 			// create three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
6015*cdf0e10cSrcweir 			createTestFile( aTmpName3, aTmpName2 );
6016*cdf0e10cSrcweir 			createTestFile( aTmpName3, aTmpName1 );
6017*cdf0e10cSrcweir 			createTestFile( aTmpName3, aHidURL1 );
6018*cdf0e10cSrcweir 
6019*cdf0e10cSrcweir 		}
6020*cdf0e10cSrcweir 
6021*cdf0e10cSrcweir 		void tearDown( )
6022*cdf0e10cSrcweir 		{
6023*cdf0e10cSrcweir 			// remove three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
6024*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aHidURL1 );
6025*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aTmpName1 );
6026*cdf0e10cSrcweir 			deleteTestFile( aTmpName3, aTmpName2 );
6027*cdf0e10cSrcweir 			// remove a tempdirectory : $TEMP/tmpdir.
6028*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
6029*cdf0e10cSrcweir 		}
6030*cdf0e10cSrcweir 
6031*cdf0e10cSrcweir 		// test code.
6032*cdf0e10cSrcweir 		void getNextItem_001( )
6033*cdf0e10cSrcweir 		{
6034*cdf0e10cSrcweir  			::osl::Directory testDirectory( aTmpName3 ); //constructor
6035*cdf0e10cSrcweir 
6036*cdf0e10cSrcweir 			//open a directory
6037*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
6038*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6039*cdf0e10cSrcweir 
6040*cdf0e10cSrcweir 			//check the file name
6041*cdf0e10cSrcweir 			::rtl::OUString     strFilename;
6042*cdf0e10cSrcweir 			sal_Bool            bOk1 = sal_False;
6043*cdf0e10cSrcweir             sal_Bool bOk2 = sal_False;
6044*cdf0e10cSrcweir             sal_Bool bOk3 = sal_False;
6045*cdf0e10cSrcweir   			::osl::FileStatus   rFileStatus( FileStatusMask_FileName );
6046*cdf0e10cSrcweir 			for ( int nCount = 0; nCount < 3; nCount++ )
6047*cdf0e10cSrcweir 			{
6048*cdf0e10cSrcweir 				//get three Items
6049*cdf0e10cSrcweir 				nError1 = testDirectory.getNextItem( rItem, 2 );
6050*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6051*cdf0e10cSrcweir 				nError1 = rItem.getFileStatus( rFileStatus );
6052*cdf0e10cSrcweir 				CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6053*cdf0e10cSrcweir 				switch ( nCount )
6054*cdf0e10cSrcweir 				{
6055*cdf0e10cSrcweir 					case 0: bOk1 = compareFileName( rFileStatus.getFileName( ), aTmpName2 ) || compareFileName( rFileStatus.getFileName( ), aHidURL1);
6056*cdf0e10cSrcweir 						break;
6057*cdf0e10cSrcweir 					case 1: bOk2 = compareFileName( rFileStatus.getFileName( ), aTmpName1 );
6058*cdf0e10cSrcweir 						break;
6059*cdf0e10cSrcweir 					case 2: bOk3 = compareFileName( rFileStatus.getFileName( ), aHidURL1) || compareFileName( rFileStatus.getFileName( ), aTmpName2 );
6060*cdf0e10cSrcweir 				}
6061*cdf0e10cSrcweir 			}
6062*cdf0e10cSrcweir 
6063*cdf0e10cSrcweir 			//close a directory
6064*cdf0e10cSrcweir 			nError1 = testDirectory.close( );
6065*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6066*cdf0e10cSrcweir 
6067*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getNextItem function: retrive three items and check their names.",
6068*cdf0e10cSrcweir 			                        ( sal_True == bOk1 ) && ( sal_True == bOk2 ) && ( sal_True == bOk3 ) );
6069*cdf0e10cSrcweir 		}
6070*cdf0e10cSrcweir 
6071*cdf0e10cSrcweir 		void getNextItem_002( )
6072*cdf0e10cSrcweir 		{
6073*cdf0e10cSrcweir  			::osl::Directory testDirectory( aTmpName3 ); //constructor
6074*cdf0e10cSrcweir 			nError1 = testDirectory.getNextItem( rItem );
6075*cdf0e10cSrcweir 
6076*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getNextItem function: retrive an item in a directory which is not opened, also test for nHint's default value.",
6077*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_INVAL == nError1 ) );
6078*cdf0e10cSrcweir 		}
6079*cdf0e10cSrcweir 
6080*cdf0e10cSrcweir 		void getNextItem_003( )
6081*cdf0e10cSrcweir 		{
6082*cdf0e10cSrcweir  			::osl::Directory testDirectory( aTmpName3 ); //constructor
6083*cdf0e10cSrcweir 
6084*cdf0e10cSrcweir 			//open a directory
6085*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
6086*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6087*cdf0e10cSrcweir 
6088*cdf0e10cSrcweir 			for ( int nCount = 0; nCount < 4; nCount++ )
6089*cdf0e10cSrcweir 			{
6090*cdf0e10cSrcweir 				nError2 = testDirectory.getNextItem( rItem, 3 );
6091*cdf0e10cSrcweir 			}
6092*cdf0e10cSrcweir 
6093*cdf0e10cSrcweir 			//close a directory
6094*cdf0e10cSrcweir 			nError1 = testDirectory.close( );
6095*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6096*cdf0e10cSrcweir 
6097*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getNextItem function: retrive 4 times in a directory which contain only 3 files.",
6098*cdf0e10cSrcweir 			                        ( ::osl::FileBase::E_NOENT == nError2 ) );
6099*cdf0e10cSrcweir 		}
6100*cdf0e10cSrcweir 
6101*cdf0e10cSrcweir 		void getNextItem_004( )
6102*cdf0e10cSrcweir 		{
6103*cdf0e10cSrcweir 		//create a link file(can not on Windows), then check if getNextItem can get it.
6104*cdf0e10cSrcweir #ifdef UNX
6105*cdf0e10cSrcweir 			sal_Bool bOK = sal_False;
6106*cdf0e10cSrcweir 			::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys );
6107*cdf0e10cSrcweir 			( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/link.file");
6108*cdf0e10cSrcweir 			( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/tmpname");
6109*cdf0e10cSrcweir                 rtl::OString strLinkFileName, strSrcFileName;
6110*cdf0e10cSrcweir                 strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US );
6111*cdf0e10cSrcweir                 strSrcFileName  = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US );
6112*cdf0e10cSrcweir 
6113*cdf0e10cSrcweir 			//create a link file and link it to file "/tmp/PID/tmpdir/tmpname"
6114*cdf0e10cSrcweir                 sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() );
6115*cdf0e10cSrcweir 			CPPUNIT_ASSERT( fd == 0 );
6116*cdf0e10cSrcweir 			::osl::Directory testDirectory( aTmpName3 );
6117*cdf0e10cSrcweir 
6118*cdf0e10cSrcweir 			//open a directory
6119*cdf0e10cSrcweir 			nError1 = testDirectory.open( );
6120*cdf0e10cSrcweir 			::rtl::OUString aFileName = ::rtl::OUString::createFromAscii("link.file");
6121*cdf0e10cSrcweir 
6122*cdf0e10cSrcweir 			while (1) {
6123*cdf0e10cSrcweir 				nError1 = testDirectory.getNextItem( rItem, 4 );
6124*cdf0e10cSrcweir 				if (::osl::FileBase::E_None == nError1) {
6125*cdf0e10cSrcweir 					::osl::FileStatus   rFileStatus( FileStatusMask_FileName | FileStatusMask_Type );
6126*cdf0e10cSrcweir 					rItem.getFileStatus( rFileStatus );
6127*cdf0e10cSrcweir 					if ( compareFileName( rFileStatus.getFileName( ), aFileName) == sal_True )
6128*cdf0e10cSrcweir 					{
6129*cdf0e10cSrcweir 						if ( FileStatus::Link == rFileStatus.getFileType( ))
6130*cdf0e10cSrcweir 						{
6131*cdf0e10cSrcweir 							bOK = sal_True;
6132*cdf0e10cSrcweir 							break;
6133*cdf0e10cSrcweir 						}
6134*cdf0e10cSrcweir 					}
6135*cdf0e10cSrcweir 				}
6136*cdf0e10cSrcweir 				else
6137*cdf0e10cSrcweir 					break;
6138*cdf0e10cSrcweir 			};
6139*cdf0e10cSrcweir                 fd = std::remove( strLinkFileName.getStr() );
6140*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "remove link file failed", fd == 0 );
6141*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getNextItem function: check if can retrieve the link file name",
6142*cdf0e10cSrcweir 			                        ( bOK == sal_True ) );
6143*cdf0e10cSrcweir #endif
6144*cdf0e10cSrcweir 		}
6145*cdf0e10cSrcweir 
6146*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getNextItem );
6147*cdf0e10cSrcweir 		CPPUNIT_TEST( getNextItem_001 );
6148*cdf0e10cSrcweir 		CPPUNIT_TEST( getNextItem_002 );
6149*cdf0e10cSrcweir 		CPPUNIT_TEST( getNextItem_003 );
6150*cdf0e10cSrcweir 		CPPUNIT_TEST( getNextItem_004 );
6151*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
6152*cdf0e10cSrcweir 	};// class getNextItem
6153*cdf0e10cSrcweir 
6154*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6155*cdf0e10cSrcweir 	// 	testing the method
6156*cdf0e10cSrcweir 	// 	inline static RC getVolumeInfo( const ::rtl::OUString& ustrDirectoryURL, VolumeInfo& rInfo )
6157*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6158*cdf0e10cSrcweir     class  getVolumeInfo : public CppUnit::TestFixture
6159*cdf0e10cSrcweir 	{
6160*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
6161*cdf0e10cSrcweir 
6162*cdf0e10cSrcweir 	    public:
6163*cdf0e10cSrcweir 
6164*cdf0e10cSrcweir 		// test code.
6165*cdf0e10cSrcweir         void checkValidMask(osl::VolumeInfo const& _aVolumeInfo, sal_Int32 _nMask)
6166*cdf0e10cSrcweir             {
6167*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_FileSystemName)
6168*cdf0e10cSrcweir 		{
6169*cdf0e10cSrcweir 			//get file system name
6170*cdf0e10cSrcweir 			::rtl::OUString aFileSysName( aNullURL );
6171*cdf0e10cSrcweir                     aFileSysName = _aVolumeInfo.getFileSystemName( );
6172*cdf0e10cSrcweir 
6173*cdf0e10cSrcweir                     sal_Bool bRes2 = compareFileName( aFileSysName, aNullURL );
6174*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: getVolumeInfo of root directory.",
6175*cdf0e10cSrcweir 			                        ( osl::FileBase::E_None == nError1 ) &&
6176*cdf0e10cSrcweir                                             ( sal_False == bRes2 ) );
6177*cdf0e10cSrcweir                 }
6178*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_Attributes)
6179*cdf0e10cSrcweir                 {
6180*cdf0e10cSrcweir                     sal_Bool b1 = _aVolumeInfo.getRemoteFlag();
6181*cdf0e10cSrcweir                     sal_Bool b2 = _aVolumeInfo.getRemoveableFlag();
6182*cdf0e10cSrcweir                     sal_Bool b3 = _aVolumeInfo.getCompactDiscFlag();
6183*cdf0e10cSrcweir                     sal_Bool b4 = _aVolumeInfo.getFloppyDiskFlag();
6184*cdf0e10cSrcweir                     sal_Bool b5 = _aVolumeInfo.getFixedDiskFlag();
6185*cdf0e10cSrcweir                     sal_Bool b6 = _aVolumeInfo.getRAMDiskFlag();
6186*cdf0e10cSrcweir 
6187*cdf0e10cSrcweir                     rtl::OString sAttr;
6188*cdf0e10cSrcweir                     if (b1) sAttr =  "Remote";
6189*cdf0e10cSrcweir                     if (b2) sAttr += " Removeable";
6190*cdf0e10cSrcweir                     if (b3) sAttr += " CDROM";
6191*cdf0e10cSrcweir                     if (b4) sAttr += " Floppy";
6192*cdf0e10cSrcweir                     if (b5) sAttr += " FixedDisk";
6193*cdf0e10cSrcweir                     if (b6) sAttr += " RAMDisk";
6194*cdf0e10cSrcweir 
6195*cdf0e10cSrcweir                     t_print("Attributes: %s\n", sAttr.getStr() );
6196*cdf0e10cSrcweir                 }
6197*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_TotalSpace)
6198*cdf0e10cSrcweir                 {
6199*cdf0e10cSrcweir                     // within Linux, df / * 1024 bytes is the result
6200*cdf0e10cSrcweir                     sal_uInt64 nSize = _aVolumeInfo.getTotalSpace();
6201*cdf0e10cSrcweir                     t_print("Total space: %lld\n", nSize);
6202*cdf0e10cSrcweir                 }
6203*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_UsedSpace)
6204*cdf0e10cSrcweir                 {
6205*cdf0e10cSrcweir                     sal_uInt64 nSize = _aVolumeInfo.getUsedSpace();
6206*cdf0e10cSrcweir                     t_print(" Used space: %lld\n", nSize);
6207*cdf0e10cSrcweir                 }
6208*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_FreeSpace)
6209*cdf0e10cSrcweir                 {
6210*cdf0e10cSrcweir                     sal_uInt64 nSize = _aVolumeInfo.getFreeSpace();
6211*cdf0e10cSrcweir                     t_print(" Free space: %lld\n", nSize);
6212*cdf0e10cSrcweir                 }
6213*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_MaxNameLength)
6214*cdf0e10cSrcweir                 {
6215*cdf0e10cSrcweir                     sal_uInt32 nLength = _aVolumeInfo.getMaxNameLength();
6216*cdf0e10cSrcweir                     t_print("max name length: %ld\n", nLength);
6217*cdf0e10cSrcweir                 }
6218*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_MaxPathLength)
6219*cdf0e10cSrcweir                 {
6220*cdf0e10cSrcweir                     sal_uInt32 nLength = _aVolumeInfo.getMaxPathLength();
6221*cdf0e10cSrcweir                     t_print("max path length: %ld\n", nLength);
6222*cdf0e10cSrcweir                 }
6223*cdf0e10cSrcweir                 if (_nMask == VolumeInfoMask_FileSystemCaseHandling)
6224*cdf0e10cSrcweir                 {
6225*cdf0e10cSrcweir                     bool bIsCase = _aVolumeInfo.isCaseSensitiveFileSystem();
6226*cdf0e10cSrcweir                     t_print("filesystem case sensitive: %s\n", bIsCase ? "yes" : "no");
6227*cdf0e10cSrcweir                 }
6228*cdf0e10cSrcweir             }
6229*cdf0e10cSrcweir 
6230*cdf0e10cSrcweir         void checkVolumeInfo(sal_Int32 _nMask)
6231*cdf0e10cSrcweir             {
6232*cdf0e10cSrcweir                 ::osl::VolumeInfo aVolumeInfo( _nMask );
6233*cdf0e10cSrcweir                 //call getVolumeInfo here
6234*cdf0e10cSrcweir                 nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
6235*cdf0e10cSrcweir                 // LLA: IMHO it's not a bug, if VolumeInfo is not valid, it's a feature
6236*cdf0e10cSrcweir                 // LLA: CPPUNIT_ASSERT_MESSAGE("mask is not valid", sal_True == aVolumeInfo.isValid( _nMask ) );
6237*cdf0e10cSrcweir                 if (aVolumeInfo.isValid( _nMask))
6238*cdf0e10cSrcweir                 {
6239*cdf0e10cSrcweir                     checkValidMask(aVolumeInfo, _nMask);
6240*cdf0e10cSrcweir                 }
6241*cdf0e10cSrcweir             }
6242*cdf0e10cSrcweir 
6243*cdf0e10cSrcweir 
6244*cdf0e10cSrcweir 		void getVolumeInfo_001_1( )
6245*cdf0e10cSrcweir 		{
6246*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FileSystemName;
6247*cdf0e10cSrcweir             checkVolumeInfo(mask);
6248*cdf0e10cSrcweir 		}
6249*cdf0e10cSrcweir 		void getVolumeInfo_001_2( )
6250*cdf0e10cSrcweir 		{
6251*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_Attributes;
6252*cdf0e10cSrcweir             checkVolumeInfo(mask);
6253*cdf0e10cSrcweir 		}
6254*cdf0e10cSrcweir 		void getVolumeInfo_001_3( )
6255*cdf0e10cSrcweir 		{
6256*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_TotalSpace;
6257*cdf0e10cSrcweir             checkVolumeInfo(mask);
6258*cdf0e10cSrcweir 		}
6259*cdf0e10cSrcweir 		void getVolumeInfo_001_4( )
6260*cdf0e10cSrcweir 		{
6261*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_UsedSpace;
6262*cdf0e10cSrcweir             checkVolumeInfo(mask);
6263*cdf0e10cSrcweir 		}
6264*cdf0e10cSrcweir 		void getVolumeInfo_001_5( )
6265*cdf0e10cSrcweir 		{
6266*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FreeSpace;
6267*cdf0e10cSrcweir             checkVolumeInfo(mask);
6268*cdf0e10cSrcweir 		}
6269*cdf0e10cSrcweir 		void getVolumeInfo_001_6( )
6270*cdf0e10cSrcweir 		{
6271*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_MaxNameLength;
6272*cdf0e10cSrcweir             checkVolumeInfo(mask);
6273*cdf0e10cSrcweir 		}
6274*cdf0e10cSrcweir 		void getVolumeInfo_001_7( )
6275*cdf0e10cSrcweir 		{
6276*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_MaxPathLength;
6277*cdf0e10cSrcweir             checkVolumeInfo(mask);
6278*cdf0e10cSrcweir 		}
6279*cdf0e10cSrcweir 		void getVolumeInfo_001_8( )
6280*cdf0e10cSrcweir 		{
6281*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FileSystemCaseHandling;
6282*cdf0e10cSrcweir             checkVolumeInfo(mask);
6283*cdf0e10cSrcweir 		}
6284*cdf0e10cSrcweir 
6285*cdf0e10cSrcweir 		void getVolumeInfo_002( )
6286*cdf0e10cSrcweir 		{
6287*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FileSystemName;
6288*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
6289*cdf0e10cSrcweir 			//call getVolumeInfo here
6290*cdf0e10cSrcweir 
6291*cdf0e10cSrcweir             // LLA: rtl::OUString aRootSysURL;
6292*cdf0e10cSrcweir             // LLA: nError1 = osl::File::getFileURLFromSystemPath(aRootSys, aRootSysURL);
6293*cdf0e10cSrcweir             // LLA:
6294*cdf0e10cSrcweir 			// LLA: CPPUNIT_ASSERT_MESSAGE( "can't convert root path to file url",
6295*cdf0e10cSrcweir 			// LLA:                         ( osl::FileBase::E_NONE == nError1 ) );
6296*cdf0e10cSrcweir 
6297*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aRootSys, aVolumeInfo );
6298*cdf0e10cSrcweir 
6299*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: use system path as parameter.",
6300*cdf0e10cSrcweir 			                        ( osl::FileBase::E_INVAL == nError1 ) );
6301*cdf0e10cSrcweir 		}
6302*cdf0e10cSrcweir 
6303*cdf0e10cSrcweir 		void getVolumeInfo_003( )
6304*cdf0e10cSrcweir 		{
6305*cdf0e10cSrcweir 			sal_Int32 mask = VolumeInfoMask_FileSystemName;
6306*cdf0e10cSrcweir 			::osl::VolumeInfo aVolumeInfo( mask );
6307*cdf0e10cSrcweir 			//call getVolumeInfo here
6308*cdf0e10cSrcweir 			nError1 = ::osl::Directory::getVolumeInfo( aTmpName3, aVolumeInfo );
6309*cdf0e10cSrcweir 
6310*cdf0e10cSrcweir // LLA: in Windows, it reply no error, it did not pass in (W32).
6311*cdf0e10cSrcweir #ifdef UNX
6312*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: non-existence test. ",
6313*cdf0e10cSrcweir 			                        ( osl::FileBase::E_NOENT == nError1 ) );
6314*cdf0e10cSrcweir #endif
6315*cdf0e10cSrcweir 		}
6316*cdf0e10cSrcweir 
6317*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( getVolumeInfo );
6318*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_1 );
6319*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_2 );
6320*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_3 );
6321*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_4 );
6322*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_5 );
6323*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_6 );
6324*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_7 );
6325*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_001_8 );
6326*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_002 );
6327*cdf0e10cSrcweir 		CPPUNIT_TEST( getVolumeInfo_003 );
6328*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
6329*cdf0e10cSrcweir 	};// class getVolumeInfo
6330*cdf0e10cSrcweir 
6331*cdf0e10cSrcweir 
6332*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6333*cdf0e10cSrcweir 	// 	testing the method
6334*cdf0e10cSrcweir 	// 	inline static RC create( const ::rtl::OUString& ustrDirectoryURL )
6335*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6336*cdf0e10cSrcweir     class  create : public CppUnit::TestFixture
6337*cdf0e10cSrcweir 	{
6338*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
6339*cdf0e10cSrcweir 
6340*cdf0e10cSrcweir 	    public:
6341*cdf0e10cSrcweir 
6342*cdf0e10cSrcweir 		// test code.
6343*cdf0e10cSrcweir 		void create_001( )
6344*cdf0e10cSrcweir 		{
6345*cdf0e10cSrcweir 			//create directory in $TEMP/tmpdir
6346*cdf0e10cSrcweir 			nError1 = ::osl::Directory::create( aTmpName3 );
6347*cdf0e10cSrcweir 			//check for existence
6348*cdf0e10cSrcweir 			nError2 = ::osl::Directory::create( aTmpName3 );
6349*cdf0e10cSrcweir 			//remove it
6350*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
6351*cdf0e10cSrcweir 
6352*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for create function: create a directory and check its existence.",
6353*cdf0e10cSrcweir 			                        ( osl::FileBase::E_None == nError1 ) &&
6354*cdf0e10cSrcweir 			                        ( osl::FileBase::E_EXIST== nError2 ) );
6355*cdf0e10cSrcweir 		}
6356*cdf0e10cSrcweir 
6357*cdf0e10cSrcweir 		void create_002( )
6358*cdf0e10cSrcweir 		{
6359*cdf0e10cSrcweir 			//create directory in /tmpname
6360*cdf0e10cSrcweir 			nError1 = ::osl::Directory::create( aTmpName7 );
6361*cdf0e10cSrcweir #if defined (WNT )
6362*cdf0e10cSrcweir 			nError1 = osl::FileBase::E_ACCES;  /// in Windows, you can create directory in c:/ any way.
6363*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName7 );
6364*cdf0e10cSrcweir #endif
6365*cdf0e10cSrcweir 
6366*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for create function: create a directory in root for access test.",
6367*cdf0e10cSrcweir 			                        ( osl::FileBase::E_ACCES == nError1 ) );
6368*cdf0e10cSrcweir 		}
6369*cdf0e10cSrcweir 
6370*cdf0e10cSrcweir 		void create_003( )
6371*cdf0e10cSrcweir 		{
6372*cdf0e10cSrcweir 			//create directory in /tmpname
6373*cdf0e10cSrcweir 			nError1 = ::osl::Directory::create( aSysPath1 );
6374*cdf0e10cSrcweir 
6375*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for create function: create a directory using system path.",
6376*cdf0e10cSrcweir 			                        ( osl::FileBase::E_INVAL == nError1 ) );
6377*cdf0e10cSrcweir 		}
6378*cdf0e10cSrcweir 
6379*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( create );
6380*cdf0e10cSrcweir 		CPPUNIT_TEST( create_001 );
6381*cdf0e10cSrcweir 		CPPUNIT_TEST( create_002 );
6382*cdf0e10cSrcweir 		CPPUNIT_TEST( create_003 );
6383*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
6384*cdf0e10cSrcweir 	};// class create
6385*cdf0e10cSrcweir 
6386*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6387*cdf0e10cSrcweir 	// 	testing the method
6388*cdf0e10cSrcweir 	// 	inline static RC remove( const ::rtl::OUString& ustrDirectoryURL )
6389*cdf0e10cSrcweir 	//---------------------------------------------------------------------
6390*cdf0e10cSrcweir     class  remove : public CppUnit::TestFixture
6391*cdf0e10cSrcweir 	{
6392*cdf0e10cSrcweir 		::osl::FileBase::RC     nError1, nError2;
6393*cdf0e10cSrcweir 
6394*cdf0e10cSrcweir 	    public:
6395*cdf0e10cSrcweir 
6396*cdf0e10cSrcweir 		// test code.
6397*cdf0e10cSrcweir 		void remove_001( )
6398*cdf0e10cSrcweir 		{
6399*cdf0e10cSrcweir 			//create directory in $TEMP/tmpdir
6400*cdf0e10cSrcweir 			nError1 = ::osl::Directory::create( aTmpName3 );
6401*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6402*cdf0e10cSrcweir 			//remove it
6403*cdf0e10cSrcweir 			nError1 = ::osl::Directory::remove( aTmpName3 );
6404*cdf0e10cSrcweir 			//check for existence
6405*cdf0e10cSrcweir 			::osl::Directory rDirectory( aTmpName3 );
6406*cdf0e10cSrcweir 			nError2 = rDirectory.open( );
6407*cdf0e10cSrcweir 
6408*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: remove a directory and check its existence.",
6409*cdf0e10cSrcweir 			                        ( osl::FileBase::E_None == nError1 ) &&
6410*cdf0e10cSrcweir 			                        ( osl::FileBase::E_NOENT == nError2 ) );
6411*cdf0e10cSrcweir 		}
6412*cdf0e10cSrcweir 
6413*cdf0e10cSrcweir 		void remove_002( )
6414*cdf0e10cSrcweir 		{
6415*cdf0e10cSrcweir 			//create directory in $TEMP/tmpdir
6416*cdf0e10cSrcweir 			nError1 = ::osl::Directory::create( aTmpName3 );
6417*cdf0e10cSrcweir 			CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
6418*cdf0e10cSrcweir 			//try to remove it by system path
6419*cdf0e10cSrcweir 			nError1 = ::osl::Directory::remove( aSysPath3 );
6420*cdf0e10cSrcweir  			//check for existence
6421*cdf0e10cSrcweir 			::osl::Directory rDirectory( aTmpName3 );
6422*cdf0e10cSrcweir 			nError2 = rDirectory.open( );
6423*cdf0e10cSrcweir 			if ( osl::FileBase::E_NOENT != nError2 )
6424*cdf0e10cSrcweir 				::osl::Directory::remove( aTmpName3 );
6425*cdf0e10cSrcweir 
6426*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: remove a directory by its system path, and check its existence.",
6427*cdf0e10cSrcweir 			                        ( osl::FileBase::E_INVAL == nError1 ) );
6428*cdf0e10cSrcweir 		}
6429*cdf0e10cSrcweir 
6430*cdf0e10cSrcweir 		void remove_003( )
6431*cdf0e10cSrcweir 		{
6432*cdf0e10cSrcweir 			//try to remove a non-existed directory
6433*cdf0e10cSrcweir 			nError1 = ::osl::Directory::remove( aTmpName6 );
6434*cdf0e10cSrcweir 
6435*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: try to remove a non-existed directory.",
6436*cdf0e10cSrcweir 			                        ( osl::FileBase::E_NOENT == nError1 ) );
6437*cdf0e10cSrcweir 		}
6438*cdf0e10cSrcweir 
6439*cdf0e10cSrcweir 		void remove_004( )
6440*cdf0e10cSrcweir 		{
6441*cdf0e10cSrcweir 			createTestFile( aTmpName6 );
6442*cdf0e10cSrcweir 			sal_Bool bExist = ifFileExist( aTmpName6 );
6443*cdf0e10cSrcweir 			//try to remove file.
6444*cdf0e10cSrcweir 			nError1 = ::osl::Directory::remove( aTmpName6 );
6445*cdf0e10cSrcweir 			deleteTestFile( aTmpName6 );
6446*cdf0e10cSrcweir 
6447*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( "test for remove function: try to remove a file but not directory.",
6448*cdf0e10cSrcweir 			                        bExist == sal_True &&(( osl::FileBase::E_NOTDIR == nError1 ) || ( osl::FileBase::E_NOENT == nError1 )) );
6449*cdf0e10cSrcweir 		}
6450*cdf0e10cSrcweir 
6451*cdf0e10cSrcweir 		void remove_005( )
6452*cdf0e10cSrcweir 		{
6453*cdf0e10cSrcweir 			createTestDirectory( aTmpName3 );
6454*cdf0e10cSrcweir 			createTestFile( aTmpName4 );
6455*cdf0e10cSrcweir 			nError1 = ::osl::Directory::remove( aTmpName3 );
6456*cdf0e10cSrcweir 			deleteTestFile( aTmpName4 );
6457*cdf0e10cSrcweir 			deleteTestDirectory( aTmpName3 );
6458*cdf0e10cSrcweir 			::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for remove function: try to remove a directory that is not empty.") + errorToStr( nError1 );
6459*cdf0e10cSrcweir #if defined ( SOLARIS )
6460*cdf0e10cSrcweir 			//on UNX, the implementation uses rmdir(), which EEXIST is thrown on Solaris when the directory is not empty, refer to: 'man -s 2 rmdir', while on linux, ENOTEMPTY is thrown.
6461*cdf0e10cSrcweir 			//EEXIST The directory contains entries other than those for "." and "..".
6462*cdf0e10cSrcweir             t_print("#Solaris test\n");
6463*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_EXIST == nError1 ) );
6464*cdf0e10cSrcweir #else
6465*cdf0e10cSrcweir 			CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_NOTEMPTY == nError1 ) );
6466*cdf0e10cSrcweir #endif
6467*cdf0e10cSrcweir 		}
6468*cdf0e10cSrcweir 
6469*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE( remove );
6470*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_001 );
6471*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_002 );
6472*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_003 );
6473*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_004 );
6474*cdf0e10cSrcweir 		CPPUNIT_TEST( remove_005 );
6475*cdf0e10cSrcweir 		CPPUNIT_TEST_SUITE_END( );
6476*cdf0e10cSrcweir 	};// class remove
6477*cdf0e10cSrcweir 
6478*cdf0e10cSrcweir     //########################################
6479*cdf0e10cSrcweir     // TEST Directory::createPath
6480*cdf0e10cSrcweir     //########################################
6481*cdf0e10cSrcweir 
6482*cdf0e10cSrcweir 	#ifdef WNT
6483*cdf0e10cSrcweir     #   define PATH_BUFFER_SIZE MAX_PATH
6484*cdf0e10cSrcweir     #else
6485*cdf0e10cSrcweir     #   define PATH_BUFFER_SIZE PATH_MAX
6486*cdf0e10cSrcweir     #endif
6487*cdf0e10cSrcweir 
6488*cdf0e10cSrcweir     char TEST_PATH_POSTFIX[] = "hello/world";
6489*cdf0e10cSrcweir 
6490*cdf0e10cSrcweir     //########################################
6491*cdf0e10cSrcweir     OUString get_test_path()
6492*cdf0e10cSrcweir     {
6493*cdf0e10cSrcweir         OUString tmp;
6494*cdf0e10cSrcweir         FileBase::RC rc = FileBase::getTempDirURL(tmp);
6495*cdf0e10cSrcweir 
6496*cdf0e10cSrcweir         CPPUNIT_ASSERT_MESSAGE
6497*cdf0e10cSrcweir         (
6498*cdf0e10cSrcweir         "Test path creation failed",
6499*cdf0e10cSrcweir         rc == FileBase::E_None
6500*cdf0e10cSrcweir         );
6501*cdf0e10cSrcweir 
6502*cdf0e10cSrcweir         OUStringBuffer b(tmp);
6503*cdf0e10cSrcweir         if (tmp.lastIndexOf('/') != (tmp.getLength() - 1))
6504*cdf0e10cSrcweir             b.appendAscii("/");
6505*cdf0e10cSrcweir 
6506*cdf0e10cSrcweir         b.appendAscii(TEST_PATH_POSTFIX);
6507*cdf0e10cSrcweir 
6508*cdf0e10cSrcweir         return b.makeStringAndClear();
6509*cdf0e10cSrcweir     }
6510*cdf0e10cSrcweir 
6511*cdf0e10cSrcweir     //########################################
6512*cdf0e10cSrcweir     void rm_test_path(const OUString& path)
6513*cdf0e10cSrcweir     {
6514*cdf0e10cSrcweir         sal_Unicode buffer[PATH_BUFFER_SIZE];
6515*cdf0e10cSrcweir         rtl_copyMemory(buffer, path.getStr(), (path.getLength() + 1) * sizeof(sal_Unicode));
6516*cdf0e10cSrcweir 
6517*cdf0e10cSrcweir         sal_Int32 i = rtl_ustr_lastIndexOfChar(buffer, '/');
6518*cdf0e10cSrcweir         if (i == path.getLength())
6519*cdf0e10cSrcweir             buffer[i] = 0;
6520*cdf0e10cSrcweir 
6521*cdf0e10cSrcweir         Directory::remove(buffer);
6522*cdf0e10cSrcweir 
6523*cdf0e10cSrcweir         i = rtl_ustr_lastIndexOfChar(buffer, '/');
6524*cdf0e10cSrcweir         buffer[i] = 0;
6525*cdf0e10cSrcweir         Directory::remove(buffer);
6526*cdf0e10cSrcweir     }
6527*cdf0e10cSrcweir 
6528*cdf0e10cSrcweir     //########################################
6529*cdf0e10cSrcweir     class DirCreatedObserver : public DirectoryCreationObserver
6530*cdf0e10cSrcweir     {
6531*cdf0e10cSrcweir     public:
6532*cdf0e10cSrcweir         DirCreatedObserver() : i(0)
6533*cdf0e10cSrcweir         {
6534*cdf0e10cSrcweir         }
6535*cdf0e10cSrcweir 
6536*cdf0e10cSrcweir         virtual void DirectoryCreated(const rtl::OUString& /*aDirectoryUrl*/)
6537*cdf0e10cSrcweir         {
6538*cdf0e10cSrcweir 			i++;
6539*cdf0e10cSrcweir 		};
6540*cdf0e10cSrcweir 
6541*cdf0e10cSrcweir 	    int number_of_dirs_created() const
6542*cdf0e10cSrcweir 	    {
6543*cdf0e10cSrcweir 	        return i;
6544*cdf0e10cSrcweir 	    }
6545*cdf0e10cSrcweir 
6546*cdf0e10cSrcweir 	private:
6547*cdf0e10cSrcweir 		    int i;
6548*cdf0e10cSrcweir     };
6549*cdf0e10cSrcweir 
6550*cdf0e10cSrcweir 
6551*cdf0e10cSrcweir     //########################################
6552*cdf0e10cSrcweir     class createPath : public CppUnit::TestFixture
6553*cdf0e10cSrcweir     {
6554*cdf0e10cSrcweir     public:
6555*cdf0e10cSrcweir         //##########################################
6556*cdf0e10cSrcweir         createPath()
6557*cdf0e10cSrcweir         {}
6558*cdf0e10cSrcweir 
6559*cdf0e10cSrcweir         //##########################################
6560*cdf0e10cSrcweir         void with_relative_path()
6561*cdf0e10cSrcweir         {
6562*cdf0e10cSrcweir             FileBase::RC rc = Directory::createPath(
6563*cdf0e10cSrcweir                 OUString::createFromAscii(TEST_PATH_POSTFIX));
6564*cdf0e10cSrcweir 
6565*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE
6566*cdf0e10cSrcweir             (
6567*cdf0e10cSrcweir                 "osl_createDirectoryPath contract broken",
6568*cdf0e10cSrcweir                 rc == FileBase::E_INVAL
6569*cdf0e10cSrcweir             );
6570*cdf0e10cSrcweir         }
6571*cdf0e10cSrcweir 
6572*cdf0e10cSrcweir         //##########################################
6573*cdf0e10cSrcweir         void without_callback()
6574*cdf0e10cSrcweir         {
6575*cdf0e10cSrcweir             OUString tp_url = get_test_path();
6576*cdf0e10cSrcweir 
6577*cdf0e10cSrcweir             rm_test_path(tp_url);
6578*cdf0e10cSrcweir 
6579*cdf0e10cSrcweir             FileBase::RC rc = Directory::createPath(tp_url);
6580*cdf0e10cSrcweir 
6581*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE
6582*cdf0e10cSrcweir             (
6583*cdf0e10cSrcweir                 "osl_createDirectoryPath failed",
6584*cdf0e10cSrcweir                 rc == FileBase::E_None
6585*cdf0e10cSrcweir             );
6586*cdf0e10cSrcweir         }
6587*cdf0e10cSrcweir 
6588*cdf0e10cSrcweir         //##########################################
6589*cdf0e10cSrcweir         void with_callback()
6590*cdf0e10cSrcweir         {
6591*cdf0e10cSrcweir             OUString tp_url = get_test_path();
6592*cdf0e10cSrcweir 
6593*cdf0e10cSrcweir             rm_test_path(tp_url);
6594*cdf0e10cSrcweir 
6595*cdf0e10cSrcweir             DirCreatedObserver* observer = new DirCreatedObserver;
6596*cdf0e10cSrcweir             FileBase::RC rc = Directory::createPath(tp_url, observer);
6597*cdf0e10cSrcweir             int nDirs = observer->number_of_dirs_created();
6598*cdf0e10cSrcweir             delete observer;
6599*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE
6600*cdf0e10cSrcweir             (
6601*cdf0e10cSrcweir                 "osl_createDirectoryPath failed",
6602*cdf0e10cSrcweir                 (rc == FileBase::E_None) && (nDirs > 0)
6603*cdf0e10cSrcweir             );
6604*cdf0e10cSrcweir 
6605*cdf0e10cSrcweir         }
6606*cdf0e10cSrcweir 
6607*cdf0e10cSrcweir #ifdef WNT
6608*cdf0e10cSrcweir 
6609*cdf0e10cSrcweir         //##########################################
6610*cdf0e10cSrcweir         char* get_unused_drive_letter()
6611*cdf0e10cSrcweir         {
6612*cdf0e10cSrcweir             static char m_aBuff[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
6613*cdf0e10cSrcweir 
6614*cdf0e10cSrcweir             DWORD ld = GetLogicalDrives();
6615*cdf0e10cSrcweir             DWORD i = 4;
6616*cdf0e10cSrcweir             DWORD j = 2;
6617*cdf0e10cSrcweir 
6618*cdf0e10cSrcweir             while ((ld & i) && (i > 1))
6619*cdf0e10cSrcweir             { i = i << 1; j++; }
6620*cdf0e10cSrcweir 
6621*cdf0e10cSrcweir             if (i > 2)
6622*cdf0e10cSrcweir                 return m_aBuff + j;
6623*cdf0e10cSrcweir 
6624*cdf0e10cSrcweir             return NULL;
6625*cdf0e10cSrcweir         }
6626*cdf0e10cSrcweir 
6627*cdf0e10cSrcweir         //##########################################
6628*cdf0e10cSrcweir         void at_invalid_logical_drive()
6629*cdf0e10cSrcweir         {
6630*cdf0e10cSrcweir             char* drv = get_unused_drive_letter();
6631*cdf0e10cSrcweir             char buff[PATH_BUFFER_SIZE];
6632*cdf0e10cSrcweir             rtl_zeroMemory(buff, sizeof(buff));
6633*cdf0e10cSrcweir 
6634*cdf0e10cSrcweir             strncpy(buff, drv, 1);
6635*cdf0e10cSrcweir             strcat(buff, ":\\");
6636*cdf0e10cSrcweir             strcat(buff, TEST_PATH_POSTFIX);
6637*cdf0e10cSrcweir 
6638*cdf0e10cSrcweir             OUString path = OUString::createFromAscii(buff);
6639*cdf0e10cSrcweir             OUString tp_url;
6640*cdf0e10cSrcweir             FileBase::getFileURLFromSystemPath(path, tp_url);
6641*cdf0e10cSrcweir 
6642*cdf0e10cSrcweir             FileBase::RC rc = Directory::createPath(tp_url);
6643*cdf0e10cSrcweir 
6644*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE
6645*cdf0e10cSrcweir             (
6646*cdf0e10cSrcweir                 "osl_createDirectoryPath doesn't fail on unused logical drive letters",
6647*cdf0e10cSrcweir                 rc != FileBase::E_None
6648*cdf0e10cSrcweir             );
6649*cdf0e10cSrcweir         }
6650*cdf0e10cSrcweir 
6651*cdf0e10cSrcweir         //##########################################
6652*cdf0e10cSrcweir         void with_UNC_path()
6653*cdf0e10cSrcweir         {
6654*cdf0e10cSrcweir 
6655*cdf0e10cSrcweir             OUString tp_unc = OUString::createFromAscii("\\\\Tra-1\\TRA_D\\hello\\world\\");
6656*cdf0e10cSrcweir             OUString tp_url;
6657*cdf0e10cSrcweir             FileBase::getFileURLFromSystemPath(tp_unc, tp_url);
6658*cdf0e10cSrcweir 
6659*cdf0e10cSrcweir             FileBase::RC rc = Directory::createPath(tp_url);
6660*cdf0e10cSrcweir 
6661*cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE
6662*cdf0e10cSrcweir             (
6663*cdf0e10cSrcweir                 "osl_createDirectoryPath fails with UNC path",
6664*cdf0e10cSrcweir                 rc == FileBase::E_None
6665*cdf0e10cSrcweir             );
6666*cdf0e10cSrcweir         }
6667*cdf0e10cSrcweir 
6668*cdf0e10cSrcweir #endif /* WNT */
6669*cdf0e10cSrcweir 
6670*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(createPath);
6671*cdf0e10cSrcweir     CPPUNIT_TEST(with_relative_path);
6672*cdf0e10cSrcweir     CPPUNIT_TEST(without_callback);
6673*cdf0e10cSrcweir     CPPUNIT_TEST(with_callback);
6674*cdf0e10cSrcweir #ifdef WNT
6675*cdf0e10cSrcweir     CPPUNIT_TEST(at_invalid_logical_drive);
6676*cdf0e10cSrcweir 
6677*cdf0e10cSrcweir     // adapt the UNC path in method createDirectoryPath_with_UNC_path
6678*cdf0e10cSrcweir     // in order to run this test successfully
6679*cdf0e10cSrcweir     //CPPUNIT_TEST(with_UNC_path);
6680*cdf0e10cSrcweir #endif
6681*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
6682*cdf0e10cSrcweir 
6683*cdf0e10cSrcweir     }; // class createPath
6684*cdf0e10cSrcweir 
6685*cdf0e10cSrcweir 	// -----------------------------------------------------------------------------
6686*cdf0e10cSrcweir  	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::ctors, "osl_Directory" );
6687*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::open, "osl_Directory" );
6688*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::isOpen, "osl_Directory" );
6689*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::close, "osl_Directory" );
6690*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::reset, "osl_Directory" );
6691*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::getNextItem, "osl_Directory" );
6692*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::getVolumeInfo, "osl_Directory" );
6693*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::create, "osl_Directory" );
6694*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::remove, "osl_Directory" );
6695*cdf0e10cSrcweir 	CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::createPath, "osl_Directory" );
6696*cdf0e10cSrcweir }// namespace osl_Directory
6697*cdf0e10cSrcweir 
6698*cdf0e10cSrcweir 
6699*cdf0e10cSrcweir // -----------------------------------------------------------------------------
6700*cdf0e10cSrcweir // this macro creates an empty function, which will called by the RegisterAllFunctions()
6701*cdf0e10cSrcweir // to let the user the possibility to also register some functions by hand.
6702*cdf0e10cSrcweir // -----------------------------------------------------------------------------
6703*cdf0e10cSrcweir 
6704*cdf0e10cSrcweir /// NOADDITIONAL;
6705*cdf0e10cSrcweir 
6706*cdf0e10cSrcweir 
6707*cdf0e10cSrcweir 
6708*cdf0e10cSrcweir /** get Current PID.
6709*cdf0e10cSrcweir */
6710*cdf0e10cSrcweir inline ::rtl::OUString getCurrentPID(  )
6711*cdf0e10cSrcweir {
6712*cdf0e10cSrcweir 	//~ Get current PID and turn it into OUString;
6713*cdf0e10cSrcweir 	int nPID = 0;
6714*cdf0e10cSrcweir #ifdef WNT
6715*cdf0e10cSrcweir 	nPID = GetCurrentProcessId();
6716*cdf0e10cSrcweir #else
6717*cdf0e10cSrcweir 	nPID = getpid();
6718*cdf0e10cSrcweir #endif
6719*cdf0e10cSrcweir 	return ( ::rtl::OUString::valueOf( ( long )nPID ) );
6720*cdf0e10cSrcweir }
6721*cdf0e10cSrcweir 
6722*cdf0e10cSrcweir 
6723*cdf0e10cSrcweir /** Insert Current PID to the URL to avoid access violation between multiuser execution.
6724*cdf0e10cSrcweir */
6725*cdf0e10cSrcweir inline void insertPID( ::rtl::OUString & pathname )
6726*cdf0e10cSrcweir {
6727*cdf0e10cSrcweir 	//~ check if the path contain the temp directory, do nothing changes if not;
6728*cdf0e10cSrcweir 	if ( pathname.indexOf( aTempDirectoryURL ) && pathname.indexOf( aTempDirectorySys ) )
6729*cdf0e10cSrcweir 		return;
6730*cdf0e10cSrcweir 
6731*cdf0e10cSrcweir 	//~ format pathname to TEMP/USERPID/URL style;
6732*cdf0e10cSrcweir 	if ( !pathname.indexOf( aTempDirectoryURL ) )
6733*cdf0e10cSrcweir 	{
6734*cdf0e10cSrcweir 		::rtl::OUString strPID( getCurrentPID( ) );
6735*cdf0e10cSrcweir 		::rtl::OUString pathLeft = aTempDirectoryURL.copy( 0 );
6736*cdf0e10cSrcweir 		::rtl::OUString pathRight = pathname.copy( aTempDirectoryURL.getLength( ) );
6737*cdf0e10cSrcweir 		pathname = pathLeft.copy( 0 );
6738*cdf0e10cSrcweir 		( ( pathname += aSlashURL ) += strPID ) += pathRight;
6739*cdf0e10cSrcweir 	}
6740*cdf0e10cSrcweir 	else
6741*cdf0e10cSrcweir 	{
6742*cdf0e10cSrcweir 		::rtl::OUString strPID( getCurrentPID( ) );
6743*cdf0e10cSrcweir 		::rtl::OUString pathLeft = aTempDirectorySys.copy( 0 );
6744*cdf0e10cSrcweir 		::rtl::OUString pathRight = pathname.copy( aTempDirectorySys.getLength( ) );
6745*cdf0e10cSrcweir 		pathname = pathLeft.copy( 0 );
6746*cdf0e10cSrcweir 		( ( pathname += aSlashURL ) += strPID ) += pathRight;
6747*cdf0e10cSrcweir 	}
6748*cdf0e10cSrcweir 
6749*cdf0e10cSrcweir 
6750*cdf0e10cSrcweir }
6751*cdf0e10cSrcweir 
6752*cdf0e10cSrcweir /** to do some initialized work, we replace the NOADDITIONAL macro with the initialize work which
6753*cdf0e10cSrcweir       will check the file and directory existence. and set some variables for test use.
6754*cdf0e10cSrcweir       to simplify the initialize work, we seperate it into UNIX section and Windows section, the main task
6755*cdf0e10cSrcweir       of initialization is adapt all URL defined in osl_File_Const.h to TEMP/USERPID/URL style format,
6756*cdf0e10cSrcweir       since there may be an instance that multiuser execute test at the same time, and the temp file
6757*cdf0e10cSrcweir       may not be clean up in this case due to access right problem.
6758*cdf0e10cSrcweir */
6759*cdf0e10cSrcweir void RegisterAdditionalFunctions( FktRegFuncPtr _pFunc )
6760*cdf0e10cSrcweir {
6761*cdf0e10cSrcweir     (void)_pFunc;
6762*cdf0e10cSrcweir 	t_print( "Initializing..." );
6763*cdf0e10cSrcweir 
6764*cdf0e10cSrcweir 	//~ make sure the c:\temp exist, if not, create it.
6765*cdf0e10cSrcweir #if ( defined WNT )
6766*cdf0e10cSrcweir 	if ( checkDirectory( aTempDirectoryURL, osl_Check_Mode_Exist )  != sal_True ) {
6767*cdf0e10cSrcweir 		t_print( "\n#C:\\temp is not exist, now creating\n" );
6768*cdf0e10cSrcweir 		createTestDirectory( aTempDirectoryURL );
6769*cdf0e10cSrcweir 	};
6770*cdf0e10cSrcweir #endif
6771*cdf0e10cSrcweir 
6772*cdf0e10cSrcweir 	//~ make sure the c:\temp\PID or /tmp/PID exist, if not, create it. initialize the user directory.
6773*cdf0e10cSrcweir 	( aUserDirectoryURL += aSlashURL ) += getCurrentPID( );
6774*cdf0e10cSrcweir 	( aUserDirectorySys += aSlashURL ) += getCurrentPID( );
6775*cdf0e10cSrcweir 
6776*cdf0e10cSrcweir 	if ( checkDirectory( aUserDirectoryURL, osl_Check_Mode_Exist )  != sal_True ) {
6777*cdf0e10cSrcweir 		createTestDirectory( aUserDirectoryURL );
6778*cdf0e10cSrcweir 	}
6779*cdf0e10cSrcweir 
6780*cdf0e10cSrcweir 	//~ adapt all URL to the TEMP/USERPID/URL format;
6781*cdf0e10cSrcweir 	insertPID( aCanURL1 );
6782*cdf0e10cSrcweir 	insertPID( aTmpName3 );
6783*cdf0e10cSrcweir 	insertPID( aTmpName4 );
6784*cdf0e10cSrcweir 	insertPID( aTmpName5 );
6785*cdf0e10cSrcweir 	insertPID( aTmpName6 );
6786*cdf0e10cSrcweir 	insertPID( aTmpName8 );
6787*cdf0e10cSrcweir 	insertPID( aTmpName9 );
6788*cdf0e10cSrcweir 	insertPID( aLnkURL1 );
6789*cdf0e10cSrcweir 	insertPID( aFifoSys );
6790*cdf0e10cSrcweir 	insertPID( aSysPath1 );
6791*cdf0e10cSrcweir 	insertPID( aSysPath2 );
6792*cdf0e10cSrcweir 	insertPID( aSysPath3 );
6793*cdf0e10cSrcweir 	insertPID( aSysPath4 );
6794*cdf0e10cSrcweir 
6795*cdf0e10cSrcweir 	t_print( "Done.\n" );
6796*cdf0e10cSrcweir 
6797*cdf0e10cSrcweir }
6798*cdf0e10cSrcweir 
6799*cdf0e10cSrcweir 
6800*cdf0e10cSrcweir //~ do some clean up work after all test completed.
6801*cdf0e10cSrcweir class GlobalObject
6802*cdf0e10cSrcweir {
6803*cdf0e10cSrcweir 	public:
6804*cdf0e10cSrcweir 	~GlobalObject()
6805*cdf0e10cSrcweir 	{
6806*cdf0e10cSrcweir         try
6807*cdf0e10cSrcweir         {
6808*cdf0e10cSrcweir             //~ make sure the c:\temp\PID or /tmp/PID exist, if yes, delete it.
6809*cdf0e10cSrcweir             t_print( "\n#Do some clean-ups ...\n" );
6810*cdf0e10cSrcweir             if ( checkDirectory( aUserDirectoryURL, osl_Check_Mode_Exist )  == sal_True ) {
6811*cdf0e10cSrcweir                 deleteTestDirectory( aUserDirectoryURL );
6812*cdf0e10cSrcweir             }
6813*cdf0e10cSrcweir 
6814*cdf0e10cSrcweir             // LLA: t_print("after deleteTestDirectory\n");
6815*cdf0e10cSrcweir             //~ special clean up task in Windows and Unix seperately;
6816*cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 )
6817*cdf0e10cSrcweir             //~ some clean up task  for UNIX OS
6818*cdf0e10cSrcweir             ;
6819*cdf0e10cSrcweir #else
6820*cdf0e10cSrcweir             //~ some clean up task  for Windows OS
6821*cdf0e10cSrcweir             //~ check if some files are in the way, remove them if necessary.
6822*cdf0e10cSrcweir             if ( ifFileExist( aTmpName6 )  == sal_True )
6823*cdf0e10cSrcweir                 deleteTestFile( aTmpName6 );
6824*cdf0e10cSrcweir             if ( ifFileExist( aTmpName4 )  == sal_True )
6825*cdf0e10cSrcweir                 deleteTestFile( aTmpName4 );
6826*cdf0e10cSrcweir             if ( checkDirectory( aTmpName4, osl_Check_Mode_Exist )  == sal_True )
6827*cdf0e10cSrcweir                 deleteTestDirectory( aTmpName4 );
6828*cdf0e10cSrcweir             if ( ifFileExist( aTmpName3 )  == sal_True )
6829*cdf0e10cSrcweir                 deleteTestFile( aTmpName3 );
6830*cdf0e10cSrcweir             if ( checkDirectory( aTmpName3, osl_Check_Mode_Exist )  == sal_True )
6831*cdf0e10cSrcweir                 deleteTestDirectory( aTmpName3 );
6832*cdf0e10cSrcweir 
6833*cdf0e10cSrcweir             ::rtl::OUString aUStr( aUserDirectoryURL );
6834*cdf0e10cSrcweir             concatURL( aUStr, aHidURL1 );
6835*cdf0e10cSrcweir             if ( ifFileExist( aUStr )  == sal_True )
6836*cdf0e10cSrcweir                 deleteTestFile( aUStr );
6837*cdf0e10cSrcweir 
6838*cdf0e10cSrcweir             ::rtl::OUString aUStr1( aRootURL );
6839*cdf0e10cSrcweir             concatURL( aUStr1, aTmpName2 );
6840*cdf0e10cSrcweir             if ( ifFileExist( aUStr1 )  == sal_True )
6841*cdf0e10cSrcweir                 deleteTestFile( aUStr1 );
6842*cdf0e10cSrcweir #endif
6843*cdf0e10cSrcweir 
6844*cdf0e10cSrcweir         }
6845*cdf0e10cSrcweir         catch (CppUnit::Exception &e)
6846*cdf0e10cSrcweir         {
6847*cdf0e10cSrcweir             t_print("Exception caught in GlobalObject dtor(). Exception message: '%s'. Source line: %d\n", e.what(), e.sourceLine().lineNumber());
6848*cdf0e10cSrcweir         }
6849*cdf0e10cSrcweir         catch (...)
6850*cdf0e10cSrcweir         {
6851*cdf0e10cSrcweir             t_print("Exception caught (...) in GlobalObject dtor()\n");
6852*cdf0e10cSrcweir         }
6853*cdf0e10cSrcweir     }
6854*cdf0e10cSrcweir };
6855*cdf0e10cSrcweir 
6856*cdf0e10cSrcweir GlobalObject theGlobalObject;
6857