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