2003-04-17 07:34:31 +00:00
/*************************************************************************
*
2005-09-08 14:25:26 +00:00
* OpenOffice . org - a multi - platform office productivity suite
2003-04-17 07:34:31 +00:00
*
2005-09-08 14:25:26 +00:00
* $ RCSfile : osl_File . cxx , v $
2003-04-17 07:34:31 +00:00
*
2006-09-17 07:49:26 +00:00
* $ Revision : 1.12 $
2003-04-17 07:34:31 +00:00
*
2006-09-17 07:49:26 +00:00
* last change : $ Author : obo $ $ Date : 2006 - 09 - 17 08 : 49 : 26 $
2003-04-17 07:34:31 +00:00
*
2005-09-08 14:25:26 +00:00
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1 .
2003-04-17 07:34:31 +00:00
*
*
2005-09-08 14:25:26 +00:00
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2005 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
2003-04-17 07:34:31 +00:00
*
2005-09-08 14:25:26 +00:00
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 , as published by the Free Software Foundation .
2003-04-17 07:34:31 +00:00
*
2005-09-08 14:25:26 +00:00
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
2003-04-17 07:34:31 +00:00
*
2005-09-08 14:25:26 +00:00
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston ,
* MA 02111 - 1307 USA
2003-04-17 07:34:31 +00:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-17 07:49:26 +00:00
// MARKER(update_precomp.py): autogen include statement, do not remove
# include "precompiled_sal.hxx"
2003-04-17 07:34:31 +00:00
//------------------------------------------------------------------------
// include files
//------------------------------------------------------------------------
# ifndef _SAL_TYPES_H_
# include <sal/types.h>
# endif
# ifndef _RTL_USTRING_HXX_
# include <rtl/ustring.hxx>
# endif
2003-12-11 11:30:40 +00:00
# include <rtl/ustrbuf.hxx>
2003-04-17 07:34:31 +00:00
2004-02-03 12:36:49 +00:00
# include "osl/thread.h"
# include "rtl/ustrbuf.hxx"
2003-04-17 07:34:31 +00:00
# ifndef _OSL_FILE_HXX_
# include <osl/file.hxx>
# endif
# ifndef _OSL_FILE_CONST_H_
# include <osl_File_Const.h>
# endif
# include <cppunit/simpleheader.hxx>
2004-02-03 12:36:49 +00:00
# ifdef WNT
# define UNICODE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# include <tchar.h>
# endif
2003-04-17 07:34:31 +00:00
using namespace osl ;
using namespace rtl ;
//------------------------------------------------------------------------
// helper functions
//------------------------------------------------------------------------
2003-11-18 15:38:22 +00:00
/** detailed wrong message.
2003-04-17 07:34:31 +00:00
*/
2003-12-11 11:30:40 +00:00
inline : : rtl : : OString errorToString ( const : : osl : : FileBase : : RC _nError )
2003-04-17 07:34:31 +00:00
{
2003-12-11 11:30:40 +00:00
: : rtl : : OString sResult ;
switch ( _nError ) {
2003-04-17 07:34:31 +00:00
case : : osl : : FileBase : : E_None :
2003-12-11 11:30:40 +00:00
sResult = " Success " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_PERM :
2003-12-11 11:30:40 +00:00
sResult = " Operation not permitted " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_NOENT :
2003-12-11 11:30:40 +00:00
sResult = " No such file or directory " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_EXIST :
2003-12-11 11:30:40 +00:00
sResult = " Already Exist " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_ACCES :
2003-12-11 11:30:40 +00:00
sResult = " Permission denied " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_INVAL :
2003-12-11 11:30:40 +00:00
sResult = " The format of the parameters was not valid " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_NOTDIR :
2003-12-11 11:30:40 +00:00
sResult = " Not a directory " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_ISDIR :
2003-12-11 11:30:40 +00:00
sResult = " Is a directory " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_BADF :
2003-12-11 11:30:40 +00:00
sResult = " Bad file " ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileBase : : E_NOTEMPTY :
2003-12-11 11:30:40 +00:00
sResult = " The directory is not empty " ;
2003-04-17 07:34:31 +00:00
break ;
default :
2003-12-11 11:30:40 +00:00
sResult = " Unknown Error " ;
2003-04-17 07:34:31 +00:00
break ;
}
2003-12-11 11:30:40 +00:00
return sResult ;
}
rtl : : OUString errorToStr ( : : osl : : FileBase : : RC const & nError )
{
rtl : : OUStringBuffer suBuf ;
suBuf . append ( rtl : : OUString : : createFromAscii ( " The returned error is: " ) ) ;
suBuf . append ( rtl : : OStringToOUString ( errorToString ( nError ) , RTL_TEXTENCODING_ASCII_US ) ) ;
suBuf . append ( rtl : : OUString : : createFromAscii ( " ! \n " ) ) ;
return suBuf . makeStringAndClear ( ) ;
2003-04-17 07:34:31 +00:00
}
/** print a file type name.
*/
inline void printFileType ( const : : osl : : FileStatus : : Type nType )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printFileType# " ) ;
2003-04-17 07:34:31 +00:00
switch ( nType ) {
case : : osl : : FileStatus : : Directory :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: Directory. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Volume :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: volume device. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Regular :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: regular file. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Fifo :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: fifo. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Socket :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: socket. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Link :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: link file. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Special :
2004-03-19 13:48:16 +00:00
t_print ( " This file is a: special. \n " ) ;
2003-04-17 07:34:31 +00:00
break ;
case : : osl : : FileStatus : : Unknown :
2004-03-19 13:48:16 +00:00
t_print ( " The file type is unknown %d \n " , nType ) ;
2003-04-17 07:34:31 +00:00
break ;
}
}
/** print a file attributes.
*/
inline void printFileAttributes ( const sal_Int64 nAttributes )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printFileAttributes# This file is a: ( " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_ReadOnly ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " ReadOnly " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_Hidden ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " Hidden " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_Executable ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " Executable " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_GrpWrite ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " GrpWrite " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_GrpRead ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " GrpRead " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_GrpExe ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " GrpExe " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OwnWrite ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OwnWrite " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OwnRead ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OwnRead " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OwnExe ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OwnExe " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OthWrite ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OthWrite " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OthRead ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OthRead " ) ;
2003-04-17 07:34:31 +00:00
if ( ( nAttributes | Attribute_OthExe ) = = nAttributes )
2004-03-19 13:48:16 +00:00
t_print ( " OthExe " ) ;
t_print ( " ) file! \n " ) ;
2003-04-17 07:34:31 +00:00
}
/** print a UNI_CODE file name.
*/
inline void printFileName ( const : : rtl : : OUString & str )
{
rtl : : OString aString ;
2004-03-19 13:48:16 +00:00
t_print ( " #printFileName_u# " ) ;
2003-04-17 07:34:31 +00:00
aString = : : rtl : : OUStringToOString ( str , RTL_TEXTENCODING_ASCII_US ) ;
2004-03-19 13:48:16 +00:00
t_print ( " %s \n " , aString . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
}
/** print a ASCII_CODE file name.
*/
inline void printFileName ( const sal_Char * str )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printFileName_a# " ) ;
t_print ( " %s \n " , str ) ;
2003-04-17 07:34:31 +00:00
}
2003-11-18 15:38:22 +00:00
/** print an output wrong message.
*/
inline void printError ( const : : osl : : FileBase : : RC nError )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printError# " ) ;
2003-11-18 15:38:22 +00:00
printFileName ( errorToStr ( nError ) ) ;
}
2003-04-17 07:34:31 +00:00
/** print an signed Integer Number.
*/
inline void printInt ( sal_Int64 i )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printInt_i64# " ) ;
t_print ( " The Integer64 is %lld \n " , i ) ;
2003-04-17 07:34:31 +00:00
}
/** print an unsigned Integer Number.
*/
inline void printInt ( sal_uInt64 i )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printInt_u64# " ) ;
t_print ( " The unsigned Integer64 is %llu \n " , i ) ;
2003-04-17 07:34:31 +00:00
}
/** print Boolean value.
*/
inline void printBool ( sal_Bool bOk )
{
2004-03-19 13:48:16 +00:00
t_print ( " #printBool# " ) ;
( sal_True = = bOk ) ? t_print ( " YES! \n " ) : t_print ( " NO! \n " ) ;
2003-04-17 07:34:31 +00:00
}
/** print struct TimeValue in local time format.
*/
inline void printTime ( TimeValue * tv )
{
oslDateTime * pDateTime = ( oslDateTime * ) malloc ( sizeof ( oslDateTime ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " Error in printTime() function,malloc " , pDateTime ! = NULL ) ;
TimeValue * pLocalTV = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " Error in printTime() function,malloc " , pLocalTV ! = NULL ) ;
CPPUNIT_ASSERT_MESSAGE ( " Error in printTime() function,osl_getLocalTimeFromSystemTime " , sal_True = = osl_getLocalTimeFromSystemTime ( tv , pLocalTV ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " Error in printTime() function,osl_gepDateTimeFromTimeValue " , sal_True = = osl_getDateTimeFromTimeValue ( pLocalTV , pDateTime ) ) ;
2004-03-19 13:48:16 +00:00
t_print ( " #printTime# " ) ;
t_print ( " Time is: %d/%d/%d " , pDateTime - > Month , pDateTime - > Day , pDateTime - > Year ) ;
2003-04-17 07:34:31 +00:00
switch ( pDateTime - > DayOfWeek )
{
2004-03-19 13:48:16 +00:00
case 0 : t_print ( " Sun. " ) ; break ;
case 1 : t_print ( " Mon. " ) ; break ;
case 2 : t_print ( " Tue. " ) ; break ;
case 3 : t_print ( " Thr. " ) ; break ;
case 4 : t_print ( " Wen. " ) ; break ;
case 5 : t_print ( " Fri. " ) ; break ;
case 6 : t_print ( " Sat. " ) ; break ;
2003-04-17 07:34:31 +00:00
}
2004-03-19 13:48:16 +00:00
t_print ( " %d:%d:%d %d nsecs \n " , pDateTime - > Hours , pDateTime - > Minutes , pDateTime - > Seconds , pDateTime - > NanoSeconds ) ;
2003-04-17 07:34:31 +00:00
free ( pDateTime ) ;
free ( pLocalTV ) ;
}
/** compare two TimeValue, unit is "ms", since Windows time precision is better than UNX.
*/
# if ( defined UNX ) || ( defined OS2 ) //precision of time in Windows is better than UNX
# define delta 2000 //time precision, 2000ms
# else
2003-05-27 13:19:09 +00:00
# define delta 1800 //time precision, 1.8s
2003-04-17 07:34:31 +00:00
# endif
2004-05-03 07:57:00 +00:00
inline sal_Int64 t_abs64 ( sal_Int64 _nValue )
2003-04-17 07:34:31 +00:00
{
2004-05-03 07:57:00 +00:00
// std::abs() seems to have some ambiguity problems (so-texas)
// return abs(_nValue);
t_print ( " t_abs64(%ld) \n " , _nValue ) ;
// CPPUNIT_ASSERT(_nValue < 2147483647);
2003-05-27 13:19:09 +00:00
2004-05-03 07:57:00 +00:00
if ( _nValue < 0 )
{
_nValue = - _nValue ;
}
return _nValue ;
}
2003-04-17 07:34:31 +00:00
2004-05-03 07:57:00 +00:00
inline sal_Bool t_compareTime ( TimeValue * m_aEndTime , TimeValue * m_aStartTime , sal_Int32 nDelta )
{
// sal_uInt64 uTimeValue;
// sal_Int64 iTimeValue;
//
// iTimeValue = t_abs64(( tv1->Seconds - tv2->Seconds) * 1000000000 + tv1->Nanosec - tv2->Nanosec);
// uTimeValue = ( iTimeValue / 1000000 );
sal_Int32 nDeltaSeconds = m_aEndTime - > Seconds - m_aStartTime - > Seconds ;
sal_Int32 nDeltaNanoSec = sal_Int32 ( m_aEndTime - > Nanosec ) - sal_Int32 ( m_aStartTime - > Nanosec ) ;
if ( nDeltaNanoSec < 0 )
{
nDeltaNanoSec = 1000000000 + nDeltaNanoSec ;
nDeltaSeconds - - ;
}
sal_Int32 nDeltaMilliSec = ( nDeltaSeconds * 1000 ) + ( nDeltaNanoSec / 1000000 ) ;
return ( nDeltaMilliSec < nDelta ) ;
2003-04-17 07:34:31 +00:00
}
/** compare two OUString file name.
*/
inline sal_Bool compareFileName ( const : : rtl : : OUString & ustr1 , const : : rtl : : OUString & ustr2 )
{
2003-11-18 15:38:22 +00:00
sal_Bool bOk ;
//on Windows, the seperatar is '\', so here change to '/', then compare
# if defined (WNT )
: : rtl : : OUString ustr1new , ustr2new ;
sal_Unicode reverseSlash = ( sal_Unicode ) ' \\ ' ;
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
if ( ustr1 . lastIndexOf ( reverseSlash ) ! = - 1 )
ustr1new = ustr1 . replace ( reverseSlash , ( sal_Unicode ) ' / ' ) ;
else
ustr1new = ustr1 ;
if ( ustr2 . lastIndexOf ( reverseSlash ) ! = - 1 )
ustr2new = ustr2 . replace ( reverseSlash , ( sal_Unicode ) ' / ' ) ;
else
ustr2new = ustr2 ;
bOk = ustr1new . equalsIgnoreAsciiCase ( ustr2new ) ;
# else
bOk = ustr1 . equalsIgnoreAsciiCase ( ustr2 ) ;
# endif
2003-04-17 07:34:31 +00:00
return bOk ;
}
/** compare a OUString and an ASCII file name.
*/
inline sal_Bool compareFileName ( const : : rtl : : OUString & ustr , const sal_Char * astr )
{
: : rtl : : OUString ustr1 = rtl : : OUString : : createFromAscii ( astr ) ;
2003-05-27 13:19:09 +00:00
sal_Bool bOk = ustr1 . equalsIgnoreAsciiCase ( ustr1 ) ;
2003-04-17 07:34:31 +00:00
return bOk ;
}
/** simple version to judge if a file name or directory name is a URL or a system path, just to see if it
is start with " file:/// " ; .
*/
inline sal_Bool isURL ( const sal_Char * pathname )
{
return ( 0 = = strncmp ( pathname , FILE_PREFIX , sizeof ( FILE_PREFIX ) - 1 ) ) ;
}
/** simple version to judge if a file name or directory name is a URL or a system path, just to see if it
is start with " file:/// " ; .
*/
inline sal_Bool isURL ( const : : rtl : : OUString pathname )
{
return ( ( pathname . indexOf ( aPreURL ) = = 0 ) ? sal_True : sal_False ) ;
}
/** concat two part to form a URL or system path, add PATH_SEPERATOR between them if necessary, add "file:///" to begining if necessary.
*/
inline void concatURL ( : : rtl : : OUString & pathname1 , const : : rtl : : OUString & pathname2 )
{
//check if pathname1 is full qualified URL;
if ( ! isURL ( pathname1 ) )
{
: : rtl : : OUString aPathName = pathname1 . copy ( 0 ) ;
: : osl : : FileBase : : getFileURLFromSystemPath ( pathname1 , aPathName ) ; //convert if not full qualified URL
pathname1 = aPathName . copy ( 0 ) ;
}
sal_Int32 index = 0 ;
//check if '/' is in the end of pathname1 or at the begin of pathname2;
if ( ( ( index = pathname1 . lastIndexOf ( aSlashURL ) ) ! = ( pathname1 . getLength ( ) - 1 ) ) & &
( ( index = pathname2 . indexOf ( aSlashURL ) ) ! = 0 ) )
pathname1 + = aSlashURL ;
pathname1 + = pathname2 ;
}
/** create a temp test file using OUString name of full qualified URL or system path.
*/
inline void createTestFile ( const : : rtl : : OUString filename )
{
: : rtl : : OUString aPathURL = filename . copy ( 0 ) ;
: : osl : : FileBase : : RC nError ;
if ( ! isURL ( filename ) )
: : osl : : FileBase : : getFileURLFromSystemPath ( filename , aPathURL ) ; //convert if not full qualified URL
2004-05-03 07:57:00 +00:00
//::std::auto_ptr<File> pFile( new File( aPathURL ) );
File aFile ( aPathURL ) ;
//nError = pFile->open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create );
nError = aFile . open ( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create ) ;
2004-03-19 13:48:16 +00:00
//CPPUNIT_ASSERT_MESSAGE( "In createTestFile Function: creation ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
if ( ( : : osl : : FileBase : : E_None ! = nError ) & & ( nError ! = : : osl : : FileBase : : E_EXIST ) )
2004-05-03 07:57:00 +00:00
{
t_print ( " createTestFile failed! \n " ) ;
}
aFile . close ( ) ;
2003-04-17 07:34:31 +00:00
}
/** create a temp test file using OUString name of full qualified URL or system path in a base directory.
*/
inline void createTestFile ( const : : rtl : : OUString basename , const : : rtl : : OUString filename )
{
2003-11-18 15:38:22 +00:00
: : rtl : : OUString aBaseURL = basename . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aBaseURL , filename ) ;
createTestFile ( aBaseURL ) ;
}
/** detete a temp test file using OUString name.
*/
inline void deleteTestFile ( const : : rtl : : OUString filename )
{
2004-03-19 13:48:16 +00:00
// LLA: t_print("deleteTestFile\n");
2003-04-17 07:34:31 +00:00
: : rtl : : OUString aPathURL = filename . copy ( 0 ) ;
: : osl : : FileBase : : RC nError ;
if ( ! isURL ( filename ) )
: : osl : : FileBase : : getFileURLFromSystemPath ( filename , aPathURL ) ; //convert if not full qualified URL
2003-05-27 13:19:09 +00:00
nError = : : osl : : File : : setAttributes ( aPathURL , Attribute_GrpWrite | Attribute_OwnWrite | Attribute_OthWrite ) ; // if readonly, make writtenable.
CPPUNIT_ASSERT_MESSAGE ( " In deleteTestFile Function: set writtenable " , ( : : osl : : FileBase : : E_None = = nError ) | | ( : : osl : : FileBase : : E_NOENT = = nError ) ) ;
2003-04-17 07:34:31 +00:00
nError = : : osl : : File : : remove ( aPathURL ) ;
CPPUNIT_ASSERT_MESSAGE ( " In deleteTestFile Function: remove " , ( : : osl : : FileBase : : E_None = = nError ) | | ( nError = = : : osl : : FileBase : : E_NOENT ) ) ;
}
/** delete a temp test file using OUString name of full qualified URL or system path in a base directory.
*/
inline void deleteTestFile ( const : : rtl : : OUString basename , const : : rtl : : OUString filename )
{
: : rtl : : OUString aBaseURL = basename . copy ( 0 ) ;
concatURL ( aBaseURL , filename ) ;
deleteTestFile ( aBaseURL ) ;
}
/** create a temp test directory using OUString name of full qualified URL or system path.
*/
inline void createTestDirectory ( const : : rtl : : OUString dirname )
{
: : rtl : : OUString aPathURL = dirname . copy ( 0 ) ;
: : osl : : FileBase : : RC nError ;
if ( ! isURL ( dirname ) )
: : osl : : FileBase : : getFileURLFromSystemPath ( dirname , aPathURL ) ; //convert if not full qualified URL
nError = : : osl : : Directory : : create ( aPathURL ) ;
2004-03-19 13:48:16 +00:00
//CPPUNIT_ASSERT_MESSAGE( "In createTestDirectory Function: creation: ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
if ( ( : : osl : : FileBase : : E_None ! = nError ) & & ( nError ! = : : osl : : FileBase : : E_EXIST ) )
t_print ( " createTestDirectory failed! \n " ) ;
2003-04-17 07:34:31 +00:00
}
/** create a temp test directory using OUString name of full qualified URL or system path in a base directory.
*/
inline void createTestDirectory ( const : : rtl : : OUString basename , const : : rtl : : OUString dirname )
{
: : rtl : : OUString aBaseURL = basename . copy ( 0 ) ;
: : rtl : : OString aString ;
concatURL ( aBaseURL , dirname ) ;
createTestDirectory ( aBaseURL ) ;
}
/** delete a temp test directory using OUString name of full qualified URL or system path.
*/
inline void deleteTestDirectory ( const : : rtl : : OUString dirname )
{
2004-03-19 13:48:16 +00:00
// LLA: t_print("deleteTestDirectory\n");
2003-04-17 07:34:31 +00:00
: : rtl : : OUString aPathURL = dirname . copy ( 0 ) ;
: : osl : : FileBase : : RC nError ;
2003-10-06 12:40:17 +00:00
// LLA: printFileName(aPathURL);
2003-04-17 07:34:31 +00:00
if ( ! isURL ( dirname ) )
: : osl : : FileBase : : getFileURLFromSystemPath ( dirname , aPathURL ) ; //convert if not full qualified URL
2003-05-27 13:19:09 +00:00
: : osl : : Directory testDir ( aPathURL ) ;
if ( testDir . isOpen ( ) = = sal_True )
2003-10-06 12:40:17 +00:00
{
2004-03-19 13:48:16 +00:00
// LLA: t_print("#close Dir\n");
2003-05-27 13:19:09 +00:00
testDir . close ( ) ; //close if still open.
2003-11-18 15:38:22 +00:00
}
2003-05-27 13:19:09 +00:00
2003-04-17 07:34:31 +00:00
nError = : : osl : : Directory : : remove ( aPathURL ) ;
2003-10-06 12:40:17 +00:00
// LLA: printError(nError);
// LLA: if (( ::osl::FileBase::E_None == nError ))
// LLA: {
2004-03-19 13:48:16 +00:00
// LLA: t_print("nError == E_None\n");
2003-10-06 12:40:17 +00:00
// LLA: }
// LLA: else if ( ( nError == ::osl::FileBase::E_NOENT ))
// LLA: {
2004-03-19 13:48:16 +00:00
// LLA: t_print("nError == E_NOENT\n");
2003-10-06 12:40:17 +00:00
// LLA: }
// LLA: else
// LLA: {
2004-03-19 13:48:16 +00:00
// LLA: // t_print("nError == %d\n", nError);
2003-10-06 12:40:17 +00:00
// LLA: }
2004-03-19 13:48:16 +00:00
rtl : : OUString strError = rtl : : OUString : : createFromAscii ( " In deleteTestDirectory function: remove Directory " ) ;
strError + = aPathURL ;
CPPUNIT_ASSERT_MESSAGE ( strError , ( : : osl : : FileBase : : E_None = = nError ) | | ( nError = = : : osl : : FileBase : : E_NOENT ) ) ;
2003-10-06 12:40:17 +00:00
// LLA: if (! ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ))
// LLA: {
2004-03-19 13:48:16 +00:00
// LLA: t_print("In deleteTestDirectory function: remove\n");
2003-10-06 12:40:17 +00:00
// LLA: }
2003-04-17 07:34:31 +00:00
}
/** delete a temp test directory using OUString name of full qualified URL or system path in a base directory.
*/
inline void deleteTestDirectory ( const : : rtl : : OUString basename , const : : rtl : : OUString dirname )
{
: : rtl : : OUString aBaseURL = basename . copy ( 0 ) ;
concatURL ( aBaseURL , dirname ) ;
deleteTestDirectory ( aBaseURL ) ;
}
/** Check for the file and directory access right.
*/
typedef enum {
2003-05-27 13:19:09 +00:00
osl_Check_Mode_Exist ,
2003-04-17 07:34:31 +00:00
osl_Check_Mode_OpenAccess ,
osl_Check_Mode_ReadAccess ,
osl_Check_Mode_WriteAccess
} oslCheckMode ;
2003-11-18 15:38:22 +00:00
// not used here
2003-05-27 13:19:09 +00:00
inline sal_Bool checkFile ( const : : rtl : : OUString & str , oslCheckMode nCheckMode )
2003-04-17 07:34:31 +00:00
{
2003-05-27 13:19:09 +00:00
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : File testFile ( str ) ;
sal_Bool bCheckResult ;
2003-04-17 07:34:31 +00:00
2003-05-27 13:19:09 +00:00
bCheckResult = sal_False ;
nError1 = testFile . open ( OpenFlag_Read ) ;
if ( ( : : osl : : FileBase : : E_NOENT ! = nError1 ) & & ( : : osl : : FileBase : : E_ACCES ! = nError1 ) ) {
switch ( nCheckMode ) {
case osl_Check_Mode_Exist :
/// check if the file is exist.
if ( : : osl : : FileBase : : E_None = = nError1 )
bCheckResult = sal_True ;
break ;
case osl_Check_Mode_OpenAccess :
/// check if the file is openable.
if ( : : osl : : FileBase : : E_None = = nError1 )
bCheckResult = sal_True ;
break ;
case osl_Check_Mode_WriteAccess :
/// check the file name and whether it can be write.
/// write chars into the file.
2003-11-18 15:38:22 +00:00
//testFile.close( );
//testFile.open( OpenFlag_Write );
2003-05-27 13:19:09 +00:00
sal_uInt64 nCount_write ;
nError2 = testFile . write ( pBuffer_Char , 10 , nCount_write ) ;
if ( : : osl : : FileBase : : E_None = = nError2 )
bCheckResult = sal_True ;
break ;
default :
bCheckResult = sal_False ;
} /// swith
nError2 = testFile . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " in CheckFile() function, close file " , nError2 = = FileBase : : E_None ) ;
}
return bCheckResult ;
2003-04-17 07:34:31 +00:00
}
2003-11-18 15:38:22 +00:00
//check if the file exist
inline sal_Bool ifFileExist ( const : : rtl : : OUString & str )
{
sal_Bool bCheckResult = sal_False ;
/*#ifdef WNT
: : rtl : : OUString aUStr = str . copy ( 0 ) ;
if ( isURL ( str ) )
: : osl : : FileBase : : getSystemPathFromFileURL ( str , aUStr ) ;
: : rtl : : OString aString = : : rtl : : OUStringToOString ( aUStr , RTL_TEXTENCODING_ASCII_US ) ;
const char * path = aString . getStr ( ) ;
if ( ( _access ( path , 0 ) ) ! = - 1 )
bCheckResult = sal_True ;
# else* /
2004-03-19 13:48:16 +00:00
: : rtl : : OString aString = : : rtl : : OUStringToOString ( str , RTL_TEXTENCODING_ASCII_US ) ;
const char * path = aString . getStr ( ) ;
2003-11-18 15:38:22 +00:00
: : osl : : File testFile ( str ) ;
bCheckResult = ( osl : : FileBase : : E_None = = testFile . open ( OpenFlag_Read ) ) ;
2004-03-19 13:48:16 +00:00
//if (bCheckResult)
//t_print("%s exist!\n", path);
//else
//t_print("%s not exist!\n", path);
2003-11-18 15:38:22 +00:00
//#endif
return bCheckResult ;
}
//check if the file can be writen
inline sal_Bool ifFileCanWrite ( const : : rtl : : OUString & str )
{
sal_Bool bCheckResult = sal_False ;
//on Windows, the file has no write right, but can be written
# ifdef WNT
: : rtl : : OUString aUStr = str . copy ( 0 ) ;
if ( isURL ( str ) )
: : osl : : FileBase : : getSystemPathFromFileURL ( str , aUStr ) ;
: : rtl : : OString aString = : : rtl : : OUStringToOString ( aUStr , RTL_TEXTENCODING_ASCII_US ) ;
const char * path = aString . getStr ( ) ;
if ( ( _access ( path , 2 ) ) ! = - 1 )
bCheckResult = sal_True ;
//on UNX, just test if open success with OpenFlag_Write
# else
: : osl : : File testFile ( str ) ;
bCheckResult = ( osl : : FileBase : : E_None = = testFile . open ( OpenFlag_Write ) ) ;
# endif
return bCheckResult ;
}
2003-04-17 07:34:31 +00:00
inline sal_Bool checkDirectory ( const : : rtl : : OUString & str , oslCheckMode nCheckMode )
{
rtl : : OUString aUString ;
DirectoryItem rItem ;
FileBase : : RC rc ;
2003-05-27 13:19:09 +00:00
sal_Bool bCheckResult = sal_False ;
2003-04-17 07:34:31 +00:00
2004-05-03 07:57:00 +00:00
//::std::auto_ptr<Directory> pDir( new Directory( str ) );
Directory aDir ( str ) ;
rc = aDir . open ( ) ;
2003-04-17 07:34:31 +00:00
2003-05-27 13:19:09 +00:00
if ( ( : : osl : : FileBase : : E_NOENT ! = rc ) & & ( : : osl : : FileBase : : E_ACCES ! = rc ) ) {
switch ( nCheckMode ) {
case osl_Check_Mode_Exist :
if ( rc = = : : osl : : FileBase : : E_None )
bCheckResult = sal_True ;
break ;
case osl_Check_Mode_OpenAccess :
if ( rc = = : : osl : : FileBase : : E_None )
bCheckResult = sal_True ;
break ;
case osl_Check_Mode_ReadAccess :
2004-05-03 07:57:00 +00:00
//rc = pDir->getNextItem( rItem, 0 );
rc = aDir . getNextItem ( rItem , 0 ) ;
2003-05-27 13:19:09 +00:00
if ( ( rc = = : : osl : : FileBase : : E_None ) | | ( rc = = : : osl : : FileBase : : E_NOENT ) )
bCheckResult = sal_True ;
else
bCheckResult = sal_False ;
break ;
case osl_Check_Mode_WriteAccess :
( ( aUString + = str ) + = aSlashURL ) + = aTmpName2 ;
2004-05-03 07:57:00 +00:00
//if ( ( rc = pDir->create( aUString ) ) == ::osl::FileBase::E_None )
if ( ( rc = Directory : : create ( aUString ) ) = = : : osl : : FileBase : : E_None )
2003-05-27 13:19:09 +00:00
{
bCheckResult = sal_True ;
2004-05-03 07:57:00 +00:00
//rc = pDir->remove( aUString );
rc = Directory : : remove ( aUString ) ;
2003-05-27 13:19:09 +00:00
CPPUNIT_ASSERT ( rc = = : : osl : : FileBase : : E_None ) ;
}
else
bCheckResult = sal_False ;
break ;
default :
2003-04-17 07:34:31 +00:00
bCheckResult = sal_False ;
2003-05-27 13:19:09 +00:00
} // switch
2003-04-17 07:34:31 +00:00
2004-05-03 07:57:00 +00:00
rc = aDir . close ( ) ;
2003-05-27 13:19:09 +00:00
CPPUNIT_ASSERT ( rc = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
2004-05-03 07:57:00 +00:00
} //if
2003-04-17 07:34:31 +00:00
return bCheckResult ;
}
2003-11-18 15:38:22 +00:00
/** construct error message
*/
inline : : rtl : : OUString outputError ( const : : rtl : : OUString & returnVal , const : : rtl : : OUString & rightVal , const sal_Char * msg = " " )
{
: : rtl : : OUString aUString ;
if ( returnVal . equals ( rightVal ) )
return aUString ;
aUString + = : : rtl : : OUString : : createFromAscii ( msg ) ;
aUString + = : : rtl : : OUString : : createFromAscii ( " : the returned value is ' " ) ;
aUString + = returnVal ;
aUString + = : : rtl : : OUString : : createFromAscii ( " ', but the value should be ' " ) ;
aUString + = rightVal ;
aUString + = : : rtl : : OUString : : createFromAscii ( " '. " ) ;
return aUString ;
}
2003-04-17 07:34:31 +00:00
/** Change file mode, two version in UNIX and Windows;.
*/
# if ( defined UNX ) || ( defined OS2 ) //chmod() method is differ in Windows
inline void changeFileMode ( : : rtl : : OUString & filepath , sal_Int32 mode )
{
rtl : : OString aString ;
rtl : : OUString aUStr = filepath . copy ( 0 ) ;
if ( isURL ( filepath ) )
: : osl : : FileBase : : getSystemPathFromFileURL ( filepath , aUStr ) ;
aString = : : rtl : : OUStringToOString ( aUStr , RTL_TEXTENCODING_ASCII_US ) ;
chmod ( aString . getStr ( ) , mode ) ;
}
# else //Windows version
inline void changeFileMode ( : : rtl : : OUString & filepath , sal_Int32 mode )
{
2004-03-19 13:48:16 +00:00
t_print ( " this method is not implemented yet " ) ;
2003-04-17 07:34:31 +00:00
}
# endif
2003-10-06 12:40:17 +00:00
inline : : rtl : : OUString getCurrentPID ( void ) ;
2003-04-17 07:34:31 +00:00
2003-05-27 13:19:09 +00:00
2003-04-17 07:34:31 +00:00
//------------------------------------------------------------------------
// Beginning of the test cases for FileBase class
//------------------------------------------------------------------------
namespace osl_FileBase
{
2003-10-06 12:40:17 +00:00
#if 0 //~ this function has been deprecated
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
// testing the method
// static inline RC getCanonicalName( const ::rtl::OUString& ustrRequestedURL, ::rtl::OUString& ustrValidURL )
//
// The illegal characters are ;+=[]',\"*\\<>/?:|.
2003-05-27 13:19:09 +00:00
// because getCanonicalName method is not implemented yet and will be deprecated in the future, this test is not necessary.
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
class getCanonicalName : public CppUnit : : TestFixture
{
public :
2003-10-06 12:40:17 +00:00
: : osl : : FileBase : : RC nError ;
2003-04-17 07:34:31 +00:00
void getCanonicalName_001 ( )
{
: : rtl : : OUString aUStr_ValidURL ;
2003-10-06 12:40:17 +00:00
nError = : : osl : : FileBase : : getCanonicalName ( aCanURL1 , aUStr_ValidURL ) ;
2003-04-17 07:34:31 +00:00
2003-05-27 13:19:09 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getCanonicalName function: check valid and unused file name " ,
2003-10-06 12:40:17 +00:00
( osl : : FileBase : : E_None = = nError ) & & aUStr_ValidURL . equalsIgnoreAsciiCase ( aCanURL1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void getCanonicalName_002 ( )
{
: : rtl : : OUString aUStr_ValidURL ;
createTestFile ( aCanURL1 ) ;
nError = : : osl : : FileBase : : getCanonicalName ( aCanURL1 , aUStr_ValidURL ) ;
deleteTestFile ( aCanURL1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getCanonicalName function: an existed file name, should different from the request, it did not passed(W32)(UNX) " ,
2003-10-06 12:40:17 +00:00
( osl : : FileBase : : E_None = = nError ) & & aUStr_ValidURL . equalsIgnoreAsciiCase ( aCanURL1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void getCanonicalName_003 ( )
{
: : rtl : : OUString aUStr_ValidURL ;
2003-10-06 12:40:17 +00:00
nError = : : osl : : FileBase : : getCanonicalName ( aCanURL2 , aUStr_ValidURL ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getCanonicalName function: invalid file name, should different from the request, it did not passed(W32)(UNX) " ,
2003-11-18 15:38:22 +00:00
( osl : : FileBase : : E_None = = nError ) & & aUStr_ValidURL . equalsIgnoreAsciiCase ( aCanURL2 ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getCanonicalName ) ;
CPPUNIT_TEST ( getCanonicalName_001 ) ;
CPPUNIT_TEST ( getCanonicalName_002 ) ;
CPPUNIT_TEST ( getCanonicalName_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getCanonicalName
2003-10-06 12:40:17 +00:00
# endif
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
// testing the method
// static inline RC getAbsoluteFileURL( const ::rtl::OUString& ustrBaseDirectoryURL,
// const ::rtl::OUString& ustrRelativeFileURL,
// ::rtl::OUString& ustrAbsoluteFileURL )
//---------------------------------------------------------------------
class getAbsoluteFileURL : public CppUnit : : TestFixture
{
2004-05-03 07:57:00 +00:00
//::osl::FileBase aFileBase;
: : rtl : : OUString aResultURL1 , aResultURL2 , aResultURL3 , aResultURL4 , aResultURL5 , aResultURL6 ;
// ::osl::FileBase::RC nError;
2003-11-18 15:38:22 +00:00
sal_Bool bOk ;
2003-04-17 07:34:31 +00:00
public :
2004-03-19 13:48:16 +00:00
void check_getAbsoluteFileURL ( rtl : : OUString const & _suBaseURL , rtl : : OString const & _sRelativeURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OUString const & _suAssumeResultStr ) ;
void getAbsoluteFileURL_001_1 ( ) ;
void getAbsoluteFileURL_001_2 ( ) ;
void getAbsoluteFileURL_001_3 ( ) ;
void getAbsoluteFileURL_001_4 ( ) ;
void getAbsoluteFileURL_001_5 ( ) ;
void getAbsoluteFileURL_001_6 ( ) ;
void getAbsoluteFileURL_001_7 ( ) ;
void getAbsoluteFileURL_001_8 ( ) ;
void getAbsoluteFileURL_002 ( ) ;
void getAbsoluteFileURL_003 ( ) ;
void getAbsoluteFileURL_004 ( ) ;
CPPUNIT_TEST_SUITE ( getAbsoluteFileURL ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_1 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_2 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_3 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_4 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_5 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_6 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_7 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001_8 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_002 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_003 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; //class getAbsoluteFileURL
/* use coding format as same as getSystemPathFromFileURL
2003-04-17 07:34:31 +00:00
// initialization
void setUp ( )
{
sal_Char pResultURL1 [ ] = " /relative/file1 " ;
sal_Char pResultURL2 [ ] = " /relative/file2 " ;
sal_Char pResultURL3 [ ] = " /file3 " ;
sal_Char pResultURL4 [ ] = " /file4 " ;
sal_Char pResultURL5 [ ] = " /canonical.name " ;
2004-03-19 13:48:16 +00:00
sal_Char pResultURL6 [ ] = " /relative/ " ;
2003-10-06 12:40:17 +00:00
aResultURL1 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL1 ) ) ;
aResultURL2 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL2 ) ) ;
aResultURL3 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL3 ) ) ;
aResultURL4 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL4 ) ) ;
aResultURL5 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL5 ) ) ;
2004-03-19 13:48:16 +00:00
aResultURL6 = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( pResultURL6 ) ) ;
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
}
// test code
void getAbsoluteFileURL_001 ( )
{
: : rtl : : OUString aUStr_AbsURL ;
2003-10-06 12:40:17 +00:00
: : osl : : FileBase : : RC nError11 = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aRelURL1 , aUStr_AbsURL ) ;
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getAbsoluteFileURL(' " ) ;
suError + = aUserDirectoryURL ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aRelURL1 ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aUStr_AbsURL ;
suError + = outputError ( aUStr_AbsURL , aResultURL1 , " ' ), " ) ;
2003-04-17 07:34:31 +00:00
sal_Bool nError12 = aUStr_AbsURL . equals ( aResultURL1 ) ;
2003-10-06 12:40:17 +00:00
: : osl : : FileBase : : RC nError21 = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aRelURL2 , aUStr_AbsURL ) ;
2003-04-17 07:34:31 +00:00
sal_Bool nError22 = aUStr_AbsURL . equals ( aResultURL2 ) ;
2003-10-06 12:40:17 +00:00
: : osl : : FileBase : : RC nError31 = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aRelURL3 , aUStr_AbsURL ) ;
2003-04-17 07:34:31 +00:00
sal_Bool nError32 = aUStr_AbsURL . equals ( aResultURL3 ) ;
2003-10-06 12:40:17 +00:00
: : osl : : FileBase : : RC nError41 = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aRelURL4 , aUStr_AbsURL ) ;
2003-04-17 07:34:31 +00:00
sal_Bool nError42 = aUStr_AbsURL . equals ( aResultURL4 ) ;
2004-03-19 13:48:16 +00:00
: : osl : : FileBase : : RC nError61 = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aRelURL6 , aUStr_AbsURL ) ;
sal_Bool nError62 = aUStr_AbsURL . equals ( aResultURL6 ) ;
printFileName ( aUStr_AbsURL ) ;
printFileName ( aResultURL6 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getAbsoluteFileURL function: valid file name with valid directory " ,
( : : osl : : FileBase : : E_None = = nError11 ) & & ( sal_True = = nError12 ) & &
( : : osl : : FileBase : : E_None = = nError21 ) & & ( sal_True = = nError22 ) & &
( : : osl : : FileBase : : E_None = = nError31 ) & & ( sal_True = = nError32 ) & &
2004-03-19 13:48:16 +00:00
( : : osl : : FileBase : : E_None = = nError41 ) & & ( sal_True = = nError42 ) & &
( : : osl : : FileBase : : E_None = = nError61 ) & & ( sal_True = = nError62 ) ) ;
2003-04-17 07:34:31 +00:00
}
# if ( defined UNX ) || ( defined OS2 ) //Link is not defined in Windows
void getAbsoluteFileURL_002 ( )
{
2003-10-06 12:40:17 +00:00
: : rtl : : OUString aUStr_AbsURL , aUStr_LnkFileSys ( aTempDirectorySys ) , aUStr_SrcFileSys ( aTempDirectorySys ) ;
( ( aUStr_LnkFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /link.file " ) ;
( ( aUStr_SrcFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /canonical.name " ) ;
2003-12-11 11:30:40 +00:00
rtl : : OString strLinkFileName , strSrcFileName ;
strLinkFileName = OUStringToOString ( aUStr_LnkFileSys , RTL_TEXTENCODING_ASCII_US ) ;
strSrcFileName = OUStringToOString ( aUStr_SrcFileSys , RTL_TEXTENCODING_ASCII_US ) ;
2003-04-17 07:34:31 +00:00
createTestFile ( aCanURL1 ) ;
2003-12-11 11:30:40 +00:00
sal_Int32 fd = symlink ( strSrcFileName . getStr ( ) , strLinkFileName . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( fd = = 0 ) ;
2003-11-18 15:38:22 +00:00
nError = aFileBase . getAbsoluteFileURL ( aUserDirectoryURL , aLnkURL1 , aUStr_AbsURL ) ;
2003-04-17 07:34:31 +00:00
bOk = aUStr_AbsURL . equals ( aResultURL5 ) ;
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getAbsoluteFileURL(' " ) ;
suError + = aUserDirectoryURL ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aLnkURL1 ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aUStr_AbsURL ;
suError + = outputError ( aUStr_AbsURL , aResultURL5 , " ' ), " ) ;
//printFileName(suError);
2003-04-17 07:34:31 +00:00
deleteTestFile ( aCanURL1 ) ;
2003-12-11 11:30:40 +00:00
fd = remove ( strLinkFileName . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( fd = = 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getAbsoluteFileURL function: URL contain link( Solaris version ) " ,
( : : osl : : FileBase : : E_None = = nError ) & & ( sal_True = = bOk ) ) ;
}
2003-11-18 15:38:22 +00:00
# else //Windows version
2003-04-17 07:34:31 +00:00
void getAbsoluteFileURL_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getAbsoluteFileURL function: URL contain link( Windows version ) " ,
2003-11-18 15:38:22 +00:00
1 ) ;
2003-04-17 07:34:31 +00:00
}
# endif
void getAbsoluteFileURL_003 ( )
{
2003-12-11 11:30:40 +00:00
// LLA: may be a wrong test, aTmpName1 not a real URL
#if 0
2003-04-17 07:34:31 +00:00
: : rtl : : OUString aUStr_AbsURL ;
2003-10-06 12:40:17 +00:00
nError = aFileBase . getAbsoluteFileURL ( aTmpName1 , aRelURL1 , aUStr_AbsURL ) ; //base dir invalid error
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getAbsoluteFileURL(' " ) ;
suError + = aTmpName1 ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aRelURL1 ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aUStr_AbsURL ;
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() " ) ;
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( suError , ( : : osl : : FileBase : : E_INVAL = = nError ) ) ;
2003-12-11 11:30:40 +00:00
# endif
2003-04-17 07:34:31 +00:00
}
2003-11-18 15:38:22 +00:00
//use ".." in relartive path, the BasePath must exist on the file system
2003-04-17 07:34:31 +00:00
void getAbsoluteFileURL_004 ( )
{
2003-11-18 15:38:22 +00:00
//create two level directories under $Temp/PID/
: : rtl : : OUString aUStrUpBase = aUserDirectoryURL + : : rtl : : OUString : : createFromAscii ( " /test1 " ) ;
createTestDirectory ( aUStrUpBase ) ;
: : rtl : : OUString aUStrBase = aUserDirectoryURL + : : rtl : : OUString : : createFromAscii ( " /test1/dir1 " ) ;
createTestDirectory ( aUStrBase ) ;
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
: : rtl : : OUString aUStrRelar = : : rtl : : OUString : : createFromAscii ( " ../../mytestfile " ) ;
: : rtl : : OUString aUStr_AbsURL ;
: : rtl : : OUString aResultURL6 = aUserDirectoryURL + : : rtl : : OUString : : createFromAscii ( " /mytestfile " ) ;
nError = aFileBase . getAbsoluteFileURL ( aUStrBase , aUStrRelar , aUStr_AbsURL ) ;
bOk = aUStr_AbsURL . equals ( aResultURL6 ) ;
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getAbsoluteFileURL(' " ) ;
suError + = aUStrBase ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aUStrRelar ;
suError + = : : rtl : : OUString : : createFromAscii ( " ', ' " ) ;
suError + = aUStr_AbsURL ;
suError + = outputError ( aUStr_AbsURL , aResultURL6 , " ' ), did not pass on Win32 " ) ;
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
deleteTestDirectory ( aUStrBase ) ;
deleteTestDirectory ( aUStrUpBase ) ;
CPPUNIT_ASSERT_MESSAGE ( suError , ( : : osl : : FileBase : : E_None = = nError ) & & ( sal_True = = bOk ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getAbsoluteFileURL ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_001 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_002 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_003 ) ;
CPPUNIT_TEST ( getAbsoluteFileURL_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
2004-03-19 13:48:16 +00:00
} ; // class getAbsoluteFileURL*/
void getAbsoluteFileURL : : check_getAbsoluteFileURL ( rtl : : OUString const & _suBaseURL , rtl : : OString const & _sRelativeURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OUString const & _suAssumeResultStr )
{
rtl : : OUString suRelativeURL = rtl : : OStringToOUString ( _sRelativeURL , RTL_TEXTENCODING_UTF8 ) ;
rtl : : OString sBaseURL = rtl : : OUStringToOString ( _suBaseURL , RTL_TEXTENCODING_UTF8 ) ;
rtl : : OUString suResultURL ;
2004-05-03 07:57:00 +00:00
osl : : FileBase : : RC nError = FileBase : : getAbsoluteFileURL ( _suBaseURL , suRelativeURL , suResultURL ) ;
2004-03-19 13:48:16 +00:00
rtl : : OString sResultURL = rtl : : OUStringToOString ( suResultURL , RTL_TEXTENCODING_UTF8 ) ;
rtl : : OString sError = errorToString ( nError ) ;
t_print ( " getAbsoluteFileURL('%s','%s') deliver absolute URL: '%s', error '%s' \n " , sBaseURL . getStr ( ) , _sRelativeURL . getStr ( ) , sResultURL . getStr ( ) , sError . getStr ( ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong: error number is wrong " , nError = = _nAssumeError ) ;
if ( nError = = : : osl : : FileBase : : E_None )
{
sal_Bool bStrAreEqual = _suAssumeResultStr . equals ( suResultURL ) ;
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong: ResultURL is not equal to expected URL " , bStrAreEqual = = sal_True ) ;
}
}
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
void getAbsoluteFileURL : : getAbsoluteFileURL_001_1 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /relative/file1 " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , " relative/file1 " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_2 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /relative/file2 " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , " relative/./file2 " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_3 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /file3 " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , " relative/../file3 " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_4 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /file4 " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , " ././relative/../file4 " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_5 ( )
{
rtl : : OUString suAssume ;
# if ( defined UNX )
suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /relative/ " ) ) ;
# else
suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /relative " ) ) ;
# endif
check_getAbsoluteFileURL ( aUserDirectoryURL , " ././relative/. " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_6 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /.relative " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , " ./.relative " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_7 ( )
{
rtl : : OUString suAssume ;
# if (defined UNX )
suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /.a/ " ) ) ;
# else //windows
suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /.a " ) ) ;
# endif
check_getAbsoluteFileURL ( aUserDirectoryURL , " ./.a/mydir/.. " , : : osl : : FileBase : : E_None , suAssume ) ;
}
void getAbsoluteFileURL : : getAbsoluteFileURL_001_8 ( )
{
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /tmp/ok " ) ) ;
# if ( defined UNX ) || ( defined OS2 )
check_getAbsoluteFileURL ( aUserDirectoryURL , " tmp//ok " , : : osl : : FileBase : : E_None , suAssume ) ;
# else
check_getAbsoluteFileURL ( aUserDirectoryURL , " tmp//ok " , : : osl : : FileBase : : E_INVAL , suAssume ) ;
# endif
}
void getAbsoluteFileURL : : getAbsoluteFileURL_002 ( )
{
# if ( defined UNX ) || ( defined OS2 ) //Link is not defined in Windows
: : rtl : : OUString aUStr_AbsURL , aUStr_LnkFileSys ( aTempDirectorySys ) , aUStr_SrcFileSys ( aTempDirectorySys ) ;
( ( aUStr_LnkFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /link.file " ) ;
( ( aUStr_SrcFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /canonical.name " ) ;
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
rtl : : OString strLinkFileName , strSrcFileName ;
strLinkFileName = OUStringToOString ( aUStr_LnkFileSys , RTL_TEXTENCODING_ASCII_US ) ;
strSrcFileName = OUStringToOString ( aUStr_SrcFileSys , RTL_TEXTENCODING_ASCII_US ) ;
createTestFile ( aCanURL1 ) ;
sal_Int32 fd = symlink ( strSrcFileName . getStr ( ) , strLinkFileName . getStr ( ) ) ;
CPPUNIT_ASSERT ( fd = = 0 ) ;
rtl : : OString sLnkURL = OUStringToOString ( aLnkURL1 , RTL_TEXTENCODING_ASCII_US ) ;
rtl : : OUString suAssume = aUserDirectoryURL . concat ( rtl : : OUString : : createFromAscii ( " /canonical.name " ) ) ;
check_getAbsoluteFileURL ( aUserDirectoryURL , sLnkURL , : : osl : : FileBase : : E_None , suAssume ) ;
deleteTestFile ( aCanURL1 ) ;
fd = remove ( strLinkFileName . getStr ( ) ) ;
CPPUNIT_ASSERT ( fd = = 0 ) ;
# endif
}
//please see line# 930
void getAbsoluteFileURL : : getAbsoluteFileURL_003 ( )
{
}
void getAbsoluteFileURL : : getAbsoluteFileURL_004 ( )
{
//create two level directories under $Temp/PID/
: : rtl : : OUString aUStrUpBase = aUserDirectoryURL + : : rtl : : OUString : : createFromAscii ( " /test1 " ) ;
createTestDirectory ( aUStrUpBase ) ;
: : rtl : : OUString aUStrBase = aUserDirectoryURL + : : rtl : : OUString : : createFromAscii ( " /test1/dir1 " ) ;
createTestDirectory ( aUStrBase ) ;
: : rtl : : OUString suAssume = aUserDirectoryURL . concat ( : : rtl : : OUString : : createFromAscii ( " /mytestfile " ) ) ;
check_getAbsoluteFileURL ( aUStrBase , " ../../mytestfile " , : : osl : : FileBase : : E_None , suAssume ) ;
deleteTestDirectory ( aUStrBase ) ;
deleteTestDirectory ( aUStrUpBase ) ;
}
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
2004-03-19 13:48:16 +00:00
// testing two methods:
2003-04-17 07:34:31 +00:00
// static inline RC getSystemPathFromFileURL( const ::rtl::OUString& ustrFileURL,
2004-03-19 13:48:16 +00:00
// ::rtl::OUString& ustrSystemPath )
// static RC getFileURLFromSystemPath( const ::rtl::OUString & ustrSystemPath,
// ::rtl::OUString & ustrFileURL );
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
2004-03-19 13:48:16 +00:00
class SystemPath_FileURL : public CppUnit : : TestFixture
2003-04-17 07:34:31 +00:00
{
2004-05-03 07:57:00 +00:00
//::osl::FileBase aFileBase;
2003-12-11 11:30:40 +00:00
// ::rtl::OUString aUStr;
// ::osl::FileBase::RC nError;
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
//void check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr);
void check_SystemPath_FileURL ( rtl : : OString const & _sSource , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sAssumeResultStr , sal_Bool bDirection = sal_True ) ;
void checkWNTBehaviour_getSystemPathFromFileURL ( rtl : : OString const & _sURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sWNTAssumeResultString ) ;
void checkUNXBehaviour_getSystemPathFromFileURL ( rtl : : OString const & _sURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sUnixAssumeResultString ) ;
void checkWNTBehaviour_getFileURLFromSystemPath ( rtl : : OString const & _sSysPath , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sWNTAssumeResultString ) ;
void checkUNXBehaviour_getFileURLFromSystemPath ( rtl : : OString const & _sSysPath , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sUnixAssumeResultString ) ;
2003-12-11 11:30:40 +00:00
public :
2003-04-17 07:34:31 +00:00
// test code.
2003-12-11 11:30:40 +00:00
void getSystemPathFromFileURL_001_1 ( ) ;
void getSystemPathFromFileURL_001_2 ( ) ;
void getSystemPathFromFileURL_001_21 ( ) ;
2004-03-19 13:48:16 +00:00
void getSystemPathFromFileURL_001_22 ( ) ;
2003-12-11 11:30:40 +00:00
void getSystemPathFromFileURL_001_3 ( ) ;
void getSystemPathFromFileURL_001_31 ( ) ;
void getSystemPathFromFileURL_001_4 ( ) ;
2004-03-19 13:48:16 +00:00
void getSystemPathFromFileURL_001_41 ( ) ;
2003-12-11 11:30:40 +00:00
void getSystemPathFromFileURL_001_5 ( ) ;
void getSystemPathFromFileURL_001_51 ( ) ;
void getSystemPathFromFileURL_001_52 ( ) ;
void getSystemPathFromFileURL_001_53 ( ) ;
void getSystemPathFromFileURL_001_6 ( ) ;
void getSystemPathFromFileURL_001_61 ( ) ;
void getSystemPathFromFileURL_001_7 ( ) ;
void getSystemPathFromFileURL_001_71 ( ) ;
void getSystemPathFromFileURL_001_8 ( ) ;
2004-03-19 13:48:16 +00:00
void getSystemPathFromFileURL_001_81 ( ) ;
2003-12-11 11:30:40 +00:00
void getSystemPathFromFileURL_001_9 ( ) ;
void getSystemPathFromFileURL_001_91 ( ) ;
void getSystemPathFromFileURL_001_92 ( ) ;
void getSystemPathFromFileURL_004 ( ) ;
void getSystemPathFromFileURL_005 ( ) ;
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
//test case fot getFileURLFromSystemPath
void getFileURLFromSystemPath_001 ( ) ;
void getFileURLFromSystemPath_002 ( ) ;
void getFileURLFromSystemPath_003 ( ) ;
void getFileURLFromSystemPath_004 ( ) ;
void getFileURLFromSystemPath_005 ( ) ;
CPPUNIT_TEST_SUITE ( SystemPath_FileURL ) ;
2003-12-11 11:30:40 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_1 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_2 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_21 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_22 ) ;
2003-12-11 11:30:40 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_3 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_31 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_4 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_41 ) ;
2003-12-11 11:30:40 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_5 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_51 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_52 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_53 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_6 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_61 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_7 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_71 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_8 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_81 ) ;
2003-12-11 11:30:40 +00:00
CPPUNIT_TEST ( getSystemPathFromFileURL_001_9 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_91 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_001_92 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_004 ) ;
CPPUNIT_TEST ( getSystemPathFromFileURL_005 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST ( getFileURLFromSystemPath_001 ) ;
CPPUNIT_TEST ( getFileURLFromSystemPath_002 ) ;
CPPUNIT_TEST ( getFileURLFromSystemPath_003 ) ;
CPPUNIT_TEST ( getFileURLFromSystemPath_004 ) ;
CPPUNIT_TEST ( getFileURLFromSystemPath_005 ) ;
2003-12-11 11:30:40 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
2004-03-19 13:48:16 +00:00
} ; // class SystemPath_FileURL
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
// test code.
2004-03-19 13:48:16 +00:00
/* void getSystemPathFromFileURL::check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr)
2003-12-11 11:30:40 +00:00
{
// PRE: URL as String
rtl : : OUString suURL ;
rtl : : OUString suStr ;
suURL = rtl : : OStringToOUString ( _sURL , RTL_TEXTENCODING_UTF8 ) ;
: : osl : : FileBase : : RC nError = osl : : FileBase : : getSystemPathFromFileURL ( suURL , suStr ) ; // start with /
// if the given string is gt length 0,
// we check also this string
rtl : : OString sStr = rtl : : OUStringToOString ( suStr , RTL_TEXTENCODING_UTF8 ) ;
rtl : : OString sError = errorToString ( nError ) ;
2004-03-19 13:48:16 +00:00
t_print ( " getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s' \n " , _sURL . getStr ( ) , sStr . getStr ( ) , sError . getStr ( ) ) ;
// rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8);
// sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
// t_print("UTF8: %s\n", sStr.getStr() );
if ( _sAssumeResultStr . getLength ( ) > 0 )
{
sal_Bool bStrAreEqual = _sAssumeResultStr . equals ( sStr ) ;
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong " ,
nError = = _nAssumeError & & bStrAreEqual = = sal_True ) ;
}
else
{
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong " , nError = = _nAssumeError ) ;
}
} */
// if bDirection==sal_True, check getSystemPathFromFileURL
// if bDirection==sal_False, check getFileURLFromSystemPath
void SystemPath_FileURL : : check_SystemPath_FileURL ( rtl : : OString const & _sSource , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sAssumeResultStr , sal_Bool bDirection )
{
// PRE: URL as String
rtl : : OUString suSource ;
rtl : : OUString suStr ;
suSource = rtl : : OStringToOUString ( _sSource , RTL_TEXTENCODING_UTF8 ) ;
: : osl : : FileBase : : RC nError ;
if ( bDirection = = sal_True )
nError = osl : : FileBase : : getSystemPathFromFileURL ( suSource , suStr ) ;
else
nError = osl : : FileBase : : getFileURLFromSystemPath ( suSource , suStr ) ;
// if the given string is gt length 0,
// we check also this string
rtl : : OString sStr = rtl : : OUStringToOString ( suStr , RTL_TEXTENCODING_UTF8 ) ;
rtl : : OString sError = errorToString ( nError ) ;
if ( bDirection = = sal_True )
t_print ( " getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s' \n " , _sSource . getStr ( ) , sStr . getStr ( ) , sError . getStr ( ) ) ;
else
t_print ( " getFileURLFromSystemPath('%s') deliver File URL: '%s', error '%s' \n " , _sSource . getStr ( ) , sStr . getStr ( ) , sError . getStr ( ) ) ;
2003-12-11 11:30:40 +00:00
// rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8);
// sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8);
2004-03-19 13:48:16 +00:00
// t_print("UTF8: %s\n", sStr.getStr() );
2003-12-11 11:30:40 +00:00
if ( _sAssumeResultStr . getLength ( ) > 0 )
{
sal_Bool bStrAreEqual = _sAssumeResultStr . equals ( sStr ) ;
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong " ,
nError = = _nAssumeError & & bStrAreEqual = = sal_True ) ;
}
else
{
CPPUNIT_ASSERT_MESSAGE ( " Assumption is wrong " , nError = = _nAssumeError ) ;
2003-04-17 07:34:31 +00:00
}
2003-12-11 11:30:40 +00:00
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : checkWNTBehaviour_getSystemPathFromFileURL ( rtl : : OString const & _sURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sWNTAssumeResultString )
{
# if ( defined WNT )
check_SystemPath_FileURL ( _sURL , _nAssumeError , _sWNTAssumeResultString ) ;
# endif
}
2003-12-11 11:30:40 +00:00
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : checkUNXBehaviour_getSystemPathFromFileURL ( rtl : : OString const & _sURL , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sUnixAssumeResultString )
{
# if ( defined UNX )
check_SystemPath_FileURL ( _sURL , _nAssumeError , _sUnixAssumeResultString ) ;
# endif
}
void SystemPath_FileURL : : checkWNTBehaviour_getFileURLFromSystemPath ( rtl : : OString const & _sSysPath , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sWNTAssumeResultString )
2003-12-11 11:30:40 +00:00
{
# if ( defined WNT )
2004-03-19 13:48:16 +00:00
check_SystemPath_FileURL ( _sSysPath , _nAssumeError , _sWNTAssumeResultString , sal_False ) ;
2003-12-11 11:30:40 +00:00
# endif
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : checkUNXBehaviour_getFileURLFromSystemPath ( rtl : : OString const & _sSysPath , : : osl : : FileBase : : RC _nAssumeError , rtl : : OString const & _sUnixAssumeResultString )
2003-12-11 11:30:40 +00:00
{
# if ( defined UNX )
2004-03-19 13:48:16 +00:00
check_SystemPath_FileURL ( _sSysPath , _nAssumeError , _sUnixAssumeResultString , sal_False ) ;
2003-12-11 11:30:40 +00:00
# endif
}
/** LLA: Test for getSystemPathFromFileURL()
this test is splitted into 2 different OS tests ,
the first function checkUNXBehaviour . . . runs only on Unix based Systems ,
the second only on windows based systems
the first parameter are a file URL where we want to get the system path of ,
the second parameter is the assumed error of the osl_getSystemPathFromFileURL ( ) function ,
the thrid parameter is the assumed result string , the string will only test , if it ' s length is greater 0
*/
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_1 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_2 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " / " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " \\ " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_21 ( )
2003-12-11 11:30:40 +00:00
{
2004-03-19 13:48:16 +00:00
// rtl::OString sURL("%2f");
rtl : : OString sURL ( " %2F " ) ;
2003-12-11 11:30:40 +00:00
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " / " ) ; // LLA: this is may be a BUG
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_22 ( )
{
rtl : : OString sURL ( " file:///tmp%2Fmydir " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
void SystemPath_FileURL : : getSystemPathFromFileURL_001_3 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " a " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " a " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " a " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_31 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " tmpname " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " tmpname " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " tmpname " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_4 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:// " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_41 ( )
{
rtl : : OString sURL ( " file://localhost/tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
void SystemPath_FileURL : : getSystemPathFromFileURL_001_5 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /tmp " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_51 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file://c:/tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c:/tmp " ) ; // LLA: this is may be a BUG
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_52 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///c:/tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /c:/tmp " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c: \\ tmp " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_53 ( )
2003-12-11 11:30:40 +00:00
{
// LLA: is this a legal file path?
rtl : : OString sURL ( " file:///c|/tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /c|/tmp " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c: \\ tmp " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_6 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///tmp/first " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /tmp/first " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_61 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///c:/tmp/first " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /c:/tmp/first " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c: \\ tmp \\ first " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_7 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///tmp/../second " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /tmp/../second " ) ; // LLA: may be a BUG
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_71 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///c:/tmp/../second " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /c:/tmp/../second " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c: \\ tmp \\ .. \\ second " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_8 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " ../tmp " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " ../tmp " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " .. \\ tmp " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_81 ( )
{
rtl : : OString sURL ( " file://~/tmp " ) ;
char * home_path ;
home_path = getenv ( " HOME " ) ;
rtl : : OString expResult ( home_path ) ;
expResult + = " /tmp " ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , expResult ) ;
// checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "\\tmp");
}
void SystemPath_FileURL : : getSystemPathFromFileURL_001_9 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///tmp/first%20second " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /tmp/first second " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_91 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " file:///c:/tmp/first%20second " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " /c:/tmp/first second " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " c: \\ tmp \\ first second " ) ;
}
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_001_92 ( )
2003-12-11 11:30:40 +00:00
{
rtl : : OString sURL ( " ca@#;+.,$///78no%01ni..name " ) ;
checkUNXBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_None , " " ) ;
checkWNTBehaviour_getSystemPathFromFileURL ( sURL , osl : : FileBase : : E_INVAL , " " ) ;
}
#if 0
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_003 ( )
2003-04-17 07:34:31 +00:00
{
2003-12-11 11:30:40 +00:00
// LLA: ???
//!! seams to be, that the directories do not pass together
: : rtl : : OUString aUStr ;
2003-11-18 15:38:22 +00:00
: : rtl : : OUString aRelativeURL = : : rtl : : OUString : : createFromAscii ( " ../../relartive/file3 " ) ;
2003-10-06 12:40:17 +00:00
: : rtl : : OUString aResultURL ( aSysPath4 ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError = osl : : FileBase : : getSystemPathFromFileURL ( aRelativeURL , aUStr ) ;
2003-05-27 13:19:09 +00:00
sal_Bool bOk = compareFileName ( aUStr , aResultURL ) ;
2003-12-11 11:30:40 +00:00
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getSystemPathFromFileURL( " ) ;
suError + = aRelativeURL ;
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, " ) ;
suError + = outputError ( aUStr , aResultURL ) ;
CPPUNIT_ASSERT_MESSAGE ( suError , ( osl : : FileBase : : E_None = = nError ) & & ( sal_True = = bOk ) ) ;
}
2003-12-11 11:30:40 +00:00
# endif
2003-11-18 15:38:22 +00:00
//normal legal case
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_004 ( )
2003-11-18 15:38:22 +00:00
{
2003-12-11 11:30:40 +00:00
: : rtl : : OUString aUStr ;
: : rtl : : OUString aNormalURL ( aTmpName6 ) ;
: : rtl : : OUString aResultURL ( aSysPath4 ) ;
: : osl : : FileBase : : RC nError = osl : : FileBase : : getSystemPathFromFileURL ( aNormalURL , aUStr ) ;
2003-11-18 15:38:22 +00:00
sal_Bool bOk = compareFileName ( aUStr , aResultURL ) ;
2003-12-11 11:30:40 +00:00
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getSystemPathFromFileURL(' " ) ;
suError + = aNormalURL ;
suError + = : : rtl : : OUString : : createFromAscii ( " ') function:use an absolute file URL, " ) ;
suError + = outputError ( aUStr , aResultURL ) ;
CPPUNIT_ASSERT_MESSAGE ( suError , ( osl : : FileBase : : E_None = = nError ) & & ( sal_True = = bOk ) ) ;
}
//CJK charactors case
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getSystemPathFromFileURL_005 ( )
2003-11-18 15:38:22 +00:00
{
2003-12-11 11:30:40 +00:00
: : rtl : : OUString aUStr ;
2003-11-18 15:38:22 +00:00
createTestDirectory ( aTmpName10 ) ;
: : rtl : : OUString aNormalURL ( aTmpName10 ) ;
: : rtl : : OUString aResultURL ( aSysPath5 ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError = osl : : FileBase : : getSystemPathFromFileURL ( aNormalURL , aUStr ) ;
2003-11-18 15:38:22 +00:00
sal_Bool bOk = compareFileName ( aUStr , aResultURL ) ;
2003-12-11 11:30:40 +00:00
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for getSystemPathFromFileURL(' " ) ;
suError + = aNormalURL ;
suError + = : : rtl : : OUString : : createFromAscii ( " ') function:use a CJK coded absolute URL, " ) ;
suError + = outputError ( aUStr , aResultURL ) ;
deleteTestDirectory ( aTmpName10 ) ;
CPPUNIT_ASSERT_MESSAGE ( suError , ( osl : : FileBase : : E_None = = nError ) & & ( sal_True = = bOk ) ) ;
2003-04-17 07:34:31 +00:00
}
2004-03-19 13:48:16 +00:00
void SystemPath_FileURL : : getFileURLFromSystemPath_001 ( )
{
rtl : : OString sSysPath ( " ~/tmp " ) ;
char * home_path ;
home_path = getenv ( " HOME " ) ;
rtl : : OString expResult ( home_path ) ;
expResult = " file:// " + expResult + " /tmp " ;
checkUNXBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_None , expResult ) ;
checkWNTBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_None , " ~/tmp " ) ;
}
void SystemPath_FileURL : : getFileURLFromSystemPath_002 ( )
{
rtl : : OString sSysPath ( " c:/tmp " ) ;
checkUNXBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_None , " c:/tmp " ) ;
checkWNTBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_None , " file:///c:/tmp " ) ;
}
void SystemPath_FileURL : : getFileURLFromSystemPath_003 ( )
{
rtl : : OString sSysPath ( " file:///temp " ) ;
checkUNXBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_INVAL , " " ) ;
checkWNTBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_INVAL , " " ) ;
}
void SystemPath_FileURL : : getFileURLFromSystemPath_004 ( )
{
rtl : : OString sSysPath ( " //tmp//first start " ) ;
checkUNXBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_None , " file:///tmp/first%20start " ) ;
checkWNTBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_INVAL , " " ) ;
}
void SystemPath_FileURL : : getFileURLFromSystemPath_005 ( )
{
rtl : : OString sSysPath ( " " ) ;
checkUNXBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_INVAL , " " ) ;
checkWNTBehaviour_getFileURLFromSystemPath ( sSysPath , osl : : FileBase : : E_INVAL , " " ) ;
}
// start with "~user", not impletment
// void SystemPath_FileURL::getFileURLFromSystemPath_006()
2003-04-17 07:34:31 +00:00
//---------------------------------------------------------------------
// testing the method
// static inline RC searchFileURL( const ::rtl::OUString& ustrFileName,
// const ::rtl::OUString& ustrSearchPath,
// ::rtl::OUString& ustrFileURL )
//---------------------------------------------------------------------
class searchFileURL : public CppUnit : : TestFixture
{
2004-05-03 07:57:00 +00:00
//::osl::FileBase aFileBase;
2003-04-17 07:34:31 +00:00
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 , nError3 , nError4 ;
public :
// test code.
void searchFileURL_001 ( )
{
/* search file is passed by system filename */
2003-11-18 15:38:22 +00:00
nError1 = : : osl : : FileBase : : searchFileURL ( aTmpName1 , aUserDirectorySys , aUStr ) ;
2003-04-17 07:34:31 +00:00
/* search file is passed by full qualified file URL */
2003-10-06 12:40:17 +00:00
nError2 = : : osl : : FileBase : : searchFileURL ( aCanURL1 , aUserDirectorySys , aUStr ) ;
2003-04-17 07:34:31 +00:00
/* search file is passed by relative file path */
2003-10-06 12:40:17 +00:00
nError3 = : : osl : : FileBase : : searchFileURL ( aRelURL4 , aUserDirectorySys , aUStr ) ;
2003-05-27 13:19:09 +00:00
2003-10-06 12:40:17 +00:00
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) " ,
2003-04-17 07:34:31 +00:00
( osl : : FileBase : : E_NOENT = = nError1 ) & &
( osl : : FileBase : : E_NOENT = = nError2 ) & &
( osl : : FileBase : : E_NOENT = = nError3 ) ) ;
}
void searchFileURL_002 ( )
{
/* search file is passed by system filename */
2003-10-06 12:40:17 +00:00
nError1 = : : osl : : FileBase : : searchFileURL ( aTempDirectorySys , aRootSys , aUStr ) ;
sal_Bool bOk1 = compareFileName ( aUStr , aTempDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
/* search file is passed by full qualified file URL */
2003-10-06 12:40:17 +00:00
nError2 = : : osl : : FileBase : : searchFileURL ( aTempDirectoryURL , aRootSys , aUStr ) ;
sal_Bool bOk2 = compareFileName ( aUStr , aTempDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
/* search file is passed by relative file path */
2003-10-06 12:40:17 +00:00
nError3 = : : osl : : FileBase : : searchFileURL ( aRelURL5 , aRootSys , aUStr ) ;
sal_Bool bOk3 = compareFileName ( aUStr , aTempDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
/* search file is passed by an exist file */
createTestFile ( aCanURL1 ) ;
2003-10-06 12:40:17 +00:00
nError4 = : : osl : : FileBase : : searchFileURL ( aCanURL4 , aUserDirectorySys , aUStr ) ;
2003-04-17 07:34:31 +00:00
sal_Bool bOk4 = compareFileName ( aUStr , aCanURL1 ) ;
deleteTestFile ( aCanURL1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for searchFileURL function: system filename/URL filename/relative path, system directory, searched file already exist. " ,
( osl : : FileBase : : E_None = = nError1 ) & &
( osl : : FileBase : : E_None = = nError2 ) & &
( osl : : FileBase : : E_None = = nError3 ) & &
( osl : : FileBase : : E_None = = nError4 ) & &
( sal_True = = bOk1 ) & &
( sal_True = = bOk2 ) & &
( sal_True = = bOk3 ) & &
( sal_True = = bOk4 ) ) ;
}
void searchFileURL_003 ( )
{
OSLTEST_DECLARE ( SystemPathList , TEST_PLATFORM_ROOT " : " TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP " : " TEST_PLATFORM_ROOT " system/path " ) ;
2003-10-06 12:40:17 +00:00
nError1 = : : osl : : FileBase : : searchFileURL ( aUserDirectoryURL , aSystemPathList , aUStr ) ;
sal_Bool bOk = compareFileName ( aUStr , aUserDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for searchFileURL function: search directory is a list of system paths " ,
( osl : : FileBase : : E_None = = nError1 ) & &
( sal_True = = bOk ) ) ;
}
void searchFileURL_004 ( )
{
OSLTEST_DECLARE ( SystemPathList , TEST_PLATFORM_ROOT PATH_LIST_DELIMITER TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP PATH_LIST_DELIMITER TEST_PLATFORM_ROOT " system/path/../name " ) ;
2003-10-06 12:40:17 +00:00
nError1 = : : osl : : FileBase : : searchFileURL ( aUserDirectoryURL , aSystemPathList , aUStr ) ;
sal_Bool bOk = compareFileName ( aUStr , aUserDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for searchFileURL function: search directory is a list of system paths " ,
( osl : : FileBase : : E_None = = nError1 ) & &
( sal_True = = bOk ) ) ;
}
void searchFileURL_005 ( )
{
2003-10-06 12:40:17 +00:00
nError1 = : : osl : : FileBase : : searchFileURL ( aUserDirectoryURL , aNullURL , aUStr ) ;
sal_Bool bOk = compareFileName ( aUStr , aUserDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for searchFileURL function: search directory is NULL " ,
( osl : : FileBase : : E_None = = nError1 ) & &
( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( searchFileURL ) ;
CPPUNIT_TEST ( searchFileURL_001 ) ;
CPPUNIT_TEST ( searchFileURL_002 ) ;
CPPUNIT_TEST ( searchFileURL_003 ) ;
CPPUNIT_TEST ( searchFileURL_004 ) ;
CPPUNIT_TEST ( searchFileURL_005 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class searchFileURL
//---------------------------------------------------------------------
// testing the method
// static inline RC getTempDirURL( ::rtl::OUString& ustrTempDirURL )
//---------------------------------------------------------------------
class getTempDirURL : public CppUnit : : TestFixture
{
2004-05-03 07:57:00 +00:00
//::osl::FileBase aFileBase;
2003-04-17 07:34:31 +00:00
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError ;
public :
// initialization
void setUp ( )
{
2004-05-03 07:57:00 +00:00
nError = FileBase : : getTempDirURL ( aUStr ) ;
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
}
// test code.
void getTempDirURL_001 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getTempDirURL function: excution " ,
( osl : : FileBase : : E_None = = nError ) ) ;
}
void getTempDirURL_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getTempDirURL function: test for open and write access rights " ,
checkDirectory ( aUStr , osl_Check_Mode_OpenAccess ) & &
checkDirectory ( aUStr , osl_Check_Mode_ReadAccess ) & &
2003-11-18 15:38:22 +00:00
checkDirectory ( aUStr , osl_Check_Mode_WriteAccess ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getTempDirURL ) ;
CPPUNIT_TEST ( getTempDirURL_001 ) ;
CPPUNIT_TEST ( getTempDirURL_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getTempDirURL
//---------------------------------------------------------------------
// testing the method
// static inline RC createTempFile( ::rtl::OUString* pustrDirectoryURL,
// oslFileHandle* pHandle,
// ::rtl::OUString* pustrTempFileURL)
//---------------------------------------------------------------------
class createTempFile : public CppUnit : : TestFixture
{
2004-05-03 07:57:00 +00:00
//::osl::FileBase aFileBase;
2003-04-17 07:34:31 +00:00
: : osl : : FileBase : : RC nError1 , nError2 ;
2003-05-27 13:19:09 +00:00
sal_Bool bOK ;
2003-04-17 07:34:31 +00:00
oslFileHandle * pHandle ;
: : rtl : : OUString * pUStr_DirURL ;
: : rtl : : OUString * pUStr_FileURL ;
public :
2004-05-03 07:57:00 +00:00
2003-04-17 07:34:31 +00:00
// initialization
void setUp ( )
{
pHandle = new oslFileHandle ( ) ;
2004-05-03 07:57:00 +00:00
pUStr_DirURL = new : : rtl : : OUString ( aUserDirectoryURL ) ;
2003-04-17 07:34:31 +00:00
pUStr_FileURL = new : : rtl : : OUString ( ) ;
2004-05-03 07:57:00 +00:00
//*pUStr_DirURL = aUserDirectoryURL; /// create temp file in /tmp/PID or c:\temp\PID.*/
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
delete pUStr_DirURL ;
delete pUStr_FileURL ;
2004-05-03 07:57:00 +00:00
delete pHandle ;
2003-04-17 07:34:31 +00:00
}
// test code.
void createTempFile_001 ( )
{
2004-05-03 07:57:00 +00:00
nError1 = FileBase : : createTempFile ( pUStr_DirURL , pHandle , pUStr_FileURL ) ;
2003-05-27 13:19:09 +00:00
: : osl : : File testFile ( * pUStr_FileURL ) ;
2003-11-18 15:38:22 +00:00
//printFileName(*pUStr_FileURL);
2003-05-27 13:19:09 +00:00
nError2 = testFile . open ( OpenFlag_Create ) ;
2003-11-18 15:38:22 +00:00
if ( osl : : FileBase : : E_EXIST = = nError2 ) {
2003-05-27 13:19:09 +00:00
osl_closeFile ( * pHandle ) ;
deleteTestFile ( * pUStr_FileURL ) ;
}
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for createTempFile function: create temp file and test the existence " ,
2003-05-27 13:19:09 +00:00
( osl : : FileBase : : E_None = = nError1 ) & & ( pHandle ! = NULL ) & & ( osl : : FileBase : : E_EXIST = = nError2 ) ) ;
2003-04-17 07:34:31 +00:00
}
void createTempFile_002 ( )
{
2003-11-18 15:38:22 +00:00
bOK = sal_False ;
2004-05-03 07:57:00 +00:00
nError1 = FileBase : : createTempFile ( pUStr_DirURL , pHandle , pUStr_FileURL ) ;
2003-05-27 13:19:09 +00:00
: : osl : : File testFile ( * pUStr_FileURL ) ;
nError2 = testFile . open ( OpenFlag_Create ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " createTempFile function: create a temp file, but it does not exist " ,
( osl : : FileBase : : E_None = = nError1 ) & & ( pHandle ! = NULL ) & &
( osl : : FileBase : : E_EXIST = = nError2 ) ) ;
//check file if have the write permission
if ( osl : : FileBase : : E_EXIST = = nError2 ) {
bOK = ifFileCanWrite ( * pUStr_FileURL ) ;
2003-05-27 13:19:09 +00:00
osl_closeFile ( * pHandle ) ;
deleteTestFile ( * pUStr_FileURL ) ;
}
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for open and write access rights, in (W32), it did not have write access right, but it should be writtenable. " ,
2003-05-27 13:19:09 +00:00
( sal_True = = bOK ) ) ;
}
void createTempFile_003 ( )
{
2004-05-03 07:57:00 +00:00
nError1 = FileBase : : createTempFile ( pUStr_DirURL , pHandle , 0 ) ;
2003-11-18 15:38:22 +00:00
//the temp file will be removed when return from createTempFile
bOK = ( pHandle ! = NULL & & pHandle ! = 0 ) ;
2003-05-27 13:19:09 +00:00
if ( sal_True = = bOK )
osl_closeFile ( * pHandle ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for createTempFile function: set pUStrFileURL to 0 to let it remove the file after call. " ,
2003-11-18 15:38:22 +00:00
( : : osl : : FileBase : : E_None = = nError1 ) & & ( sal_True = = bOK ) ) ;
}
void createTempFile_004 ( )
{
2004-05-03 07:57:00 +00:00
nError1 = FileBase : : createTempFile ( pUStr_DirURL , 0 , pUStr_FileURL ) ;
2003-11-18 15:38:22 +00:00
bOK = ( pUStr_FileURL ! = 0 ) ;
: : osl : : File testFile ( * pUStr_FileURL ) ;
nError2 = testFile . open ( OpenFlag_Create ) ;
deleteTestFile ( * pUStr_FileURL ) ;
CPPUNIT_ASSERT_MESSAGE ( " createTempFile function: create a temp file, but it does not exist " ,
( osl : : FileBase : : E_None = = nError1 ) & & ( osl : : FileBase : : E_EXIST = = nError2 ) & & ( sal_True = = bOK ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( createTempFile ) ;
CPPUNIT_TEST ( createTempFile_001 ) ;
CPPUNIT_TEST ( createTempFile_002 ) ;
2003-05-27 13:19:09 +00:00
CPPUNIT_TEST ( createTempFile_003 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_TEST ( createTempFile_004 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class createTempFile
// -----------------------------------------------------------------------------
2003-10-06 12:40:17 +00:00
#if 0 //~ this function has been deprecated.
2003-05-27 13:19:09 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : getCanonicalName , " osl_FileBase " ) ;
2003-10-06 12:40:17 +00:00
# endif
2003-05-27 13:19:09 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : getAbsoluteFileURL , " osl_FileBase " ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : SystemPath_FileURL , " osl_FileBase " ) ;
// CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getFileURLFromSystemPath, "osl_FileBase" );
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : searchFileURL , " osl_FileBase " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : getTempDirURL , " osl_FileBase " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileBase : : createTempFile , " osl_FileBase " ) ;
} // namespace osl_FileBase
//------------------------------------------------------------------------
// Beginning of the test cases for VolumeDevice class
//------------------------------------------------------------------------
2003-10-06 12:40:17 +00:00
#if 0 //~ this Class has been deprecated
2003-04-17 07:34:31 +00:00
namespace osl_VolumeDevice
{
//---------------------------------------------------------------------
// testing the method
// VolumeDevice() : _aHandle( NULL )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
: : osl : : VolumeDevice aVolumeDevice ;
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
}
void tearDown ( )
{
}
// test code.
void ctors_001 ( )
{
: : osl : : VolumeDevice aVolumeDevice1 ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: Constructor for VolumeDevice with no args. " ,
( osl : : FileBase : : E_None ! = aVolumeDevice1 . automount ( ) ) & &
( osl : : FileBase : : E_None ! = aVolumeDevice1 . unmount ( ) ) & &
( aNullURL . equals ( aVolumeDevice1 . getMountPath ( ) ) ) ) ;
}
void ctors_002 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( VolumeInfoMask_Attributes ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aRootURL , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
: : osl : : VolumeDevice aVolumeDevice1 ( aVolumeInfo . getDeviceHandle ( ) ) ;
sal_Bool bOk = compareFileName ( aNullURL , aVolumeDevice1 . getMountPath ( ) ) ;
2003-05-27 13:19:09 +00:00
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). " ,
2003-04-17 07:34:31 +00:00
sal_False = = bOk ) ;
}
void ctors_003 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( VolumeInfoMask_Attributes ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aRootURL , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
: : osl : : VolumeDevice aVolumeDevice1 = aVolumeInfo . getDeviceHandle ( ) ;
sal_Bool bOk = compareFileName ( aNullURL , aVolumeDevice1 . getMountPath ( ) ) ;
2003-05-27 13:19:09 +00:00
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). " ,
2003-04-17 07:34:31 +00:00
sal_False = = bOk ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST ( ctors_002 ) ;
CPPUNIT_TEST ( ctors_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline RC automount()
//---------------------------------------------------------------------
class automount : public CppUnit : : TestFixture
{
: : osl : : VolumeDevice aVolumeDevice ;
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
}
void tearDown ( )
{
}
// test code.
void automount_001 ( )
{
: : osl : : VolumeDevice aVolumeDevice1 ;
nError1 = aVolumeDevice1 . automount ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for automount function: invalid parameter. " ,
( osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void automount_002 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( VolumeInfoMask_Attributes ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL2 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
: : osl : : VolumeDevice aVolumeDevice1 ( aVolumeInfo . getDeviceHandle ( ) ) ;
nError1 = aVolumeDevice1 . unmount ( ) ;
nError1 = aVolumeDevice1 . automount ( ) ;
2003-05-27 13:19:09 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for automount function: this test is not implemented yet, it did not pass in (UNX), (W32). " ,
2003-04-17 07:34:31 +00:00
( osl : : FileBase : : E_None = = nError1 ) ) ;
}
CPPUNIT_TEST_SUITE ( automount ) ;
CPPUNIT_TEST ( automount_001 ) ;
CPPUNIT_TEST ( automount_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class automount
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeDevice : : ctors , " osl_VolumeDevice " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeDevice : : automount , " osl_VolumeDevice " ) ;
} // namespace osl_VolumeDevice
2003-10-06 12:40:17 +00:00
# endif
2003-04-17 07:34:31 +00:00
//------------------------------------------------------------------------
// Beginning of the test cases for VolumeInfo class
//------------------------------------------------------------------------
namespace osl_VolumeInfo
{
//---------------------------------------------------------------------
// testing the method
// VolumeInfo( sal_uInt32 nMask ): _nMask( nMask )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : VolumeDevice aVolumeDevice1 ;
public :
// initialization
void setUp ( )
{
}
void tearDown ( )
{
}
// test code.
void ctors_001 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( 0 ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aRootURL , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_uInt64 uiTotalSpace = aVolumeInfo . getTotalSpace ( ) ;
sal_uInt32 uiMaxPathLength = aVolumeInfo . getMaxPathLength ( ) ;
aUStr = aVolumeInfo . getFileSystemName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: mask is empty " ,
( 0 = = uiTotalSpace ) & &
( 0 = = uiMaxPathLength ) & &
sal_True = = compareFileName ( aUStr , aNullURL ) ) ;
}
2003-05-27 13:19:09 +00:00
# if ( defined UNX ) || ( defined OS2 )
2003-04-17 07:34:31 +00:00
void ctors_002 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( VolumeInfoMask_TotalSpace |
VolumeInfoMask_UsedSpace |
VolumeInfoMask_FileSystemName ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL4 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
//CPPUNIT_ASSERT( aVolumeInfo.isValid( mask ) );
sal_uInt64 uiTotalSpace = aVolumeInfo . getTotalSpace ( ) ;
sal_uInt64 uiUsedSpace = aVolumeInfo . getUsedSpace ( ) ;
aUStr = aVolumeInfo . getFileSystemName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: mask is specified as certain valid fields, and get the masked fields " ,
( 0 ! = uiTotalSpace ) & &
( 0 ! = uiUsedSpace ) & &
sal_True = = compareFileName ( aUStr , " nfs " ) ) ;
}
2003-11-18 15:38:22 +00:00
# else /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
2003-05-27 13:19:09 +00:00
void ctors_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: mask is specified as certain valid fields, and get the masked fields( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-04-17 07:34:31 +00:00
void ctors_003 ( )
{
sal_Int32 mask1 = VolumeInfoMask_FreeSpace ;
: : osl : : VolumeInfo aVolumeInfo1 ( mask1 ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aRootURL , aVolumeInfo1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo1 . isValid ( mask1 ) ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_uInt64 uiTotalSpace1 = aVolumeInfo1 . getTotalSpace ( ) ;
aUStr = aVolumeInfo1 . getFileSystemName ( ) ;
sal_Int32 mask2 = VolumeInfoMask_TotalSpace ;
: : osl : : VolumeInfo aVolumeInfo2 ( mask2 ) ;
nError2 = : : osl : : Directory : : getVolumeInfo ( aRootURL , aVolumeInfo2 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo2 . isValid ( mask2 ) ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError2 ) ;
sal_uInt64 uiTotalSpace2 = aVolumeInfo2 . getTotalSpace ( ) ;
2003-05-27 13:19:09 +00:00
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) " ,
2003-04-17 07:34:31 +00:00
( 0 = = uiTotalSpace1 ) & & ( 0 ! = uiTotalSpace2 ) & &
sal_True = = compareFileName ( aUStr , aNullURL ) ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST ( ctors_002 ) ;
CPPUNIT_TEST ( ctors_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool isValid( sal_uInt32 nMask ) const
//---------------------------------------------------------------------
class isValid : public CppUnit : : TestFixture
{
: : osl : : VolumeDevice aVolumeDevice ;
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
}
void tearDown ( )
{
}
// test code.
void isValid_001 ( )
{
sal_Int32 mask = 0 ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL4 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isValid function: no fields specified. " ,
sal_True = = aVolumeInfo . isValid ( mask ) ) ;
}
2003-05-27 13:19:09 +00:00
# if ( defined UNX ) || ( defined OS2 )
2003-04-17 07:34:31 +00:00
void isValid_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes | VolumeInfoMask_TotalSpace | osl_VolumeInfo_Mask_UsedSpace |
osl_VolumeInfo_Mask_FreeSpace | osl_VolumeInfo_Mask_MaxNameLength |
osl_VolumeInfo_Mask_MaxPathLength | osl_VolumeInfo_Mask_FileSystemName ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL4 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isValid function: all valid fields specified for a nfs volume. " ,
sal_True = = aVolumeInfo . isValid ( mask ) ) ;
}
2003-11-18 15:38:22 +00:00
# else /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
2003-05-27 13:19:09 +00:00
void isValid_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for isValid function: all valid fields specified for a nfs volume.( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-04-17 07:34:31 +00:00
void isValid_003 ( )
{
: : osl : : VolumeDevice aVolumeDevice1 ;
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk1 = aVolumeInfo . isValid ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL2 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk2 = aVolumeInfo . isValid ( mask ) ;
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 " ,
( sal_True = = bOk1 ) & & ( sal_True = = bOk2 ) ) ;
}
CPPUNIT_TEST_SUITE ( isValid ) ;
CPPUNIT_TEST ( isValid_001 ) ;
CPPUNIT_TEST ( isValid_002 ) ;
CPPUNIT_TEST ( isValid_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class isValid
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getRemoteFlag() const
//---------------------------------------------------------------------
class getRemoteFlag : public CppUnit : : TestFixture
{
: : osl : : VolumeDevice aVolumeDevice ;
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// test code.
void getRemoteFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRemoteFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getRemoteFlag function: get a volume device which is not remote. " ,
( sal_False = = bOk ) ) ;
}
# if ( defined UNX ) || ( defined OS2 ) //remote Volume is different in Solaris and Windows
void getRemoteFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL4 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRemoteFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getRemoteFlag function: get a volume device which is remote( Solaris version ). " ,
( sal_True = = bOk ) ) ;
}
# else //Windows version
void getRemoteFlag_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getRemoteFlag function: get a volume device which is remote( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getRemoteFlag ) ;
CPPUNIT_TEST ( getRemoteFlag_001 ) ;
CPPUNIT_TEST ( getRemoteFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getRemoteFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getRemoveableFlag() const
//---------------------------------------------------------------------
class getRemoveableFlag : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// test code.
void getRemoveableFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRemoveableFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getRemoveableFlag function: get a volume device which is not removable. " ,
sal_False = = bOk ) ;
}
void getRemoveableFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL2 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRemoveableFlag ( ) ;
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. " ,
sal_True = = bOk ) ;
}
CPPUNIT_TEST_SUITE ( getRemoveableFlag ) ;
CPPUNIT_TEST ( getRemoveableFlag_001 ) ;
CPPUNIT_TEST ( getRemoveableFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getRemoveableFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getCompactDiscFlag() const
//---------------------------------------------------------------------
class getCompactDiscFlag : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getCompactDiscFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getCompactDiscFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getCompactDiscFlag function: get a volume device which is not a cdrom. " ,
( sal_False = = bOk ) ) ;
}
void getCompactDiscFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL6 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getCompactDiscFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getCompactDiscFlag function: get a cdrom volume device flag, it did not pass. " ,
( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( getCompactDiscFlag ) ;
CPPUNIT_TEST ( getCompactDiscFlag_001 ) ;
CPPUNIT_TEST ( getCompactDiscFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getCompactDiscFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getFloppyDiskFlag() const
//---------------------------------------------------------------------
class getFloppyDiskFlag : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getFloppyDiskFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getFloppyDiskFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFloppyDiskFlag function: get a volume device which is not a floppy disk. " ,
( sal_False = = bOk ) ) ;
}
void getFloppyDiskFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL2 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getFloppyDiskFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFloppyDiskFlag function: get a floppy volume device flag, it did not pass. " ,
( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( getFloppyDiskFlag ) ;
CPPUNIT_TEST ( getFloppyDiskFlag_001 ) ;
CPPUNIT_TEST ( getFloppyDiskFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFloppyDiskFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getFixedDiskFlag() const
//---------------------------------------------------------------------
class getFixedDiskFlag : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getFixedDiskFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL2 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getFixedDiskFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFixedDiskFlag function: get a volume device which is not a fixed disk. " ,
( sal_False = = bOk ) ) ;
}
void getFixedDiskFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getFixedDiskFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFixedDiskFlag function: get a fixed disk volume device flag, it did not pass. " ,
( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( getFixedDiskFlag ) ;
CPPUNIT_TEST ( getFixedDiskFlag_001 ) ;
CPPUNIT_TEST ( getFixedDiskFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFixedDiskFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool getRAMDiskFlag() const
//---------------------------------------------------------------------
class getRAMDiskFlag : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getRAMDiskFlag_001 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRAMDiskFlag ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getRAMDiskFlag function: get a volume device which is not a RAM disk. " ,
( sal_False = = bOk ) ) ;
}
void getRAMDiskFlag_002 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = aVolumeInfo . getRAMDiskFlag ( ) ;
2003-05-27 13:19:09 +00:00
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). " ,
2003-04-17 07:34:31 +00:00
( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( getRAMDiskFlag ) ;
CPPUNIT_TEST ( getRAMDiskFlag_001 ) ;
CPPUNIT_TEST ( getRAMDiskFlag_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getRAMDiskFlag
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt64 getTotalSpace() const
//---------------------------------------------------------------------
class getTotalSpace : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getTotalSpace_001 ( )
{
sal_Int32 mask = VolumeInfoMask_TotalSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiTotalSpace = aVolumeInfo . getTotalSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getTotalSpace function: get total space of Fixed disk volume mounted on /, it should not be 0 " ,
0 ! = uiTotalSpace ) ;
}
2003-05-27 13:19:09 +00:00
# if defined( UNX )
void getTotalSpace_002 ( )
2003-04-17 07:34:31 +00:00
{
sal_Int32 mask = VolumeInfoMask_TotalSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL3 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiTotalSpace = aVolumeInfo . getTotalSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getTotalSpace function: get total space of /proc, it should be 0 " ,
0 = = uiTotalSpace ) ;
}
2003-11-18 15:38:22 +00:00
# else /// Windows version, in Windows, there is no /proc directory
2003-05-27 13:19:09 +00:00
void getTotalSpace_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getTotalSpace function:not applicable for /proc( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-04-17 07:34:31 +00:00
# if defined(SOLARIS)
void getTotalSpace_003 ( )
{
struct statvfs aStatFS ;
static const sal_Char name [ ] = " / " ;
memset ( & aStatFS , 0 , sizeof ( aStatFS ) ) ;
statvfs ( name , & aStatFS ) ;
sal_uInt64 TotalSpace = aStatFS . f_frsize * aStatFS . f_blocks ;
sal_Int32 mask = VolumeInfoMask_TotalSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiTotalSpace = aVolumeInfo . getTotalSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getTotalSpace function: get total space by hand, then compare with getTotalSpace, it did not pass " ,
uiTotalSpace = = TotalSpace ) ;
}
2003-11-18 15:38:22 +00:00
# else /// Windows version
2003-04-17 07:34:31 +00:00
void getTotalSpace_003 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getTotalSpace function:not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-05-27 13:19:09 +00:00
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( getTotalSpace ) ;
CPPUNIT_TEST ( getTotalSpace_001 ) ;
CPPUNIT_TEST ( getTotalSpace_002 ) ;
CPPUNIT_TEST ( getTotalSpace_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getTotalSpace
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt64 getFreeSpace() const
//---------------------------------------------------------------------
class getFreeSpace : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getFreeSpace_001 ( )
{
sal_Int32 mask = VolumeInfoMask_FreeSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiFreeSpace = aVolumeInfo . getFreeSpace ( ) ;
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 " ,
0 ! = uiFreeSpace ) ;
}
2003-05-27 13:19:09 +00:00
# if defined( UNX )
2003-04-17 07:34:31 +00:00
void getFreeSpace_002 ( )
{
sal_Int32 mask = VolumeInfoMask_FreeSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL3 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiFreeSpace = aVolumeInfo . getFreeSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFreeSpace function: get free space of /proc, it should be 0 " ,
0 = = uiFreeSpace ) ;
}
2003-11-18 15:38:22 +00:00
# else /// Windows version, in Windows, there is no /proc directory
2003-05-27 13:19:09 +00:00
void getFreeSpace_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getFreeSpace function: not applicable for /proc( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-04-17 07:34:31 +00:00
# if defined(SOLARIS)
void getFreeSpace_003 ( )
{
struct statvfs aStatFS ;
static const sal_Char name [ ] = " / " ;
memset ( & aStatFS , 0 , sizeof ( aStatFS ) ) ;
statvfs ( name , & aStatFS ) ;
sal_uInt64 FreeSpace = aStatFS . f_bfree * aStatFS . f_frsize ;
sal_Int32 mask = VolumeInfoMask_FreeSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiFreeSpace = aVolumeInfo . getFreeSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFreeSpace function: get free space by hand, then compare with getFreeSpace, it did not pass " ,
uiFreeSpace = = FreeSpace ) ;
}
# else //Windows version
void getFreeSpace_003 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getFreeSpace function: not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getFreeSpace ) ;
CPPUNIT_TEST ( getFreeSpace_001 ) ;
CPPUNIT_TEST ( getFreeSpace_002 ) ;
CPPUNIT_TEST ( getFreeSpace_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFreeSpace
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt64 getUsedSpace() const
//---------------------------------------------------------------------
class getUsedSpace : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getUsedSpace_001 ( )
{
sal_Int32 mask = VolumeInfoMask_UsedSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiUsedSpace = aVolumeInfo . getUsedSpace ( ) ;
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 " ,
0 ! = uiUsedSpace ) ;
}
2003-05-27 13:19:09 +00:00
# if defined( UNX )
2003-04-17 07:34:31 +00:00
void getUsedSpace_002 ( )
{
sal_Int32 mask = VolumeInfoMask_UsedSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL3 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiUsedSpace = aVolumeInfo . getUsedSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getUsedSpace function: get used space of /proc, it should be 0 " ,
0 = = uiUsedSpace ) ;
}
2003-05-27 13:19:09 +00:00
# else /// Windows version, in Windows, there is no /proc directory
void getUsedSpace_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getUsedSpace function: not applicable for /proc( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-04-17 07:34:31 +00:00
# if defined(SOLARIS)
void getUsedSpace_003 ( )
{
struct statvfs aStatFS ;
static const sal_Char name [ ] = " / " ;
memset ( & aStatFS , 0 , sizeof ( aStatFS ) ) ;
statvfs ( name , & aStatFS ) ;
sal_uInt64 UsedSpace = ( aStatFS . f_blocks - aStatFS . f_bavail ) * aStatFS . f_frsize ;
sal_Int32 mask = VolumeInfoMask_UsedSpace ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiUsedSpace = aVolumeInfo . getUsedSpace ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getUsedSpace function: get used space by hand, then compare with getUsedSpace, it did not pass " ,
uiUsedSpace = = UsedSpace ) ;
}
# else //Windows version
void getUsedSpace_003 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getUsedSpace function: not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getUsedSpace ) ;
CPPUNIT_TEST ( getUsedSpace_001 ) ;
CPPUNIT_TEST ( getUsedSpace_002 ) ;
CPPUNIT_TEST ( getUsedSpace_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getUsedSpace
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt32 getMaxNameLength() const
//---------------------------------------------------------------------
class getMaxNameLength : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getMaxNameLength_001 ( )
{
sal_Int32 mask = VolumeInfoMask_MaxNameLength ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt32 uiMaxNameLength = aVolumeInfo . getMaxNameLength ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxNameLength function: get max name length of Fixed disk volume mounted on /, it should not be 0 " ,
0 ! = uiMaxNameLength ) ;
}
# if ( defined UNX ) || ( defined OS2 )
void getMaxNameLength_002 ( )
{
struct statvfs aStatFS ;
static const sal_Char name [ ] = " / " ;
memset ( & aStatFS , 0 , sizeof ( aStatFS ) ) ;
statvfs ( name , & aStatFS ) ;
sal_uInt64 MaxNameLength = aStatFS . f_namemax ;
sal_Int32 mask = VolumeInfoMask_MaxNameLength ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiMaxNameLength = aVolumeInfo . getMaxNameLength ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxNameLength function: get max name length by hand, then compare with getMaxNameLength " ,
uiMaxNameLength = = MaxNameLength ) ;
}
# else //Windows version
void getMaxNameLength_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxNameLength function: not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getMaxNameLength ) ;
CPPUNIT_TEST ( getMaxNameLength_001 ) ;
CPPUNIT_TEST ( getMaxNameLength_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getMaxNameLength
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt32 getMaxPathLength() const
//---------------------------------------------------------------------
class getMaxPathLength : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getMaxPathLength_001 ( )
{
sal_Int32 mask = VolumeInfoMask_MaxPathLength ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt32 uiMaxPathLength = aVolumeInfo . getMaxPathLength ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxPathLength function: get max path length of Fixed disk volume mounted on /, it should not be 0 " ,
0 ! = uiMaxPathLength ) ;
}
# if ( defined UNX ) || ( defined OS2 )
void getMaxPathLength_002 ( )
{
sal_Int32 mask = VolumeInfoMask_MaxPathLength ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
sal_uInt64 uiMaxPathLength = aVolumeInfo . getMaxPathLength ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxPathLength function: get max path length by hand, then compare with getMaxPathLength " ,
uiMaxPathLength = = PATH_MAX ) ;
}
# else //Windows version
void getMaxPathLength_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getMaxPathLength function: not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getMaxPathLength ) ;
CPPUNIT_TEST ( getMaxPathLength_001 ) ;
CPPUNIT_TEST ( getMaxPathLength_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getMaxPathLength
//---------------------------------------------------------------------
// testing the method
// inline ::rtl::OUString getFileSystemName() const
//---------------------------------------------------------------------
class getFileSystemName : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getFileSystemName_001 ( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
aUStr = aVolumeInfo . getFileSystemName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileSystemName function: get file system name of Fixed disk volume mounted on /, it should not be empty string " ,
sal_False = = compareFileName ( aNullURL , aUStr ) ) ;
}
# if defined(SOLARIS)
void getFileSystemName_002 ( )
{
struct statvfs aStatFS ;
static const sal_Char name [ ] = " / " ;
memset ( & aStatFS , 0 , sizeof ( aStatFS ) ) ;
statvfs ( name , & aStatFS ) ;
sal_Char * astrFileSystemName = aStatFS . f_basetype ;
sal_Int32 mask = VolumeInfoMask_FileSystemName ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT ( sal_True = = aVolumeInfo . isValid ( mask ) ) ;
aUStr = aVolumeInfo . getFileSystemName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileSystemName function: get file system name by hand, then compare with getFileSystemName " ,
sal_True = = compareFileName ( aUStr , astrFileSystemName ) ) ;
}
# else //Windows version
void getFileSystemName_002 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getFileSystemName function: not implemented yet( Windows version ) " ,
1 = = 1 ) ;
}
# endif
CPPUNIT_TEST_SUITE ( getFileSystemName ) ;
CPPUNIT_TEST ( getFileSystemName_001 ) ;
CPPUNIT_TEST ( getFileSystemName_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileSystemName
//---------------------------------------------------------------------
// testing the method
// inline VolumeDevice getDeviceHandle() const
//---------------------------------------------------------------------
class getDeviceHandle : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 ;
public :
// test code.
void getDeviceHandle_001 ( )
{
: : osl : : VolumeInfo aVolumeInfo ( VolumeInfoMask_Attributes ) ;
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
CPPUNIT_ASSERT ( osl : : FileBase : : E_None = = nError1 ) ;
: : osl : : VolumeDevice aVolumeDevice1 ( aVolumeInfo . getDeviceHandle ( ) ) ;
sal_Bool bOk = compareFileName ( aNullURL , aVolumeDevice1 . getMountPath ( ) ) ;
2003-05-27 13:19:09 +00:00
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). " ,
2003-04-17 07:34:31 +00:00
( sal_False = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( getDeviceHandle ) ;
CPPUNIT_TEST ( getDeviceHandle_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getDeviceHandle
// -----------------------------------------------------------------------------
2003-10-06 12:40:17 +00:00
/*CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::ctors, "osl_VolumeInfo" );
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : isValid , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getRemoteFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getRemoveableFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getCompactDiscFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getFloppyDiskFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getFixedDiskFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getRAMDiskFlag , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getTotalSpace , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getFreeSpace , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getUsedSpace , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getMaxNameLength , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getMaxPathLength , " osl_VolumeInfo " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getFileSystemName , " osl_VolumeInfo " ) ;
2003-10-06 12:40:17 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_VolumeInfo : : getDeviceHandle , " osl_VolumeInfo " ) ; */
2003-04-17 07:34:31 +00:00
} // namespace osl_VolumeInfo
//------------------------------------------------------------------------
// Beginning of the test cases for VolumeDevice class
//------------------------------------------------------------------------
namespace osl_FileStatus
{
//---------------------------------------------------------------------
// testing the method
// FileStatus( sal_uInt32 nMask ): _nMask( nMask )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
: : std : : auto_ptr < Directory > pDir ( new Directory ( aTmpName3 ) ) ;
nError1 = pDir - > open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = pDir - > getNextItem ( rItem , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2004-05-03 07:57:00 +00:00
pDir - > close ( ) ;
/*
Directory aDir ( aTmpName3 ) ;
nError1 = aDir . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = aDir . getNextItem ( rItem , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
aDir . close ( ) ;
*/
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void ctors_001 ( )
{
: : osl : : FileStatus rFileStatus ( FileStatusMask_All ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
aUStr = rFileStatus . getFileName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: mask all and see the file name " ,
sal_True = = compareFileName ( aUStr , aTmpName2 ) ) ;
}
void ctors_002 ( )
{
: : osl : : FileStatus rFileStatus ( 0 ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
aUStr = rFileStatus . getFileName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: mask is empty " ,
sal_True = = compareFileName ( aUStr , aNullURL ) ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST ( ctors_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool isValid( sal_uInt32 nMask ) const
//---------------------------------------------------------------------
class isValid : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : Directory * pDir ;
: : osl : : DirectoryItem rItem_file , rItem_link ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
pDir = new Directory ( aTmpName3 ) ;
2004-05-03 07:57:00 +00:00
//::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) );
: : osl : : FileBase : : RC nError1 = pDir - > open ( ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = pDir - > getNextItem ( rItem_file , 1 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
2004-05-03 07:57:00 +00:00
: : osl : : FileBase : : RC nError1 = pDir - > close ( ) ;
delete pDir ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-04-17 07:34:31 +00:00
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void isValid_001 ( )
{
sal_uInt32 mask = 0 ;
: : osl : : FileStatus rFileStatus ( mask ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = rItem_file . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
sal_Bool bOk = rFileStatus . isValid ( mask ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isValid function: no fields specified " ,
( sal_True = = bOk ) ) ;
}
2003-12-11 11:30:40 +00:00
void check_FileStatus ( : : osl : : FileStatus const & _aStatus )
{
rtl : : OString sStat ;
if ( _aStatus . isValid ( FileStatusMask_Type ) )
{
sStat + = " type " ;
}
if ( _aStatus . isValid ( FileStatusMask_Attributes ) )
{
sStat + = " attributes " ;
}
if ( _aStatus . isValid ( FileStatusMask_CreationTime ) )
{
sStat + = " ctime " ;
}
if ( _aStatus . isValid ( FileStatusMask_AccessTime ) )
{
sStat + = " atime " ;
}
if ( _aStatus . isValid ( FileStatusMask_ModifyTime ) )
{
sStat + = " mtime " ;
}
if ( _aStatus . isValid ( FileStatusMask_FileSize ) )
{
sStat + = " filesize " ;
}
if ( _aStatus . isValid ( FileStatusMask_FileName ) )
{
sStat + = " filename " ;
}
if ( _aStatus . isValid ( FileStatusMask_FileURL ) )
{
sStat + = " fileurl " ;
}
2004-03-19 13:48:16 +00:00
t_print ( " mask: %s \n " , sStat . getStr ( ) ) ;
2003-12-11 11:30:40 +00:00
}
2003-04-17 07:34:31 +00:00
void isValid_002 ( )
{
2003-11-18 15:38:22 +00:00
createTestFile ( aTmpName6 ) ;
sal_uInt32 mask_file = ( FileStatusMask_Type | FileStatusMask_Attributes |
2003-04-17 07:34:31 +00:00
FileStatusMask_CreationTime | FileStatusMask_AccessTime |
FileStatusMask_ModifyTime | FileStatusMask_FileSize |
2003-11-18 15:38:22 +00:00
FileStatusMask_FileName | FileStatusMask_FileURL ) ;
2003-04-17 07:34:31 +00:00
: : osl : : FileStatus rFileStatus ( mask_file ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem_file ) ;
2003-04-17 07:34:31 +00:00
nError1 = rItem_file . getFileStatus ( rFileStatus ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
// LLA: this is wrong, we never should try to check on all masks
// only on one.
// Second, it's not a bug, if a value is not valid, it's an unhandled feature.
// sal_Bool bOk = rFileStatus.isValid( mask_file );
check_FileStatus ( rFileStatus ) ;
2003-11-18 15:38:22 +00:00
deleteTestFile ( aTmpName6 ) ;
2003-12-11 11:30:40 +00:00
// 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",
// ( sal_True == bOk ) );
2003-04-17 07:34:31 +00:00
}
2003-11-18 15:38:22 +00:00
//Link is not defined in Windows, and on Linux, we can not get the directory item of the link file
2003-12-11 11:30:40 +00:00
// LLA: we have to differ to filesystems, normal filesystems support links (EXT2, ...)
// castrated filesystems don't (FAT, FAT32)
// Windows NT NTFS support links, but the windows api don't :-(
2003-04-17 07:34:31 +00:00
void isValid_003 ( )
{
2003-11-18 15:38:22 +00:00
# if defined ( UNX )
2004-03-19 13:48:16 +00:00
// ::osl::FileBase::RC nError;
2003-04-17 07:34:31 +00:00
sal_Int32 fd ;
2003-10-06 12:40:17 +00:00
: : rtl : : OUString aUStr_LnkFileSys ( aTempDirectorySys ) , aUStr_SrcFileSys ( aTempDirectorySys ) ;
( ( aUStr_LnkFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /tmpdir/link.file " ) ;
( ( aUStr_SrcFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /tmpdir/tmpname " ) ;
2003-12-11 11:30:40 +00:00
rtl : : OString strLinkFileName ;
rtl : : OString strSrcFileName ;
strLinkFileName = OUStringToOString ( aUStr_LnkFileSys , RTL_TEXTENCODING_ASCII_US ) ;
strSrcFileName = OUStringToOString ( aUStr_SrcFileSys , RTL_TEXTENCODING_ASCII_US ) ;
2003-10-06 12:40:17 +00:00
//create a link file and link it to file "/tmp/PID/tmpdir/tmpname"
2003-12-11 11:30:40 +00:00
fd = symlink ( strSrcFileName . getStr ( ) , strLinkFileName . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( fd = = 0 ) ;
2003-12-11 11:30:40 +00:00
2003-11-18 15:38:22 +00:00
// testDirectory is "/tmp/PID/tmpdir/"
: : osl : : Directory testDirectory ( aTmpName3 ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = testDirectory . open ( ) ;
2003-11-18 15:38:22 +00:00
: : rtl : : OUString aFileName = : : rtl : : OUString : : createFromAscii ( " link.file " ) ;
sal_Bool bOk = sal_False ;
while ( 1 ) {
nError1 = testDirectory . getNextItem ( rItem_link , 4 ) ;
if ( : : osl : : FileBase : : E_None = = nError1 ) {
sal_uInt32 mask_link = FileStatusMask_FileName | FileStatusMask_LinkTargetURL ;
: : osl : : FileStatus rFileStatus ( mask_link ) ;
rItem_link . getFileStatus ( rFileStatus ) ;
//printFileName( rFileStatus.getFileName( ) );
if ( compareFileName ( rFileStatus . getFileName ( ) , aFileName ) = = sal_True )
{
2004-03-19 13:48:16 +00:00
//t_print("find the link file");
2003-11-18 15:38:22 +00:00
if ( sal_True = = rFileStatus . isValid ( FileStatusMask_LinkTargetURL ) )
{
bOk = sal_True ;
break ;
}
}
}
else
break ;
} ;
2003-04-17 07:34:31 +00:00
2003-10-06 12:40:17 +00:00
fd = remove ( strLinkFileName ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( fd = = 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isValid function: link file, check for LinkTargetURL " ,
( sal_True = = bOk ) ) ;
# endif
2003-11-18 15:38:22 +00:00
}
2003-04-17 07:34:31 +00:00
void isValid_004 ( )
{
sal_uInt32 mask_file_all = FileStatusMask_All ;
: : osl : : FileStatus rFileStatus_all ( mask_file_all ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = rItem_file . getFileStatus ( rFileStatus_all ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
check_FileStatus ( rFileStatus_all ) ;
// LLA: this is wrong
// sal_Bool bOk1 = rFileStatus_all.isValid( mask_file_all );
2003-04-17 07:34:31 +00:00
sal_uInt32 mask_file_val = FileStatusMask_Validate ;
: : osl : : FileStatus rFileStatus_val ( mask_file_val ) ;
nError1 = rItem_file . getFileStatus ( rFileStatus_val ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
// sal_Bool bOk2 = rFileStatus_val.isValid( mask_file_val );
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
check_FileStatus ( rFileStatus_val ) ;
// 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).",
// ( sal_False == bOk1 ) && ( sal_True == bOk2 ) );
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( isValid ) ;
CPPUNIT_TEST ( isValid_001 ) ;
CPPUNIT_TEST ( isValid_002 ) ;
CPPUNIT_TEST ( isValid_003 ) ;
CPPUNIT_TEST ( isValid_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline Type getFileType() const
//---------------------------------------------------------------------
class getFileType : public CppUnit : : TestFixture
{
: : rtl : : OUString aUStr ;
: : osl : : FileBase : : RC nError1 , nError2 ;
2003-12-11 11:30:40 +00:00
: : osl : : DirectoryItem m_aItem_1 , m_aItem_2 , m_aVolumeItem , m_aFifoItem ;
: : osl : : DirectoryItem m_aLinkItem , m_aSocketItem , m_aSpecialItem ;
2003-04-17 07:34:31 +00:00
public :
// initialization
void setUp ( )
{
// create a tempfile: $TEMP/tmpdir/tmpname.
// a tempdirectory: $TEMP/tmpdir/tmpdir.
2003-11-18 15:38:22 +00:00
// use $ROOT/staroffice as volume ---> use dev/fd as volume.
2003-04-17 07:34:31 +00:00
// and get their directory item.
createTestDirectory ( aTmpName3 ) ;
2004-03-19 13:48:16 +00:00
//printFileName( aTmpName2);
2003-04-17 07:34:31 +00:00
createTestFile ( aTmpName3 , aTmpName2 ) ;
createTestDirectory ( aTmpName3 , aTmpName1 ) ;
: : std : : auto_ptr < Directory > pDir ( new Directory ( aTmpName3 ) ) ;
nError1 = pDir - > open ( ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " open aTmpName3 failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-11-18 15:38:22 +00:00
//getNextItem can not assure which item retrieved
2004-05-03 07:57:00 +00:00
nError1 = pDir - > getNextItem ( m_aItem_1 , 1 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " get first item failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
2004-05-03 07:57:00 +00:00
nError1 = pDir - > getNextItem ( m_aItem_2 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " get second item failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2004-05-03 07:57:00 +00:00
pDir - > close ( ) ;
2004-03-19 13:48:16 +00:00
//mindy: failed on my RH9,so removed temporaly
//nError1 = ::osl::DirectoryItem::get( aVolURL2, m_aVolumeItem );
//CPPUNIT_ASSERT_MESSAGE("get volume item failed!", ::osl::FileBase::E_None == nError1 );
2003-12-11 11:30:40 +00:00
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
// remove all in $TEMP/tmpdir.
deleteTestDirectory ( aTmpName3 , aTmpName1 ) ;
deleteTestFile ( aTmpName3 , aTmpName2 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void getFileType_001 ( )
{
2003-11-18 15:38:22 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type | FileStatusMask_FileName ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aItem_1 . getFileStatus ( rFileStatus ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " getFileStatus failed " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
check_FileType ( rFileStatus ) ;
}
void check_FileType ( osl : : FileStatus const & _rFileStatus )
{
2003-11-18 15:38:22 +00:00
sal_Bool bOK = sal_False ;
2003-12-11 11:30:40 +00:00
if ( _rFileStatus . isValid ( FileStatusMask_FileName ) )
{
rtl : : OUString suFilename = _rFileStatus . getFileName ( ) ;
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
if ( _rFileStatus . isValid ( FileStatusMask_Type ) )
{
osl : : FileStatus : : Type eType = _rFileStatus . getFileType ( ) ;
if ( compareFileName ( suFilename , aTmpName2 ) = = sal_True )
{
// regular
bOK = ( eType = = osl : : FileStatus : : Regular ) ;
}
if ( compareFileName ( suFilename , aTmpName1 ) = = sal_True )
{
// directory
bOK = ( eType = = : : osl : : FileStatus : : Directory ) ;
}
CPPUNIT_ASSERT_MESSAGE ( " test for getFileType function: " ,
2003-11-18 15:38:22 +00:00
( bOK = = sal_True ) ) ;
2003-04-17 07:34:31 +00:00
}
2003-12-11 11:30:40 +00:00
}
// LLA: it's not a bug, if a FileStatus not exist, so no else
}
2003-04-17 07:34:31 +00:00
void getFileType_002 ( )
{
2003-11-18 15:38:22 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type | FileStatusMask_FileName ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aItem_2 . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
check_FileType ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
}
void getFileType_003 ( )
{
2003-12-11 11:30:40 +00:00
#if 0
// LLA: this have to be discussed.
2003-04-17 07:34:31 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aVolumeItem . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
if ( rFileStatus . isValid ( FileStatusMask_Type ) )
{
osl : : FileStatus : : Type eType = rFileStatus . getFileType ( ) ;
2003-05-27 13:19:09 +00:00
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). " ,
2003-12-11 11:30:40 +00:00
( eType = = : : osl : : FileStatus : : Volume ) ) ;
}
# endif
2003-04-17 07:34:31 +00:00
}
2003-12-11 11:30:40 +00:00
2003-04-17 07:34:31 +00:00
void getFileType_004 ( )
{
2003-12-11 11:30:40 +00:00
# if ( defined UNX ) || ( defined OS2 ) //Fifo creation is differ in Windows
2003-04-17 07:34:31 +00:00
//create a fifo in $ROOT/tmp/tmpdir, get its DirectoryItem.
2004-03-19 13:48:16 +00:00
rtl : : OString strFifoSys ;
strFifoSys = OUStringToOString ( aFifoSys , RTL_TEXTENCODING_ASCII_US ) ;
: : rtl : : OUString aFifoURL ;
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
int fd = mkfifo ( strFifoSys . getStr ( ) , O_RDWR | O_CREAT ) ;
CPPUNIT_ASSERT_MESSAGE ( " mkfifo failed! " , fd = = 0 ) ;
2003-04-17 07:34:31 +00:00
: : osl : : FileBase : : getFileURLFromSystemPath ( aFifoSys , aFifoURL ) ;
2004-03-19 13:48:16 +00:00
2003-12-11 11:30:40 +00:00
nError1 = : : osl : : DirectoryItem : : get ( aFifoURL , m_aFifoItem ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " get item failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-04-17 07:34:31 +00:00
//check for File type
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aFifoItem . getFileStatus ( rFileStatus ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " get Status failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-04-17 07:34:31 +00:00
//delete fifo
nError1 = : : osl : : File : : remove ( aFifoURL ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_ASSERT_MESSAGE ( " remove file failed! " , : : osl : : FileBase : : E_None = = nError1 ) ;
2003-04-17 07:34:31 +00:00
2003-12-11 11:30:40 +00:00
if ( rFileStatus . isValid ( FileStatusMask_Type ) )
{
osl : : FileStatus : : Type eType = rFileStatus . getFileType ( ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getFileType function: Fifo, Solaris version " ,
2003-12-11 11:30:40 +00:00
( eType = = : : osl : : FileStatus : : Fifo ) ) ;
2003-04-17 07:34:31 +00:00
}
# endif
2003-12-11 11:30:40 +00:00
}
2003-04-17 07:34:31 +00:00
2004-01-05 20:20:14 +00:00
/*
* LLA : removed , m_aSocketItem is wrong initialised .
*/
// LLA: void getFileType_005( )
// LLA: {
// LLA: #if defined ( SOLARIS ) //Socket file may differ in Windows
// LLA: // nError1 = ::osl::DirectoryItem::get( aTypeURL1, m_aSocketItem );
// LLA: nError1 = ::osl::DirectoryItem::get( rtl::OUString::createFromAscii("/dev/null"), m_aSocketItem );
// LLA: printError(nError1);
// LLA: CPPUNIT_ASSERT_MESSAGE("get Socket type file failed", ::osl::FileBase::E_None == nError1 );
// LLA:
// LLA: //check for File type
// LLA: ::osl::FileStatus rFileStatus( FileStatusMask_Type );
// LLA:
// LLA: nError1 = m_aSocketItem.getFileStatus( rFileStatus );
// LLA: CPPUNIT_ASSERT_MESSAGE("getFileStatus failed", ::osl::FileBase::E_None == nError1 );
// LLA:
// LLA: if (rFileStatus.isValid( FileStatusMask_Type ))
// LLA: {
// LLA: osl::FileStatus::Type eType = rFileStatus.getFileType( );
// LLA: printFileType(eType);
// LLA: CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Socket, Solaris version ",
// LLA: ( eType == ::osl::FileStatus::Socket ) );
// LLA: }
// LLA: #endif
// LLA: }
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
// deprecated since there is a same case Directory::getNextItem_004
/*#if defined 0 //( UNX ) //( SOLARIS ) //Link file is not defined in Windows
2003-04-17 07:34:31 +00:00
void getFileType_006 ( )
{
2003-12-11 11:30:40 +00:00
nError1 = : : osl : : DirectoryItem : : get ( aTypeURL3 , m_aLinkItem ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check for File type
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aLinkItem . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getFileType function: Link, UNX version " ,
2003-04-17 07:34:31 +00:00
( : : osl : : FileStatus : : Link = = rFileStatus . getFileType ( ) ) ) ;
}
2003-11-18 15:38:22 +00:00
# endif * /
2003-04-17 07:34:31 +00:00
void getFileType_007 ( )
{
2003-12-11 11:30:40 +00:00
# if defined ( SOLARIS ) //Special file is differ in Windows
nError1 = : : osl : : DirectoryItem : : get ( aTypeURL2 , m_aSpecialItem ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check for File type
: : osl : : FileStatus rFileStatus ( FileStatusMask_Type ) ;
2003-12-11 11:30:40 +00:00
nError1 = m_aSpecialItem . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-12-11 11:30:40 +00:00
if ( rFileStatus . isValid ( FileStatusMask_Type ) )
{
osl : : FileStatus : : Type eType = rFileStatus . getFileType ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileType function: Special, Solaris version " ,
( eType = = : : osl : : FileStatus : : Special ) ) ;
}
2003-04-17 07:34:31 +00:00
# endif
2003-12-11 11:30:40 +00:00
}
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( getFileType ) ;
CPPUNIT_TEST ( getFileType_001 ) ;
CPPUNIT_TEST ( getFileType_002 ) ;
CPPUNIT_TEST ( getFileType_003 ) ;
CPPUNIT_TEST ( getFileType_004 ) ;
2004-01-05 20:20:14 +00:00
// LLA: CPPUNIT_TEST( getFileType_005 );
2003-11-18 15:38:22 +00:00
//CPPUNIT_TEST( getFileType_006 );
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST ( getFileType_007 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileType
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt64 getAttributes() const
//---------------------------------------------------------------------
class getAttributes : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL , aTypeURL_Hid ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem , rItem_hidden ;
public :
// initialization
void setUp ( )
{
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
2003-10-06 12:40:17 +00:00
aTypeURL_Hid = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL_Hid , aHidURL1 ) ;
createTestFile ( aTypeURL_Hid ) ;
nError = : : osl : : DirectoryItem : : get ( aTypeURL_Hid , rItem_hidden ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
}
void tearDown ( )
{
deleteTestFile ( aTypeURL ) ;
deleteTestFile ( aTypeURL_Hid ) ;
}
// test code.
2003-11-18 15:38:22 +00:00
# if ( defined UNX ) || ( defined OS2 )
//windows only 3 file attributes: normal, readonly, hidden
2003-04-17 07:34:31 +00:00
void getAttributes_001 ( )
{
changeFileMode ( aTypeURL , S_IRUSR | S_IRGRP | S_IROTH ) ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getAttributes function: ReadOnly, GrpRead, OwnRead, OthRead( UNX version ) " ,
2003-04-17 07:34:31 +00:00
( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) = =
rFileStatus . getAttributes ( ) ) ;
}
# else //Windows version
void getAttributes_001 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getAttributes function: ReadOnly, GrpRead, OwnRead, OthRead( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-11-18 15:38:22 +00:00
2003-04-17 07:34:31 +00:00
void getAttributes_002 ( )
{
2003-11-18 15:38:22 +00:00
# if ( defined UNX ) || ( defined OS2 )
2003-04-17 07:34:31 +00:00
changeFileMode ( aTypeURL , S_IXUSR | S_IXGRP | S_IXOTH ) ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
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 ) " ,
( Attribute_ReadOnly | Attribute_Executable | Attribute_GrpExe | Attribute_OwnExe | Attribute_OthExe ) = =
rFileStatus . getAttributes ( ) ) ;
# endif
2003-11-18 15:38:22 +00:00
}
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
# if ( defined UNX ) || ( defined OS2 )
2003-04-17 07:34:31 +00:00
void getAttributes_003 ( )
{
changeFileMode ( aTypeURL , S_IWUSR | S_IWGRP | S_IWOTH ) ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getAttributes function: GrpWrite, OwnWrite, OthWrite( Solaris version ) " ,
( Attribute_GrpWrite | Attribute_OwnWrite | Attribute_OthWrite ) = =
rFileStatus . getAttributes ( ) ) ;
}
# else //Windows version
void getAttributes_003 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getAttributes function: GrpWrite, OwnWrite, OthWrite( Windows version ) " ,
1 = = 1 ) ;
}
# endif
2003-11-18 15:38:22 +00:00
# if ( defined UNX ) || ( defined OS2 ) //hidden file definition may different in Windows
2003-04-17 07:34:31 +00:00
void getAttributes_004 ( )
{
sal_Int32 test_Attributes = Attribute_Hidden ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError = rItem_hidden . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
test_Attributes & = rFileStatus . getAttributes ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getAttributes function: Hidden files( Solaris version ) " ,
test_Attributes = = Attribute_Hidden ) ;
}
# else //Windows version
void getAttributes_004 ( )
{
2003-11-18 15:38:22 +00:00
: : rtl : : OUString aUserHiddenFileURL = : : rtl : : OUString : : createFromAscii ( " file:///c:/AUTOEXEC.BAT " ) ;
nError = : : osl : : DirectoryItem : : get ( aUserHiddenFileURL , rItem_hidden ) ;
//printFileName( aUserHiddenFileURL );
CPPUNIT_ASSERT_MESSAGE ( " get item fail " , nError = = FileBase : : E_None ) ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError = rItem_hidden . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " Hidden files(Windows version), please check if hidden file c:/AUTOEXEC.BAT exists " ,
( rFileStatus . getAttributes ( ) & Attribute_Hidden ) ! = 0 ) ;
2003-04-17 07:34:31 +00:00
}
# endif
CPPUNIT_TEST_SUITE ( getAttributes ) ;
CPPUNIT_TEST ( getAttributes_001 ) ;
CPPUNIT_TEST ( getAttributes_002 ) ;
CPPUNIT_TEST ( getAttributes_003 ) ;
CPPUNIT_TEST ( getAttributes_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getAttributes
//---------------------------------------------------------------------
// testing the method
// inline TimeValue getAccessTime() const
//---------------------------------------------------------------------
class getAccessTime : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
}
void tearDown ( )
{
deleteTestFile ( aTypeURL ) ;
}
// test code.
void getAccessTime_001 ( )
{
TimeValue * pTV_current = NULL ;
CPPUNIT_ASSERT ( ( pTV_current = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
TimeValue * pTV_access = NULL ;
CPPUNIT_ASSERT ( ( pTV_access = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
2003-11-18 15:38:22 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_AccessTime ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
2003-04-17 07:34:31 +00:00
sal_Bool bOk = osl_getSystemTime ( pTV_current ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT ( sal_True = = bOk & & nError = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
* pTV_access = rFileStatus . getAccessTime ( ) ;
2004-05-03 07:57:00 +00:00
sal_Bool bOK = t_compareTime ( pTV_access , pTV_current , delta ) ;
2003-04-17 07:34:31 +00:00
free ( pTV_current ) ;
free ( pTV_access ) ;
2003-11-18 15:38:22 +00:00
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. " ,
2003-05-27 13:19:09 +00:00
sal_True = = bOK ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getAccessTime ) ;
CPPUNIT_TEST ( getAccessTime_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getAccessTime
//---------------------------------------------------------------------
// testing the method
// inline TimeValue getModifyTime() const
//---------------------------------------------------------------------
class getModifyTime : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// test code.
void getModifyTime_001 ( )
{
TimeValue * pTV_current = NULL ;
CPPUNIT_ASSERT ( ( pTV_current = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
//create file
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
//get current time
sal_Bool bOk = osl_getSystemTime ( pTV_current ) ;
CPPUNIT_ASSERT ( sal_True = = bOk ) ;
//get instance item and filestatus
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_ModifyTime ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
//get modify time
TimeValue * pTV_modify = NULL ;
CPPUNIT_ASSERT ( ( pTV_modify = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
* pTV_modify = rFileStatus . getModifyTime ( ) ;
2004-05-03 07:57:00 +00:00
sal_Bool bOK = t_compareTime ( pTV_modify , pTV_current , delta ) ;
2003-04-17 07:34:31 +00:00
//delete file
deleteTestFile ( aTypeURL ) ;
free ( pTV_current ) ;
2003-05-27 13:19:09 +00:00
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. " ,
sal_True = = bOK ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getModifyTime ) ;
CPPUNIT_TEST ( getModifyTime_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getModifyTime
//---------------------------------------------------------------------
// testing the method
// inline sal_uInt64 getFileSize() const
//---------------------------------------------------------------------
class getFileSize : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
}
void tearDown ( )
{
deleteTestFile ( aTypeURL ) ;
}
// test code.
void getFileSize_001 ( )
{
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileSize ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
sal_uInt64 uFileSize = rFileStatus . getFileSize ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileSize function: empty file " ,
0 = = uFileSize ) ;
}
void getFileSize_002 ( )
{
2003-11-18 15:38:22 +00:00
: : osl : : File testfile ( aTypeURL ) ;
nError = testfile . open ( OpenFlag_Write | OpenFlag_Read ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError ) ;
2003-11-18 15:38:22 +00:00
nError = testfile . setSize ( TEST_FILE_SIZE ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError ) ;
2003-11-18 15:38:22 +00:00
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileSize ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
sal_uInt64 uFileSize = rFileStatus . getFileSize ( ) ;
2003-05-27 13:19:09 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getFileSize function: file with size of TEST_FILE_SIZE, did not pass in (W32). " ,
2003-04-17 07:34:31 +00:00
TEST_FILE_SIZE = = uFileSize ) ;
}
CPPUNIT_TEST_SUITE ( getFileSize ) ;
CPPUNIT_TEST ( getFileSize_001 ) ;
CPPUNIT_TEST ( getFileSize_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileSize
//---------------------------------------------------------------------
// testing the method
// inline ::rtl::OUString getFileName() const
//---------------------------------------------------------------------
class getFileName : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
nError = : : osl : : DirectoryItem : : get ( aTypeURL , rItem ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
}
void tearDown ( )
{
deleteTestFile ( aTypeURL ) ;
}
// test code.
void getFileName_001 ( )
{
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
: : rtl : : OUString aFileName = rFileStatus . getFileName ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileName function: name compare with specify " ,
sal_True = = compareFileName ( aFileName , aTmpName2 ) ) ;
}
CPPUNIT_TEST_SUITE ( getFileName ) ;
CPPUNIT_TEST ( getFileName_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileName
//---------------------------------------------------------------------
// testing the method
// inline ::rtl::OUString getFileURL() const
//---------------------------------------------------------------------
class getFileURL : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
2003-05-27 13:19:09 +00:00
createTestFile ( aTmpName6 ) ;
nError = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
}
void tearDown ( )
{
2003-05-27 13:19:09 +00:00
deleteTestFile ( aTmpName6 ) ;
2003-04-17 07:34:31 +00:00
}
// test code.
void getFileURL_001 ( )
{
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileURL ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError = = FileBase : : E_None ) ;
: : rtl : : OUString aFileURL = rFileStatus . getFileURL ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileURL function: " ,
2003-05-27 13:19:09 +00:00
sal_True = = compareFileName ( aFileURL , aTmpName6 ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getFileURL ) ;
CPPUNIT_TEST ( getFileURL_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileURL
//---------------------------------------------------------------------
// testing the method
// inline ::rtl::OUString getLinkTargetURL() const
//---------------------------------------------------------------------
class getLinkTargetURL : public CppUnit : : TestFixture
{
: : rtl : : OUString aTypeURL ;
: : osl : : FileBase : : RC nError ;
: : osl : : DirectoryItem rItem ;
public :
// test code.
// initialization
void setUp ( )
{
2003-10-06 12:40:17 +00:00
aTypeURL = aUserDirectoryURL . copy ( 0 ) ;
2003-04-17 07:34:31 +00:00
concatURL ( aTypeURL , aTmpName2 ) ;
createTestFile ( aTypeURL ) ;
}
void tearDown ( )
{
deleteTestFile ( aTypeURL ) ;
}
# if ( defined UNX ) || ( defined OS2 ) //Link file is not define in Windows
void getLinkTargetURL_001 ( )
{
//create a link file;
2003-10-06 12:40:17 +00:00
: : rtl : : OUString aUStr_LnkFileSys ( aTempDirectorySys ) , aUStr_SrcFileSys ( aTempDirectorySys ) ;
( ( aUStr_LnkFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /link.file " ) ;
( ( aUStr_SrcFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /tmpname " ) ;
2003-12-11 11:30:40 +00:00
rtl : : OString strLinkFileName , strSrcFileName ;
strLinkFileName = OUStringToOString ( aUStr_LnkFileSys , RTL_TEXTENCODING_ASCII_US ) ;
strSrcFileName = OUStringToOString ( aUStr_SrcFileSys , RTL_TEXTENCODING_ASCII_US ) ;
2003-10-06 12:40:17 +00:00
2003-04-17 07:34:31 +00:00
sal_Int32 fd ;
2003-12-11 11:30:40 +00:00
fd = symlink ( strSrcFileName . getStr ( ) , strLinkFileName . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " in creating link file " , fd = = 0 ) ;
//get linkTarget URL
nError = : : osl : : DirectoryItem : : get ( aLnkURL1 , rItem ) ;
CPPUNIT_ASSERT_MESSAGE ( " in getting link file item " , nError = = FileBase : : E_None ) ;
2003-12-11 11:30:40 +00:00
2003-04-17 07:34:31 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_LinkTargetURL ) ;
nError = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT_MESSAGE ( " in getting link file status " , nError = = FileBase : : E_None ) ;
: : rtl : : OUString aFileURL = rFileStatus . getLinkTargetURL ( ) ;
//remove link file
2003-12-11 11:30:40 +00:00
fd = remove ( strLinkFileName . getStr ( ) ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " in deleting link file " , fd = = 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getLinkTargetURL function: Solaris version, creat a file, and a link file link to it, get its LinkTargetURL and compare " ,
sal_True = = compareFileName ( aFileURL , aTypeURL ) ) ;
}
# else
void getLinkTargetURL_001 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " test for getLinkTargetURL function: Windows version, not tested " ,
2003-10-06 12:40:17 +00:00
1 ) ;
2003-04-17 07:34:31 +00:00
}
# endif
CPPUNIT_TEST_SUITE ( getLinkTargetURL ) ;
CPPUNIT_TEST ( getLinkTargetURL_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getLinkTargetURL
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : ctors , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : isValid , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getFileType , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getAttributes , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getAccessTime , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getModifyTime , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getFileSize , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getFileName , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getFileURL , " osl_FileStatus " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_FileStatus : : getLinkTargetURL , " osl_FileStatus " ) ;
} // namespace osl_FileStatus
//------------------------------------------------------------------------
// Beginning of the test cases for File class
//------------------------------------------------------------------------
namespace osl_File
{
//---------------------------------------------------------------------
// testing the method
// File( const ::rtl::OUString& ustrFileURL )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
2003-12-11 11:30:40 +00:00
// ::osl::FileBase::RC nError1;
2003-04-17 07:34:31 +00:00
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void ctors_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
: : osl : : FileBase : : RC nError2 = testFile . close ( ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: initialize a File and test its open and close " ,
( : : osl : : FileBase : : E_None = = nError1 ) & & ( : : osl : : FileBase : : E_None = = nError2 ) ) ;
}
void ctors_002 ( )
{
: : osl : : File testFile ( aTmpName5 ) ;
sal_Char buffer [ 30 ] = " Test for File constructor " ;
sal_uInt64 nCount ;
2003-12-11 11:30:40 +00:00
: : osl : : FileBase : : RC nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
: : osl : : FileBase : : RC nError2 = testFile . write ( buffer , 30 , nCount ) ;
2003-04-17 07:34:31 +00:00
testFile . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: test relative file URL, this test show that relative file URL is also acceptable " ,
( : : osl : : FileBase : : E_None = = nError1 ) & & ( : : osl : : FileBase : : E_None = = nError2 ) ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST ( ctors_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline RC open( sal_uInt32 uFlags )
//---------------------------------------------------------------------
class open : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 , nError3 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void open_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
nError2 = testFile . close ( ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " close error " , : : osl : : FileBase : : E_None = = nError2 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a regular file " ,
: : osl : : FileBase : : E_None = = nError1 ) ;
}
void open_002 ( )
{
: : osl : : File testFile ( aTmpName3 ) ;
nError1 = testFile . open ( OpenFlag_Read ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a directory " ,
2003-05-27 13:19:09 +00:00
( File : : E_INVAL = = nError1 ) | | ( File : : E_ACCES = = nError1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void open_003 ( )
{
: : osl : : File testFile ( aCanURL1 ) ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a non-exist file " ,
File : : E_NOENT = = nError1 ) ;
}
void open_004 ( )
{
: : rtl : : OUString aTestFile ( aRootURL ) ;
concatURL ( aTestFile , aTmpName2 ) ;
: : osl : : File testFile ( aTestFile ) ;
nError1 = testFile . open ( OpenFlag_Create ) ;
2003-05-27 13:19:09 +00:00
sal_Bool bOK = ( File : : E_ACCES = = nError1 ) ;
# if defined (WNT )
bOK = sal_True ; /// in Windows, you can create file in c:/ any way.
testFile . close ( ) ;
deleteTestFile ( aTestFile ) ;
# endif
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for open function: create an illegal file " ,
2003-05-27 13:19:09 +00:00
bOK = = sal_True ) ;
2003-04-17 07:34:31 +00:00
}
void open_005 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Create ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for open function: create an exist file " ,
File : : E_EXIST = = nError1 ) ;
}
void open_006 ( )
{
: : osl : : File testFile ( aCanURL1 ) ;
sal_Char buffer_write [ 30 ] = " Test for File open " ;
sal_Char buffer_read [ 30 ] ;
sal_uInt64 nCount_write , nCount_read ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create ) ;
nError2 = testFile . write ( buffer_write , 30 , nCount_write ) ;
: : osl : : FileBase : : RC nError4 = testFile . setPos ( Pos_Absolut , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError4 ) ;
nError3 = testFile . read ( buffer_read , 10 , nCount_read ) ;
: : osl : : FileBase : : RC nError5 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError5 ) ;
: : osl : : FileBase : : RC nError6 = testFile . remove ( aCanURL1 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for open function: test for OpenFlag_Read,OpenFlag_Write and OpenFlag_Create " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_None = = nError2 ) & &
( : : osl : : FileBase : : E_None = = nError3 ) & &
( 30 = = nCount_write ) & &
( 10 = = nCount_read ) ) ;
}
CPPUNIT_TEST_SUITE ( open ) ;
CPPUNIT_TEST ( open_001 ) ;
CPPUNIT_TEST ( open_002 ) ;
CPPUNIT_TEST ( open_003 ) ;
CPPUNIT_TEST ( open_004 ) ;
CPPUNIT_TEST ( open_005 ) ;
CPPUNIT_TEST ( open_006 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class open
//---------------------------------------------------------------------
// testing the method
// inline RC close()
//---------------------------------------------------------------------
class close : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 , nError3 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void close_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError2 = testFile . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for close function: close a regular file " ,
: : osl : : FileBase : : E_None = = nError2 ) ;
}
void close_002 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError2 = testFile . close ( ) ;
nError3 = testFile . setPos ( Pos_Absolut , 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for close function: manipulate a file after it has been closed " ,
( : : osl : : FileBase : : E_None = = nError2 ) & &
( : : osl : : FileBase : : E_None ! = nError3 ) ) ;
}
CPPUNIT_TEST_SUITE ( close ) ;
CPPUNIT_TEST ( close_001 ) ;
CPPUNIT_TEST ( close_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class close
//---------------------------------------------------------------------
// testing the method
// inline RC setPos( sal_uInt32 uHow, sal_Int64 uPos )
//---------------------------------------------------------------------
class setPos : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void setPos_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_Char buffer_read [ 2 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Absolut , 26 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 1 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
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 " ,
buffer_read [ 0 ] = = pBuffer_Char [ 26 ] ) ;
}
void setPos_002 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_Char buffer_read [ 2 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Absolut , sizeof ( pBuffer_Char ) - 2 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Current , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 1 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
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 " ,
buffer_read [ 0 ] = = pBuffer_Char [ sizeof ( pBuffer_Char ) - 2 ] ) ;
}
void setPos_003 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_Char buffer_read [ 2 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2004-03-19 13:48:16 +00:00
//the file size is smaller than 100
nError1 = testFile . setPos ( Pos_End , - 100 ) ;
CPPUNIT_ASSERT_MESSAGE ( " should return error " , : : osl : : FileBase : : E_INVAL = = nError1 ) ;
2003-04-17 07:34:31 +00:00
nError1 = testFile . setPos ( Pos_End , - 53 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 1 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
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 " ,
buffer_read [ 0 ] = = pBuffer_Char [ 0 ] ) ;
}
CPPUNIT_TEST_SUITE ( setPos ) ;
CPPUNIT_TEST ( setPos_001 ) ;
CPPUNIT_TEST ( setPos_002 ) ;
CPPUNIT_TEST ( setPos_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class setPos
//---------------------------------------------------------------------
// testing the method
// inline RC getPos( sal_uInt64& uPos )
//---------------------------------------------------------------------
class getPos : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void getPos_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_uInt64 nFilePointer ;
2004-03-19 13:48:16 +00:00
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_INVAL = = nError1 ) ;
2003-04-17 07:34:31 +00:00
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Absolut , 26 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getPos function: set the position to 26, get position and check if it is right " ,
26 = = nFilePointer ) ;
}
CPPUNIT_TEST_SUITE ( getPos ) ;
CPPUNIT_TEST ( getPos_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getPos
//---------------------------------------------------------------------
// testing the method
// inline RC isEndOfFile( sal_Bool *pIsEOF )
//---------------------------------------------------------------------
class isEndOfFile : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void isEndOfFile_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_Bool bEOF = sal_False ;
sal_Bool * pEOF = & bEOF ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_End , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . isEndOfFile ( pEOF ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isEndOfFile function: set the position to end, check if reach end " ,
sal_True = = * pEOF ) ;
}
void isEndOfFile_002 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_Bool bEOF = sal_False ;
sal_Bool * pEOF = & bEOF ;
sal_uInt64 nFilePointer = 0 ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Absolut , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
* pEOF = sal_False ;
while ( ! ( * pEOF ) )
{
nError1 = testFile . isEndOfFile ( pEOF ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Current , 1 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isEndOfFile function: use isEndOfFile to move pointer step by step " ,
sizeof ( pBuffer_Char ) + 1 = = nFilePointer ) ;
}
CPPUNIT_TEST_SUITE ( isEndOfFile ) ;
CPPUNIT_TEST ( isEndOfFile_001 ) ;
CPPUNIT_TEST ( isEndOfFile_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class isEndOfFile
//---------------------------------------------------------------------
// testing the method
// inline RC setSize( sal_uInt64 uSize )
//---------------------------------------------------------------------
class setSize : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void setSize_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
2004-03-19 13:48:16 +00:00
// sal_Bool bEOF = sal_False;
// sal_Bool *pEOF = &bEOF;
2003-04-17 07:34:31 +00:00
sal_uInt64 nFilePointer ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//enlarge the file to size of 100;
nError1 = testFile . setSize ( 100 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get the file size;
nError1 = testFile . setPos ( Pos_End , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for setSize function: enlarge the file " ,
100 = = nFilePointer ) ;
}
void setSize_002 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
2004-03-19 13:48:16 +00:00
// sal_Bool bEOF = sal_False;
// sal_Bool *pEOF = &bEOF;
2003-04-17 07:34:31 +00:00
sal_uInt64 nFilePointer ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//enlarge the file to size of 100;
nError1 = testFile . setSize ( 10 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get the file size;
nError1 = testFile . setPos ( Pos_End , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for setSize function: truncate the file " ,
10 = = nFilePointer ) ;
}
2004-03-19 13:48:16 +00:00
/* void setSize_003( )
{
: : osl : : File testFile ( aTmpName4 ) ;
// sal_Bool bEOF = sal_False;
// sal_Bool *pEOF = &bEOF;
sal_uInt64 nFilePointer ;
2003-04-17 07:34:31 +00:00
2004-03-19 13:48:16 +00:00
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//enlarge the file to size of 100;
nError1 = testFile . setSize ( 10 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get the file size;
nError1 = testFile . setPos ( Pos_End , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for setSize function: truncate the file " ,
10 = = nFilePointer ) ;
}
*/
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( setSize ) ;
CPPUNIT_TEST ( setSize_001 ) ;
CPPUNIT_TEST ( setSize_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class setSize
//---------------------------------------------------------------------
// testing the method
// inline RC read( void *pBuffer, sal_uInt64 uBytesRequested, sal_uInt64& rBytesRead )
//---------------------------------------------------------------------
class read : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void read_001 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_uInt64 nFilePointer ;
sal_Char buffer_read [ 10 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 10 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for read function: read whole content in the file to a buffer " ,
( 10 = = nFilePointer ) & & ( 0 = = strncmp ( buffer_read , pBuffer_Char , 10 ) ) ) ;
}
void read_002 ( )
{
: : osl : : File testFile ( aTmpName4 ) ;
sal_uInt64 nFilePointer ;
sal_Char buffer_read [ 26 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . setPos ( Pos_Absolut , 26 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 26 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for read function: read from a special positon in the file " ,
( 52 = = nFilePointer ) & & ( 26 = = nCount_read ) & & ( 0 = = strncmp ( buffer_read , & pBuffer_Char [ 26 ] , 26 ) ) ) ;
}
CPPUNIT_TEST_SUITE ( read ) ;
CPPUNIT_TEST ( read_001 ) ;
CPPUNIT_TEST ( read_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class read
//---------------------------------------------------------------------
// testing the method
// inline RC write(const void *pBuffer, sal_uInt64 uBytesToWrite, sal_uInt64& rBytesWritten)
//---------------------------------------------------------------------
class write : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void write_001 ( )
{
: : osl : : File testFile ( aTmpName6 ) ;
sal_uInt64 nFilePointer ;
sal_Char buffer_read [ 10 ] ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//write chars into the file.
nError1 = testFile . write ( pBuffer_Char , 10 , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get the current pointer;
nError1 = testFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//reset pointer to the begining;
nError1 = testFile . setPos ( Pos_Absolut , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . read ( buffer_read , 10 , nCount_read ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
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 " ,
( 10 = = nFilePointer ) & &
( 0 = = strncmp ( buffer_read , pBuffer_Char , 10 ) ) & &
( 10 = = nCount_write ) ) ;
}
CPPUNIT_TEST_SUITE ( write ) ;
CPPUNIT_TEST ( write_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class write
//---------------------------------------------------------------------
// testing the method
// inline RC readLine( ::rtl::ByteSequence& aSeq )
//---------------------------------------------------------------------
class readLine : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
: : rtl : : ByteSequence aSequence ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
//write some strings into the file.
: : osl : : File testFile ( aTmpName6 ) ;
2003-10-06 12:40:17 +00:00
sal_Char ppStrSeq [ 3 ] [ 27 ] = { " abcde \n " ,
2003-04-17 07:34:31 +00:00
" 1234567890 \n " ,
" ABCDEFGHIJKLMNOPQRSTUVWXYZ "
} ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
for ( int nCount = 0 ; nCount < 3 ; nCount + + )
{
nError1 = testFile . write ( ppStrSeq [ nCount ] , strlen ( ppStrSeq [ nCount ] ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void readLine_001 ( )
{
: : osl : : File testFile ( aTmpName6 ) ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . readLine ( aSequence ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for readLine function: read the first line of the file. " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( 0 = = strncmp ( ( const char * ) aSequence . getArray ( ) , pBuffer_Char , 5 ) ) ) ;
}
void readLine_002 ( )
{
: : osl : : File testFile ( aTmpName6 ) ;
sal_Bool bEOF = sal_False ;
sal_Bool * pEOF = & bEOF ;
nError1 = testFile . open ( OpenFlag_Read | OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
for ( int nCount = 0 ; nCount < 3 ; nCount + + )
{
nError1 = testFile . readLine ( aSequence ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
nError1 = testFile . isEndOfFile ( pEOF ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for readLine function: read three lines of the file and check the file pointer moving. " ,
* pEOF & &
( 0 = = strncmp ( ( const char * ) aSequence . getArray ( ) , & pBuffer_Char [ 26 ] , 26 ) ) ) ;
}
CPPUNIT_TEST_SUITE ( readLine ) ;
CPPUNIT_TEST ( readLine_001 ) ;
CPPUNIT_TEST ( readLine_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class readLine
//---------------------------------------------------------------------
// testing the method
// inline static RC copy( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
//---------------------------------------------------------------------
class copy : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void copy_001 ( )
{
: : osl : : File testFile ( aTmpName6 ) ;
//copy $TEMP/tmpdir/tmpname to $TEMP/tmpname.
nError1 = : : osl : : File : : copy ( aTmpName4 , aTmpName6 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check
nError1 = testFile . open ( OpenFlag_Create ) ;
deleteTestFile ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: copy file to upper directory " ,
: : osl : : FileBase : : E_EXIST = = nError1 ) ;
}
void copy_002 ( )
{
//copy $TEMP/tmpdir/tmpname to $TEMP/tmpdir.
nError1 = : : osl : : File : : copy ( aTmpName4 , aTmpName3 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: use directory as destination " ,
2003-05-27 13:19:09 +00:00
( : : osl : : FileBase : : E_ISDIR = = nError1 ) | | ( : : osl : : FileBase : : E_ACCES = = nError1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void copy_003 ( )
{
//copy $TEMP/tmpdir/tmpname to $ROOT/tmpname.
nError1 = : : osl : : File : : copy ( aTmpName4 , aTmpName7 ) ;
2003-05-27 13:19:09 +00:00
# if defined (WNT )
nError1 = : : osl : : FileBase : : E_ACCES ; /// for Windows, c:/ is writtenable any way.
deleteTestFile ( aTmpName7 ) ;
# endif
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: copy to an illigal place " ,
: : osl : : FileBase : : E_ACCES = = nError1 ) ;
}
void copy_004 ( )
{
//copy $TEMP/tmpname to $TEMP/tmpdir/tmpname.
nError1 = : : osl : : File : : copy ( aTmpName6 , aTmpName4 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: copy a not exist file " ,
: : osl : : FileBase : : E_NOENT = = nError1 ) ;
}
void copy_005 ( )
{
//copy $TEMP/tmpname to $TEMP/system.path using system path.
nError1 = : : osl : : File : : copy ( aTmpName6 , aSysPath1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: copy a file using system file path " ,
: : osl : : FileBase : : E_INVAL = = nError1 ) ;
}
2004-03-19 13:48:16 +00:00
void copy_006 ( )
{
createTestFile ( aTmpName6 ) ;
File tmpFile ( aTmpName6 ) ;
FileBase : : RC err = tmpFile . open ( OpenFlag_Write | OpenFlag_Read ) ;
tmpFile . setSize ( 200 ) ;
tmpFile . close ( ) ;
//copy to new path
nError1 = : : osl : : File : : copy ( aTmpName6 , aTmpName4 ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
//check if is the new file
File newFile ( aTmpName4 ) ;
newFile . open ( OpenFlag_Write | OpenFlag_Read ) ;
newFile . setPos ( Pos_End , 0 ) ;
// CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
sal_uInt64 nFilePointer ;
nError1 = newFile . getPos ( nFilePointer ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
newFile . close ( ) ;
deleteTestFile ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: the dest file exist " ,
nFilePointer = = 200 ) ;
}
//copyLink has not been impletmented yet
void copy_007 ( )
{
# if ( defined UNX )
CPPUNIT_ASSERT_MESSAGE ( " test for copy function: source file is link file " ,
: : osl : : FileBase : : E_INVAL = = nError1 ) ;
# endif
}
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( copy ) ;
CPPUNIT_TEST ( copy_001 ) ;
CPPUNIT_TEST ( copy_002 ) ;
CPPUNIT_TEST ( copy_003 ) ;
CPPUNIT_TEST ( copy_004 ) ;
CPPUNIT_TEST ( copy_005 ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST ( copy_006 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class copy
//---------------------------------------------------------------------
// testing the method
// inline static RC move( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
//---------------------------------------------------------------------
class move : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void move_001 ( )
{
//rename $TEMP/tmpdir/tmpname to $TEMP/canonical.name.
nError1 = : : osl : : File : : move ( aTmpName4 , aCanURL1 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check
: : osl : : File testFile ( aCanURL1 ) ;
nError2 = testFile . open ( OpenFlag_Create ) ;
deleteTestFile ( aCanURL1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for move function: rename file to another directory " ,
: : osl : : FileBase : : E_EXIST = = nError2 ) ;
}
void move_002 ( )
{
//move $TEMP/tmpdir/tmpname to $TEMP/tmpdir.
nError1 = : : osl : : File : : move ( aTmpName4 , aTmpName3 ) ;
2003-11-18 15:38:22 +00:00
//returned ::osl::FileBase::E_ACCES on WNT
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for move function: use directory as destination " ,
2003-11-18 15:38:22 +00:00
( : : osl : : FileBase : : E_ACCES = = nError1 | | : : osl : : FileBase : : E_ISDIR = = nError1 ) | | ( : : osl : : FileBase : : E_EXIST = = nError1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void move_003 ( )
{
//move $TEMP/tmpdir/tmpname to $ROOT/tmpname.
nError1 = : : osl : : File : : move ( aTmpName4 , aTmpName7 ) ;
2003-05-27 13:19:09 +00:00
# if defined (WNT )
nError1 = : : osl : : FileBase : : E_ACCES ; /// for Windows, c:/ is writtenable any way.
deleteTestFile ( aTmpName7 ) ;
# endif
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move to an illigal place " ,
: : osl : : FileBase : : E_ACCES = = nError1 ) ;
}
void move_004 ( )
{
//move $TEMP/tmpname to $TEMP/tmpdir/tmpname.
nError1 = : : osl : : File : : move ( aTmpName6 , aTmpName4 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move a not exist file " ,
: : osl : : FileBase : : E_NOENT = = nError1 ) ;
}
void move_005 ( )
{
//move $TEMP/tmpname to $TEMP/system.path using system path.
nError1 = : : osl : : File : : move ( aTmpName6 , aSysPath1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move a file using system file " ,
: : osl : : FileBase : : E_INVAL = = nError1 ) ;
}
void move_006 ( )
{
//move directory $TEMP/tmpname to $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName6 ) ;
nError1 = : : osl : : File : : move ( aTmpName6 , aTmpName4 ) ;
2003-11-18 15:38:22 +00:00
//move file $TEMP/tmpdir/tmpname to $TEMP/tmpname
nError2 = : : osl : : File : : move ( aTmpName4 , aTmpName6 ) ;
2003-04-17 07:34:31 +00:00
deleteTestDirectory ( aTmpName6 ) ;
2003-05-27 13:19:09 +00:00
# if defined ( WNT )
deleteTestDirectory ( aTmpName4 ) ; // in Windows, it can be moved!!!!! this is only for not influence the following test.
2003-11-18 15:38:22 +00:00
deleteTestFile ( aTmpName6 ) ;
nError1 = : : osl : : FileBase : : E_NOTDIR ;
nError2 = : : osl : : FileBase : : E_ISDIR ;
2003-05-27 13:19:09 +00:00
# endif
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move a directory to an exist file with same name, did not pass in (W32) " ,
2003-11-18 15:38:22 +00:00
: : osl : : FileBase : : E_NOTDIR = = nError1 & & : : osl : : FileBase : : E_ISDIR = = nError2 ) ;
2003-04-17 07:34:31 +00:00
}
void move_007 ( )
{
//create directory $TEMP/tmpname.
createTestDirectory ( aTmpName6 ) ;
//move directory $TEMP/tmpdir to $TEMP/tmpname/tmpdir
nError1 = : : osl : : File : : move ( aTmpName3 , aTmpName8 ) ;
//check
nError2 = : : osl : : Directory : : create ( aTmpName8 ) ;
: : osl : : File : : move ( aTmpName8 , aTmpName3 ) ;
deleteTestDirectory ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move a directory to an exist file with same name " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_EXIST = = nError2 ) ) ;
}
2004-03-19 13:48:16 +00:00
// oldpath and newpath are not on the same filesystem.EXDEV,no such error no on Solaris, only on linux
void move_008 ( )
{
CPPUNIT_ASSERT_MESSAGE ( " oldpath and newpath are not on the same filesystem, should error returns " ,
: : osl : : FileBase : : E_None = = nError1 ) ;
}
//bugid# 115420, after the bug fix, add the case
void move_009 ( )
{
//create directory $TEMP/tmpname.
createTestDirectory ( aTmpName6 ) ;
//create directory $TEMP/tmpname/tmpdir
createTestDirectory ( aTmpName8 ) ;
//move directory $TEMP/tmpname to $TEMP/tmpname/tmpdir/tmpname
rtl : : OUString newName = aTmpName8 + OUString : : createFromAscii ( " /tmpname " ) ;
//printFileName( newName );
nError1 = : : osl : : File : : move ( aTmpName3 , newName ) ;
//deleteTestDirectory( newName + OUString::createFromAscii("/tmpname") );
//deleteTestDirectory( newName );
deleteTestDirectory ( aTmpName8 ) ;
deleteTestDirectory ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for move function: move a directory to it's subdirectory " ,
: : osl : : FileBase : : E_None ! = nError1 ) ;
}
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( move ) ;
CPPUNIT_TEST ( move_001 ) ;
CPPUNIT_TEST ( move_002 ) ;
CPPUNIT_TEST ( move_003 ) ;
CPPUNIT_TEST ( move_004 ) ;
CPPUNIT_TEST ( move_005 ) ;
CPPUNIT_TEST ( move_006 ) ;
CPPUNIT_TEST ( move_007 ) ;
2004-03-19 13:48:16 +00:00
// CPPUNIT_TEST( move_008 );
//CPPUNIT_TEST( move_009 );
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class move
//---------------------------------------------------------------------
// testing the method
// inline static RC remove( const ::rtl::OUString& ustrFileURL )
//---------------------------------------------------------------------
class remove : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
sal_uInt64 nCount_write , nCount_read ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
//write chars into the file.
: : osl : : File testFile ( aTmpName4 ) ;
nError1 = testFile . open ( OpenFlag_Write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . write ( pBuffer_Char , sizeof ( pBuffer_Char ) , nCount_write ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = testFile . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void remove_001 ( )
{
//remove $TEMP/tmpdir/tmpname.
nError1 = : : osl : : File : : remove ( aTmpName4 ) ;
//check
: : osl : : File testFile ( aTmpName4 ) ;
nError2 = testFile . open ( OpenFlag_Create ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: remove a file " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_EXIST ! = nError2 ) ) ;
}
void remove_002 ( )
{
//remove $TEMP/tmpname.
nError1 = : : osl : : File : : remove ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: remove a file not exist " ,
( : : osl : : FileBase : : E_NOENT = = nError1 ) ) ;
}
void remove_003 ( )
{
//remove $TEMP/system/path.
nError1 = : : osl : : File : : remove ( aSysPath2 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: removing a file not using full qualified URL " ,
( : : osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void remove_004 ( )
{
//remove $TEMP/tmpdir.
nError1 = : : osl : : File : : remove ( aTmpName3 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: remove a directory " ,
2003-05-27 13:19:09 +00:00
( : : osl : : FileBase : : E_ISDIR = = nError1 ) | | ( : : osl : : FileBase : : E_ACCES = = nError1 ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( remove ) ;
CPPUNIT_TEST ( remove_001 ) ;
CPPUNIT_TEST ( remove_002 ) ;
CPPUNIT_TEST ( remove_003 ) ;
CPPUNIT_TEST ( remove_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class remove
//---------------------------------------------------------------------
// testing the method
// inline static RC setAttributes( const ::rtl::OUString& ustrFileURL, sal_uInt64 uAttributes )
//---------------------------------------------------------------------
class setAttributes : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem , rItem_hidden ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void setAttributes_001 ( )
{
2003-11-18 15:38:22 +00:00
//on windows, only can set 2 attributes: Attribute_ReadOnly, Attribute_HIDDEN
# ifdef UNX
2003-04-17 07:34:31 +00:00
//set the file to readonly
nError2 = : : osl : : File : : setAttributes ( aTmpName6 , Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT ( nError2 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
//get the file attributes
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for setAttributes function: set file attributes and get it to verify. " ,
2003-04-17 07:34:31 +00:00
( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) = =
rFileStatus . getAttributes ( ) ) ;
2003-11-18 15:38:22 +00:00
# else
//please see GetFileAttributes
nError2 = : : osl : : File : : setAttributes ( aTmpName6 , Attribute_ReadOnly ) ;
CPPUNIT_ASSERT ( nError2 = = FileBase : : E_None ) ;
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
//get the file attributes
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
//here the file has 2 Attributes: FILE_ATTRIBUTE_READONLY and FILE_ATTRIBUTE_NORMAL,
// but FILE_ATTRIBUTE_NORMAL is valid only if used alone, so this is maybe a bug
/*::rtl::OString aString = ::rtl::OUStringToOString( aTmpName6, RTL_TEXTENCODING_ASCII_US );
DWORD dwFileAttributes = GetFileAttributes ( aString . getStr ( ) ) ;
if ( dwFileAttributes & FILE_ATTRIBUTE_NORMAL )
2004-03-19 13:48:16 +00:00
t_print ( " has normal attribute " ) ;
2003-11-18 15:38:22 +00:00
if ( dwFileAttributes & FILE_ATTRIBUTE_READONLY )
2004-03-19 13:48:16 +00:00
t_print ( " has readonly attribute " ) ;
2003-11-18 15:38:22 +00:00
*/
CPPUNIT_ASSERT_MESSAGE ( " test for setAttributes function: set file attributes READONLY and get it to verify. " ,
( Attribute_ReadOnly & rFileStatus . getAttributes ( ) ) ! = 0 ) ;
# endif
}
void setAttributes_002 ( )
{
//on UNX, can not set hidden attribute to file, rename file can set the attribute
# ifdef WNT
//set the file to hidden
nError2 = : : osl : : File : : setAttributes ( aTmpName6 , Attribute_Hidden ) ;
CPPUNIT_ASSERT ( nError2 = = FileBase : : E_None ) ;
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
//get the file attributes
: : osl : : FileStatus rFileStatus ( FileStatusMask_Attributes ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for setAttributes function: set file attributes and get it to verify. " ,
( Attribute_Hidden & rFileStatus . getAttributes ( ) ) ! = 0 ) ;
# endif
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( setAttributes ) ;
CPPUNIT_TEST ( setAttributes_001 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_TEST ( setAttributes_002 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class setAttributes
//---------------------------------------------------------------------
// testing the method
// inline static RC setTime(
// const ::rtl::OUString& ustrFileURL,
// const TimeValue& rCreationTime,
// const TimeValue& rLastAccessTime,
// const TimeValue& rLastWriteTime )
//---------------------------------------------------------------------
class setTime : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void setTime_001 ( )
{
TimeValue * pTV_current = NULL ;
CPPUNIT_ASSERT ( ( pTV_current = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
TimeValue * pTV_creation = NULL ;
CPPUNIT_ASSERT ( ( pTV_creation = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
TimeValue * pTV_access = NULL ;
CPPUNIT_ASSERT ( ( pTV_access = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
TimeValue * pTV_modify = NULL ;
CPPUNIT_ASSERT ( ( pTV_modify = ( TimeValue * ) malloc ( sizeof ( TimeValue ) ) ) ! = NULL ) ;
//get current time
sal_Bool bOk = osl_getSystemTime ( pTV_current ) ;
CPPUNIT_ASSERT ( sal_True = = bOk ) ;
//set the file time
nError2 = : : osl : : File : : setTime ( aTmpName6 , * pTV_current , * pTV_current , * pTV_current ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError2 ) , nError2 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
//get the file access time, creation time, modify time
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , nError1 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
: : osl : : FileStatus rFileStatus ( FileStatusMask_AccessTime ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , nError1 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
* pTV_access = rFileStatus . getAccessTime ( ) ;
: : osl : : FileStatus rFileStatus1 ( FileStatusMask_CreationTime ) ;
nError1 = rItem . getFileStatus ( rFileStatus1 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , nError1 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
* pTV_creation = rFileStatus1 . getCreationTime ( ) ;
: : osl : : FileStatus rFileStatus2 ( FileStatusMask_ModifyTime ) ;
nError1 = rItem . getFileStatus ( rFileStatus2 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( errorToStr ( nError1 ) , nError1 = = FileBase : : E_None ) ;
2003-04-17 07:34:31 +00:00
* pTV_modify = rFileStatus2 . getModifyTime ( ) ;
2004-03-19 13:48:16 +00:00
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. " ,
2004-05-03 07:57:00 +00:00
sal_True = = t_compareTime ( pTV_access , pTV_current , delta ) ) ;
2004-03-19 13:48:16 +00:00
# if defined ( WNT )
//Unfortunately there is no way to get the creation time of a file under Unix (its a Windows only feature).
//That means the flag osl_FileStatus_Mask_CreationTime should be deprecated under Unix.
CPPUNIT_ASSERT_MESSAGE ( " test for setTime function: set creation time then get it. " ,
2004-05-03 07:57:00 +00:00
sal_True = = t_compareTime ( pTV_creation , pTV_current , delta ) ) ;
2004-03-19 13:48:16 +00:00
# endif
CPPUNIT_ASSERT_MESSAGE ( " test for setTime function: set modify time then get it. " ,
2004-05-03 07:57:00 +00:00
sal_True = = t_compareTime ( pTV_modify , pTV_current , delta ) ) ;
2003-11-18 15:38:22 +00:00
free ( pTV_current ) ;
free ( pTV_creation ) ;
free ( pTV_access ) ;
free ( pTV_modify ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( setTime ) ;
CPPUNIT_TEST ( setTime_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class setTime
2004-03-19 13:48:16 +00:00
//---------------------------------------------------------------------
// testing the method
// inline static RC sync()
//---------------------------------------------------------------------
class sync : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test case: if The file is located on a read only file system.
void sync_001 ( )
{
# ifdef UNX
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
File tmp_file ( aTmpName6 ) ;
FileBase : : RC err = tmp_file . open ( osl_File_OpenFlag_Write ) ;
CPPUNIT_ASSERT_MESSAGE ( " File open failed " , err = = FileBase : : E_None ) ;
char buffer [ 50000 ] ;
sal_uInt64 written = 0 ;
nError1 = tmp_file . write ( ( void * ) buffer , sizeof ( buffer ) , written ) ;
CPPUNIT_ASSERT_MESSAGE ( " write failed! " , nError1 = = FileBase : : E_None ) ;
//set the file to readonly
nError2 = : : osl : : File : : setAttributes ( aTmpName6 , Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) ;
CPPUNIT_ASSERT ( nError2 = = FileBase : : E_None ) ;
nError2 = tmp_file . sync ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " can not sync to readonly file! " , nError2 = = FileBase : : E_None ) ;
tmp_file . close ( ) ;
# endif
}
//test case:no enough space, how to create such case???see test_cpy_wrt_file.cxx::test_osl_writeFile
CPPUNIT_TEST_SUITE ( sync ) ;
CPPUNIT_TEST ( sync_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class setTime
2003-04-17 07:34:31 +00:00
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : ctors , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : open , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : close , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : setPos , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : getPos , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : isEndOfFile , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : setSize , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : read , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : write , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : readLine , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : copy , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : move , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : remove , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : setAttributes , " osl_File " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : setTime , " osl_File " ) ;
2004-03-19 13:48:16 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_File : : sync , " osl_File " ) ;
2003-04-17 07:34:31 +00:00
} // namespace osl_File
//------------------------------------------------------------------------
// Beginning of the test cases for DirectoryItem class
//------------------------------------------------------------------------
namespace osl_DirectoryItem
{
//---------------------------------------------------------------------
// testing the method
// DirectoryItem(): _pData( NULL )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void ctors_001 ( )
{
: : osl : : File testFile ( aTmpName6 ) ;
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: initialize a new instance of DirectoryItem and get an item to check. " ,
: : osl : : FileBase : : E_None = = nError1 ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// DirectoryItem( const DirectoryItem& rItem ): _pData( rItem._pData)
//---------------------------------------------------------------------
class copy_assin_Ctors : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void copy_assin_Ctors_001 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( FileBase : : E_None = = nError1 ) ;
: : osl : : DirectoryItem copyItem ( rItem ) ; //copy constructor
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError1 = copyItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy_assin_Ctors function: use copy constructor to get an item and check filename. " ,
( sal_True = = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ) ) ;
}
void copy_assin_Ctors_002 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( FileBase : : E_None = = nError1 ) ;
: : osl : : DirectoryItem copyItem ;
copyItem = rItem ; //assinment operator
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError1 = copyItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for copy_assin_Ctors function: test assinment operator here since it is same as copy constructor in test way. " ,
( sal_True = = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ) ) ;
}
CPPUNIT_TEST_SUITE ( copy_assin_Ctors ) ;
CPPUNIT_TEST ( copy_assin_Ctors_001 ) ;
CPPUNIT_TEST ( copy_assin_Ctors_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class copy_assin_Ctors
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool is()
//---------------------------------------------------------------------
class is : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void is_001 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
CPPUNIT_ASSERT_MESSAGE ( " test for is function: use an uninitialized instance. " ,
! rItem . is ( ) ) ;
}
void is_002 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
CPPUNIT_ASSERT ( FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for is function: use an uninitialized instance. " ,
( sal_True = = rItem . is ( ) ) ) ;
}
CPPUNIT_TEST_SUITE ( is ) ;
CPPUNIT_TEST ( is_001 ) ;
CPPUNIT_TEST ( is_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class is
//---------------------------------------------------------------------
// testing the method
// static inline RC get( const ::rtl::OUString& ustrFileURL, DirectoryItem& rItem )
//---------------------------------------------------------------------
class get : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpname.
createTestFile ( aTmpName6 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpname.
deleteTestFile ( aTmpName6 ) ;
}
// test code.
void get_001 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError2 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
//check the file name
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( nError1 = = FileBase : : E_None ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for get function: use copy constructor to get an item and check filename. " ,
( : : osl : : FileBase : : E_None = = nError2 ) & &
( sal_True = = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ) ) ;
}
void get_002 ( )
{
: : osl : : DirectoryItem rItem ;
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aSysPath1 , rItem ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for get function: use a system name instead of a URL. " ,
FileBase : : E_INVAL = = nError1 ) ;
}
void get_003 ( )
{
: : osl : : DirectoryItem rItem ;
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName3 , rItem ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for get function: use a non existed file URL. " ,
FileBase : : E_NOENT = = nError1 ) ;
}
CPPUNIT_TEST_SUITE ( get ) ;
CPPUNIT_TEST ( get_001 ) ;
CPPUNIT_TEST ( get_002 ) ;
CPPUNIT_TEST ( get_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class get
//---------------------------------------------------------------------
// testing the method
// inline RC getFileStatus( FileStatus& rStatus )
//---------------------------------------------------------------------
class getFileStatus : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void getFileStatus_001 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName4 , rItem ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check the file name
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError2 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileStatus function: get file status and check filename " ,
( : : osl : : FileBase : : E_None = = nError2 ) & &
( sal_True = = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ) ) ;
}
void getFileStatus_002 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName6 , rItem ) ;
//check the file name
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError2 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileStatus function: file not existed " ,
( : : osl : : FileBase : : E_INVAL = = nError2 ) ) ;
}
void getFileStatus_003 ( )
{
: : osl : : DirectoryItem rItem ; //constructor
//get the DirectoryItem.
nError1 = : : osl : : DirectoryItem : : get ( aTmpName3 , rItem ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check the file name
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError2 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getFileStatus function: get directory information " ,
( : : osl : : FileBase : : E_None = = nError2 ) & &
( sal_True = = compareFileName ( rFileStatus . getFileName ( ) , aTmpName1 ) ) ) ;
}
CPPUNIT_TEST_SUITE ( getFileStatus ) ;
CPPUNIT_TEST ( getFileStatus_001 ) ;
CPPUNIT_TEST ( getFileStatus_002 ) ;
CPPUNIT_TEST ( getFileStatus_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getFileStatus
2003-10-06 12:40:17 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_DirectoryItem : : ctors , " osl_DirectoryItem " ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_DirectoryItem : : copy_assin_Ctors , " osl_DirectoryItem " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_DirectoryItem : : is , " osl_DirectoryItem " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_DirectoryItem : : get , " osl_DirectoryItem " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_DirectoryItem : : getFileStatus , " osl_DirectoryItem " ) ;
} // namespace osl_DirectoryItem
//------------------------------------------------------------------------
// Beginning of the test cases for Directory class
//------------------------------------------------------------------------
namespace osl_Directory
{
//---------------------------------------------------------------------
// testing the method
// Directory( const ::rtl::OUString& strPath ): _pData( 0 ), _aPath( strPath )
//---------------------------------------------------------------------
class ctors : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
2004-03-19 13:48:16 +00:00
// LLA: t_print("tearDown done.\n");
2003-04-17 07:34:31 +00:00
}
// test code.
void ctors_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//close a directory
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError2 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: create an instance and check open and close " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_None = = nError2 ) ) ;
}
void ctors_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName9 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//close a directory
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError2 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for ctors function: relative URL, :-), it is also worked " ,
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_None = = nError2 ) ) ;
}
CPPUNIT_TEST_SUITE ( ctors ) ;
CPPUNIT_TEST ( ctors_001 ) ;
CPPUNIT_TEST ( ctors_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class ctors
//---------------------------------------------------------------------
// testing the method
// inline RC open()
//---------------------------------------------------------------------
class open : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void open_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
//check if directory is opened.
sal_Bool bOk = testDirectory . isOpen ( ) ;
//close a directory
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a directory and check for open " ,
( sal_True = = bOk ) & &
( : : osl : : FileBase : : E_None = = nError1 ) & &
( : : osl : : FileBase : : E_None = = nError2 ) ) ;
}
void open_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName6 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
if ( : : osl : : FileBase : : E_None = = nError1 )
{
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError2 ) ;
}
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a file that is not existed " ,
( : : osl : : FileBase : : E_NOENT = = nError1 ) ) ;
}
void open_003 ( )
{
2003-10-06 12:40:17 +00:00
: : osl : : Directory testDirectory ( aUserDirectorySys ) ; //constructor
2003-04-17 07:34:31 +00:00
//open a directory
nError1 = testDirectory . open ( ) ;
if ( : : osl : : FileBase : : E_None = = nError1 )
{
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError2 ) ;
}
CPPUNIT_ASSERT_MESSAGE ( " test for open function: using system path " ,
( : : osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void open_004 ( )
{
: : osl : : Directory testDirectory ( aTmpName4 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
if ( : : osl : : FileBase : : E_None = = nError1 )
{
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError2 ) ;
}
CPPUNIT_ASSERT_MESSAGE ( " test for open function: open a file instead of a directory " ,
2003-05-27 13:19:09 +00:00
( : : osl : : FileBase : : E_NOTDIR = = nError1 ) | | ( : : osl : : FileBase : : E_ACCES ) ) ;
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( open ) ;
CPPUNIT_TEST ( open_001 ) ;
CPPUNIT_TEST ( open_002 ) ;
CPPUNIT_TEST ( open_003 ) ;
CPPUNIT_TEST ( open_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class open
//---------------------------------------------------------------------
// testing the method
// inline sal_Bool isOpen() { return _pData != NULL; };
//---------------------------------------------------------------------
class isOpen : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempfile in $TEMP/tmpdir/tmpname.
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
}
void tearDown ( )
{
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void isOpen_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
//check if directory is opened.
sal_Bool bOk = testDirectory . isOpen ( ) ;
//close a directory
nError2 = testDirectory . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isOpen function: open a directory and check for open " ,
( sal_True = = bOk ) ) ;
}
void isOpen_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//check if directory is opened.
sal_Bool bOk = testDirectory . isOpen ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isOpen function: do not open a directory and check for open " ,
! ( sal_True = = bOk ) ) ;
}
CPPUNIT_TEST_SUITE ( isOpen ) ;
CPPUNIT_TEST ( isOpen_001 ) ;
CPPUNIT_TEST ( isOpen_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class isOpen
//---------------------------------------------------------------------
// testing the method
// inline RC close()
//---------------------------------------------------------------------
class close : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// initialization
void setUp ( )
{
// create a tempdirectory : $TEMP/tmpdir.
createTestDirectory ( aTmpName3 ) ;
}
void tearDown ( )
{
// remove a tempdirectory : $TEMP/tmpdir.
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void close_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
//close a directory
nError2 = testDirectory . close ( ) ;
//check if directory is opened.
sal_Bool bOk = testDirectory . isOpen ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isOpen function: close a directory and check for open " ,
! ( sal_True = = bOk ) ) ;
}
void close_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//close a directory
nError1 = testDirectory . close ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for isOpen function: close a not opened directory " ,
( : : osl : : FileBase : : E_BADF = = nError1 ) ) ;
}
CPPUNIT_TEST_SUITE ( close ) ;
CPPUNIT_TEST ( close_001 ) ;
CPPUNIT_TEST ( close_002 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class close
//---------------------------------------------------------------------
// testing the method
// inline RC reset()
//---------------------------------------------------------------------
class reset : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
// create a tempdirectory : $TEMP/tmpdir.
createTestDirectory ( aTmpName3 ) ;
// create three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
createTestFile ( aTmpName3 , aTmpName2 ) ;
createTestFile ( aTmpName3 , aTmpName1 ) ;
createTestFile ( aTmpName3 , aHidURL1 ) ;
}
void tearDown ( )
{
// remove three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
deleteTestFile ( aTmpName3 , aHidURL1 ) ;
deleteTestFile ( aTmpName3 , aTmpName1 ) ;
deleteTestFile ( aTmpName3 , aTmpName2 ) ;
// remove a tempdirectory : $TEMP/tmpdir.
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void reset_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get first Item
nError1 = testDirectory . getNextItem ( rItem , 1 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//get second Item
2003-11-18 15:38:22 +00:00
//mindy: nError1 = testDirectory.getNextItem( rItem, 0 );
//mindy: CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
2003-04-17 07:34:31 +00:00
//reset enumeration
nError2 = testDirectory . reset ( ) ;
2003-11-18 15:38:22 +00:00
//get reseted Item, if reset does not work, getNextItem() should return the second Item (aTmpName1)
2003-04-17 07:34:31 +00:00
nError1 = testDirectory . getNextItem ( rItem , 0 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check the file name
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
//close a directory
nError1 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
2003-11-18 15:38:22 +00:00
sal_Bool bOK1 , bOK2 ;
bOK1 = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ;
bOK2 = compareFileName ( rFileStatus . getFileName ( ) , aHidURL1 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for reset function: get two directory item, reset it, then get again, check the filename " ,
( : : osl : : FileBase : : E_None = = nError2 ) & &
2003-11-18 15:38:22 +00:00
( sal_True = = bOK1 | | bOK2 ) ) ;
2003-04-17 07:34:31 +00:00
}
void reset_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName6 ) ; //constructor
//close a directory
nError1 = testDirectory . reset ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for reset function: reset a non existed directory " ,
( : : osl : : FileBase : : E_NOENT = = nError1 ) ) ;
}
void reset_003 ( )
{
: : osl : : Directory testDirectory ( aTmpName4 ) ; //constructor
//close a directory
nError1 = testDirectory . reset ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for reset function: reset a file instead of a directory " ,
2003-05-27 13:19:09 +00:00
( : : osl : : FileBase : : E_NOTDIR = = nError1 ) | | ( : : osl : : FileBase : : E_NOENT = = nError1 ) ) ;
2003-04-17 07:34:31 +00:00
}
void reset_004 ( )
{
2003-10-06 12:40:17 +00:00
: : osl : : Directory testDirectory ( aUserDirectorySys ) ; //constructor
2003-04-17 07:34:31 +00:00
//close a directory
nError1 = testDirectory . reset ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for reset function: use a system path " ,
( : : osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
CPPUNIT_TEST_SUITE ( reset ) ;
CPPUNIT_TEST ( reset_001 ) ;
CPPUNIT_TEST ( reset_002 ) ;
CPPUNIT_TEST ( reset_003 ) ;
CPPUNIT_TEST ( reset_004 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class reset
//---------------------------------------------------------------------
// testing the method
// inline RC getNextItem( DirectoryItem& rItem, sal_uInt32 nHint = 0 )
//---------------------------------------------------------------------
class getNextItem : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
: : osl : : DirectoryItem rItem ;
public :
// initialization
void setUp ( )
{
// create a tempdirectory : $TEMP/tmpdir.
createTestDirectory ( aTmpName3 ) ;
// create three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
createTestFile ( aTmpName3 , aTmpName2 ) ;
createTestFile ( aTmpName3 , aTmpName1 ) ;
createTestFile ( aTmpName3 , aHidURL1 ) ;
2003-11-18 15:38:22 +00:00
2003-04-17 07:34:31 +00:00
}
void tearDown ( )
{
// remove three files : $TEMP/tmpdir/tmpname, $TEMP/tmpdir/tmpdir, $TEMP/tmpdir/hiddenfile,
deleteTestFile ( aTmpName3 , aHidURL1 ) ;
deleteTestFile ( aTmpName3 , aTmpName1 ) ;
deleteTestFile ( aTmpName3 , aTmpName2 ) ;
// remove a tempdirectory : $TEMP/tmpdir.
deleteTestDirectory ( aTmpName3 ) ;
}
// test code.
void getNextItem_001 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//check the file name
: : rtl : : OUString strFilename ;
sal_Bool bOk1 , bOk2 , bOk3 ;
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName ) ;
for ( int nCount = 0 ; nCount < 3 ; nCount + + )
{
//get three Items
nError1 = testDirectory . getNextItem ( rItem , 2 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
nError1 = rItem . getFileStatus ( rFileStatus ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
switch ( nCount )
{
2003-11-18 15:38:22 +00:00
case 0 : bOk1 = compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) | | compareFileName ( rFileStatus . getFileName ( ) , aHidURL1 ) ;
2003-04-17 07:34:31 +00:00
break ;
case 1 : bOk2 = compareFileName ( rFileStatus . getFileName ( ) , aTmpName1 ) ;
break ;
2003-11-18 15:38:22 +00:00
case 2 : bOk3 = compareFileName ( rFileStatus . getFileName ( ) , aHidURL1 ) | | compareFileName ( rFileStatus . getFileName ( ) , aTmpName2 ) ;
2003-04-17 07:34:31 +00:00
}
}
//close a directory
nError1 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getNextItem function: retrive three items and check their names. " ,
( sal_True = = bOk1 ) & & ( sal_True = = bOk2 ) & & ( sal_True = = bOk3 ) ) ;
}
void getNextItem_002 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
nError1 = testDirectory . getNextItem ( rItem ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getNextItem function: retrive an item in a directory which is not opened, also test for nHint's default value. " ,
( : : osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void getNextItem_003 ( )
{
: : osl : : Directory testDirectory ( aTmpName3 ) ; //constructor
//open a directory
nError1 = testDirectory . open ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
for ( int nCount = 0 ; nCount < 4 ; nCount + + )
{
nError2 = testDirectory . getNextItem ( rItem , 3 ) ;
}
//close a directory
nError1 = testDirectory . close ( ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getNextItem function: retrive 4 times in a directory which contain only 3 files. " ,
( : : osl : : FileBase : : E_NOENT = = nError2 ) ) ;
}
2003-11-18 15:38:22 +00:00
void getNextItem_004 ( )
{
//create a link file(can not on Windows), then check if getNextItem can get it.
# ifdef UNX
sal_Bool bOK = sal_False ;
: : rtl : : OUString aUStr_LnkFileSys ( aTempDirectorySys ) , aUStr_SrcFileSys ( aTempDirectorySys ) ;
( ( aUStr_LnkFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /tmpdir/link.file " ) ;
( ( aUStr_SrcFileSys + = aSlashURL ) + = getCurrentPID ( ) ) + = : : rtl : : OUString : : createFromAscii ( " /tmpdir/tmpname " ) ;
2003-12-11 11:30:40 +00:00
rtl : : OString strLinkFileName , strSrcFileName ;
strLinkFileName = OUStringToOString ( aUStr_LnkFileSys , RTL_TEXTENCODING_ASCII_US ) ;
strSrcFileName = OUStringToOString ( aUStr_SrcFileSys , RTL_TEXTENCODING_ASCII_US ) ;
2003-11-18 15:38:22 +00:00
//create a link file and link it to file "/tmp/PID/tmpdir/tmpname"
2003-12-11 11:30:40 +00:00
sal_Int32 fd = symlink ( strSrcFileName . getStr ( ) , strLinkFileName . getStr ( ) ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT ( fd = = 0 ) ;
: : osl : : Directory testDirectory ( aTmpName3 ) ;
//open a directory
nError1 = testDirectory . open ( ) ;
: : rtl : : OUString aFileName = : : rtl : : OUString : : createFromAscii ( " link.file " ) ;
while ( 1 ) {
nError1 = testDirectory . getNextItem ( rItem , 4 ) ;
if ( : : osl : : FileBase : : E_None = = nError1 ) {
: : osl : : FileStatus rFileStatus ( FileStatusMask_FileName | FileStatusMask_Type ) ;
rItem . getFileStatus ( rFileStatus ) ;
if ( compareFileName ( rFileStatus . getFileName ( ) , aFileName ) = = sal_True )
{
if ( FileStatus : : Link = = rFileStatus . getFileType ( ) )
{
bOK = sal_True ;
break ;
}
}
}
else
break ;
} ;
2003-12-11 11:30:40 +00:00
fd = std : : remove ( strLinkFileName . getStr ( ) ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( " remove link file failed " , fd = = 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getNextItem function: check if can retrieve the link file name " ,
( bOK = = sal_True ) ) ;
# endif
}
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE ( getNextItem ) ;
CPPUNIT_TEST ( getNextItem_001 ) ;
CPPUNIT_TEST ( getNextItem_002 ) ;
CPPUNIT_TEST ( getNextItem_003 ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_TEST ( getNextItem_004 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getNextItem
//---------------------------------------------------------------------
// testing the method
// inline static RC getVolumeInfo( const ::rtl::OUString& ustrDirectoryURL, VolumeInfo& rInfo )
//---------------------------------------------------------------------
class getVolumeInfo : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// test code.
2003-11-18 15:38:22 +00:00
void checkValidMask ( osl : : VolumeInfo const & _aVolumeInfo , sal_Int32 _nMask )
{
if ( _nMask = = VolumeInfoMask_FileSystemName )
2003-04-17 07:34:31 +00:00
{
//get file system name
: : rtl : : OUString aFileSysName ( aNullURL ) ;
2003-11-18 15:38:22 +00:00
aFileSysName = _aVolumeInfo . getFileSystemName ( ) ;
2003-04-17 07:34:31 +00:00
2003-11-18 15:38:22 +00:00
sal_Bool bRes2 = compareFileName ( aFileSysName , aNullURL ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for getVolumeInfo function: getVolumeInfo of root directory. " ,
( osl : : FileBase : : E_None = = nError1 ) & &
2003-11-18 15:38:22 +00:00
( sal_False = = bRes2 ) ) ;
}
if ( _nMask = = VolumeInfoMask_Attributes )
{
sal_Bool b1 = _aVolumeInfo . getRemoteFlag ( ) ;
sal_Bool b2 = _aVolumeInfo . getRemoveableFlag ( ) ;
sal_Bool b3 = _aVolumeInfo . getCompactDiscFlag ( ) ;
sal_Bool b4 = _aVolumeInfo . getFloppyDiskFlag ( ) ;
sal_Bool b5 = _aVolumeInfo . getFixedDiskFlag ( ) ;
sal_Bool b6 = _aVolumeInfo . getRAMDiskFlag ( ) ;
rtl : : OString sAttr ;
if ( b1 ) sAttr = " Remote " ;
if ( b2 ) sAttr + = " Removeable " ;
if ( b3 ) sAttr + = " CDROM " ;
if ( b4 ) sAttr + = " Floppy " ;
if ( b5 ) sAttr + = " FixedDisk " ;
if ( b6 ) sAttr + = " RAMDisk " ;
2004-03-19 13:48:16 +00:00
t_print ( " Attributes: %s \n " , sAttr . getStr ( ) ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_TotalSpace )
{
// within Linux, df / * 1024 bytes is the result
sal_uInt64 nSize = _aVolumeInfo . getTotalSpace ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " Total space: %lld \n " , nSize ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_UsedSpace )
{
sal_uInt64 nSize = _aVolumeInfo . getUsedSpace ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " Used space: %lld \n " , nSize ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_FreeSpace )
{
sal_uInt64 nSize = _aVolumeInfo . getFreeSpace ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " Free space: %lld \n " , nSize ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_MaxNameLength )
{
sal_uInt32 nLength = _aVolumeInfo . getMaxNameLength ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " max name length: %ld \n " , nLength ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_MaxPathLength )
{
sal_uInt32 nLength = _aVolumeInfo . getMaxPathLength ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " max path length: %ld \n " , nLength ) ;
2003-11-18 15:38:22 +00:00
}
if ( _nMask = = VolumeInfoMask_FileSystemCaseHandling )
{
bool bIsCase = _aVolumeInfo . isCaseSensitiveFileSystem ( ) ;
2004-03-19 13:48:16 +00:00
t_print ( " filesystem case sensitive: %s \n " , bIsCase ? " yes " : " no " ) ;
2003-11-18 15:38:22 +00:00
}
}
void checkVolumeInfo ( sal_Int32 _nMask )
{
: : osl : : VolumeInfo aVolumeInfo ( _nMask ) ;
//call getVolumeInfo here
nError1 = : : osl : : Directory : : getVolumeInfo ( aVolURL1 , aVolumeInfo ) ;
// LLA: IMHO it's not a bug, if VolumeInfo is not valid, it's a feature
// LLA: CPPUNIT_ASSERT_MESSAGE("mask is not valid", sal_True == aVolumeInfo.isValid( _nMask ) );
if ( aVolumeInfo . isValid ( _nMask ) )
{
checkValidMask ( aVolumeInfo , _nMask ) ;
}
}
void getVolumeInfo_001_1 ( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_2 ( )
{
sal_Int32 mask = VolumeInfoMask_Attributes ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_3 ( )
{
sal_Int32 mask = VolumeInfoMask_TotalSpace ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_4 ( )
{
sal_Int32 mask = VolumeInfoMask_UsedSpace ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_5 ( )
{
sal_Int32 mask = VolumeInfoMask_FreeSpace ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_6 ( )
{
sal_Int32 mask = VolumeInfoMask_MaxNameLength ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_7 ( )
{
sal_Int32 mask = VolumeInfoMask_MaxPathLength ;
checkVolumeInfo ( mask ) ;
}
void getVolumeInfo_001_8 ( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemCaseHandling ;
checkVolumeInfo ( mask ) ;
2003-04-17 07:34:31 +00:00
}
void getVolumeInfo_002 ( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
//call getVolumeInfo here
2003-11-18 15:38:22 +00:00
// LLA: rtl::OUString aRootSysURL;
// LLA: nError1 = osl::File::getFileURLFromSystemPath(aRootSys, aRootSysURL);
// LLA:
// LLA: CPPUNIT_ASSERT_MESSAGE( "can't convert root path to file url",
// LLA: ( osl::FileBase::E_NONE == nError1 ) );
2003-04-17 07:34:31 +00:00
nError1 = : : osl : : Directory : : getVolumeInfo ( aRootSys , aVolumeInfo ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for getVolumeInfo function: use system path as parameter. " ,
( osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void getVolumeInfo_003 ( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName ;
: : osl : : VolumeInfo aVolumeInfo ( mask ) ;
//call getVolumeInfo here
nError1 = : : osl : : Directory : : getVolumeInfo ( aTmpName3 , aVolumeInfo ) ;
2003-11-18 15:38:22 +00:00
// LLA: in Windows, it reply no error, it did not pass in (W32).
# ifdef UNX
CPPUNIT_ASSERT_MESSAGE ( " test for getVolumeInfo function: non-existence test. " ,
2003-04-17 07:34:31 +00:00
( osl : : FileBase : : E_NOENT = = nError1 ) ) ;
2003-11-18 15:38:22 +00:00
# endif
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( getVolumeInfo ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_TEST ( getVolumeInfo_001_1 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_2 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_3 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_4 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_5 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_6 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_7 ) ;
CPPUNIT_TEST ( getVolumeInfo_001_8 ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST ( getVolumeInfo_002 ) ;
CPPUNIT_TEST ( getVolumeInfo_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class getVolumeInfo
//---------------------------------------------------------------------
// testing the method
// inline static RC create( const ::rtl::OUString& ustrDirectoryURL )
//---------------------------------------------------------------------
class create : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// test code.
void create_001 ( )
{
//create directory in $TEMP/tmpdir
nError1 = : : osl : : Directory : : create ( aTmpName3 ) ;
//check for existence
2003-05-27 13:19:09 +00:00
nError2 = : : osl : : Directory : : create ( aTmpName3 ) ;
2003-04-17 07:34:31 +00:00
//remove it
deleteTestDirectory ( aTmpName3 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for create function: create a directory and check its existence. " ,
( osl : : FileBase : : E_None = = nError1 ) & &
2003-05-27 13:19:09 +00:00
( osl : : FileBase : : E_EXIST = = nError2 ) ) ;
2003-04-17 07:34:31 +00:00
}
void create_002 ( )
{
//create directory in /tmpname
nError1 = : : osl : : Directory : : create ( aTmpName7 ) ;
2003-05-27 13:19:09 +00:00
# if defined (WNT )
nError1 = osl : : FileBase : : E_ACCES ; /// in Windows, you can create directory in c:/ any way.
deleteTestDirectory ( aTmpName7 ) ;
# endif
2003-04-17 07:34:31 +00:00
CPPUNIT_ASSERT_MESSAGE ( " test for create function: create a directory in root for access test. " ,
( osl : : FileBase : : E_ACCES = = nError1 ) ) ;
}
void create_003 ( )
{
//create directory in /tmpname
nError1 = : : osl : : Directory : : create ( aSysPath1 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for create function: create a directory using system path. " ,
( osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
CPPUNIT_TEST_SUITE ( create ) ;
CPPUNIT_TEST ( create_001 ) ;
CPPUNIT_TEST ( create_002 ) ;
CPPUNIT_TEST ( create_003 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class create
//---------------------------------------------------------------------
// testing the method
// inline static RC remove( const ::rtl::OUString& ustrDirectoryURL )
//---------------------------------------------------------------------
class remove : public CppUnit : : TestFixture
{
: : osl : : FileBase : : RC nError1 , nError2 ;
public :
// test code.
void remove_001 ( )
{
//create directory in $TEMP/tmpdir
nError1 = : : osl : : Directory : : create ( aTmpName3 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//remove it
nError1 = : : osl : : Directory : : remove ( aTmpName3 ) ;
//check for existence
: : osl : : Directory rDirectory ( aTmpName3 ) ;
nError2 = rDirectory . open ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: remove a directory and check its existence. " ,
( osl : : FileBase : : E_None = = nError1 ) & &
( osl : : FileBase : : E_NOENT = = nError2 ) ) ;
}
void remove_002 ( )
{
//create directory in $TEMP/tmpdir
nError1 = : : osl : : Directory : : create ( aTmpName3 ) ;
CPPUNIT_ASSERT ( : : osl : : FileBase : : E_None = = nError1 ) ;
//try to remove it by system path
nError1 = : : osl : : Directory : : remove ( aSysPath3 ) ;
//check for existence
: : osl : : Directory rDirectory ( aTmpName3 ) ;
nError2 = rDirectory . open ( ) ;
if ( osl : : FileBase : : E_NOENT ! = nError2 )
: : osl : : Directory : : remove ( aTmpName3 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: remove a directory by its system path, and check its existence. " ,
( osl : : FileBase : : E_INVAL = = nError1 ) ) ;
}
void remove_003 ( )
{
//try to remove a non-existed directory
nError1 = : : osl : : Directory : : remove ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: try to remove a non-existed directory. " ,
( osl : : FileBase : : E_NOENT = = nError1 ) ) ;
}
void remove_004 ( )
{
createTestFile ( aTmpName6 ) ;
2003-11-18 15:38:22 +00:00
sal_Bool bExist = ifFileExist ( aTmpName6 ) ;
2003-04-17 07:34:31 +00:00
//try to remove file.
nError1 = : : osl : : Directory : : remove ( aTmpName6 ) ;
deleteTestFile ( aTmpName6 ) ;
CPPUNIT_ASSERT_MESSAGE ( " test for remove function: try to remove a file but not directory. " ,
2003-11-18 15:38:22 +00:00
bExist = = sal_True & & ( ( osl : : FileBase : : E_NOTDIR = = nError1 ) | | ( osl : : FileBase : : E_NOENT = = nError1 ) ) ) ;
2003-04-17 07:34:31 +00:00
}
void remove_005 ( )
{
createTestDirectory ( aTmpName3 ) ;
createTestFile ( aTmpName4 ) ;
nError1 = : : osl : : Directory : : remove ( aTmpName3 ) ;
deleteTestFile ( aTmpName4 ) ;
deleteTestDirectory ( aTmpName3 ) ;
2003-11-18 15:38:22 +00:00
: : rtl : : OUString suError = : : rtl : : OUString : : createFromAscii ( " test for remove function: try to remove a directory that is not empty. " ) + errorToStr ( nError1 ) ;
2003-12-11 11:30:40 +00:00
# if defined ( SOLARIS )
2003-11-18 15:38:22 +00:00
//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.
//EEXIST The directory contains entries other than those for "." and "..".
2004-03-19 13:48:16 +00:00
t_print ( " #Solaris test \n " ) ;
2003-11-18 15:38:22 +00:00
CPPUNIT_ASSERT_MESSAGE ( suError , ( osl : : FileBase : : E_EXIST = = nError1 ) ) ;
# else
CPPUNIT_ASSERT_MESSAGE ( suError , ( osl : : FileBase : : E_NOTEMPTY = = nError1 ) ) ;
# endif
2003-04-17 07:34:31 +00:00
}
CPPUNIT_TEST_SUITE ( remove ) ;
CPPUNIT_TEST ( remove_001 ) ;
CPPUNIT_TEST ( remove_002 ) ;
CPPUNIT_TEST ( remove_003 ) ;
CPPUNIT_TEST ( remove_004 ) ;
CPPUNIT_TEST ( remove_005 ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class remove
2004-02-03 12:36:49 +00:00
//########################################
// TEST Directory::createPath
//########################################
# ifdef WNT
# define PATH_BUFFER_SIZE MAX_PATH
# else
# define PATH_BUFFER_SIZE PATH_MAX
# endif
char TEST_PATH_POSTFIX [ ] = " hello/world " ;
//########################################
OUString get_test_path ( )
{
OUString tmp ;
FileBase : : RC rc = FileBase : : getTempDirURL ( tmp ) ;
CPPUNIT_ASSERT_MESSAGE
(
" Test path creation failed " ,
rc = = FileBase : : E_None
) ;
OUStringBuffer b ( tmp ) ;
if ( tmp . lastIndexOf ( ' / ' ) ! = ( tmp . getLength ( ) - 1 ) )
b . appendAscii ( " / " ) ;
b . appendAscii ( TEST_PATH_POSTFIX ) ;
return b . makeStringAndClear ( ) ;
}
//########################################
void rm_test_path ( const OUString & path )
{
sal_Unicode buffer [ PATH_BUFFER_SIZE ] ;
rtl_copyMemory ( buffer , path . getStr ( ) , ( path . getLength ( ) + 1 ) * sizeof ( sal_Unicode ) ) ;
sal_Int32 i = rtl_ustr_lastIndexOfChar ( buffer , ' / ' ) ;
if ( i = = path . getLength ( ) )
buffer [ i ] = 0 ;
Directory : : remove ( buffer ) ;
i = rtl_ustr_lastIndexOfChar ( buffer , ' / ' ) ;
buffer [ i ] = 0 ;
Directory : : remove ( buffer ) ;
}
//########################################
class DirCreatedObserver : public DirectoryCreationObserver
{
public :
DirCreatedObserver ( ) : i ( 0 )
{
}
virtual void DirectoryCreated ( const rtl : : OUString & aDirectoryUrl )
{
i + + ;
} ;
int number_of_dirs_created ( ) const
{
return i ;
}
private :
int i ;
} ;
//########################################
class createPath : public CppUnit : : TestFixture
{
public :
//##########################################
createPath ( )
{ }
//##########################################
void with_relative_path ( )
{
FileBase : : RC rc = Directory : : createPath (
OUString : : createFromAscii ( TEST_PATH_POSTFIX ) ) ;
CPPUNIT_ASSERT_MESSAGE
(
" osl_createDirectoryPath contract broken " ,
rc = = FileBase : : E_INVAL
) ;
}
//##########################################
void without_callback ( )
{
OUString tp_url = get_test_path ( ) ;
rm_test_path ( tp_url ) ;
FileBase : : RC rc = Directory : : createPath ( tp_url ) ;
CPPUNIT_ASSERT_MESSAGE
(
" osl_createDirectoryPath failed " ,
rc = = FileBase : : E_None
) ;
}
//##########################################
void with_callback ( )
{
OUString tp_url = get_test_path ( ) ;
rm_test_path ( tp_url ) ;
DirCreatedObserver * observer = new DirCreatedObserver ;
FileBase : : RC rc = Directory : : createPath ( tp_url , observer ) ;
2004-05-03 07:57:00 +00:00
int nDirs = observer - > number_of_dirs_created ( ) ;
delete observer ;
2004-02-03 12:36:49 +00:00
CPPUNIT_ASSERT_MESSAGE
(
" osl_createDirectoryPath failed " ,
2004-05-03 07:57:00 +00:00
( rc = = FileBase : : E_None ) & & ( nDirs > 0 )
2004-02-03 12:36:49 +00:00
) ;
}
2004-05-03 07:57:00 +00:00
# ifdef WNT
2004-02-03 12:36:49 +00:00
//##########################################
char * get_unused_drive_letter ( )
{
2004-05-03 07:57:00 +00:00
static char m_aBuff [ ] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ " ;
2004-02-03 12:36:49 +00:00
DWORD ld = GetLogicalDrives ( ) ;
DWORD i = 4 ;
DWORD j = 2 ;
while ( ( ld & i ) & & ( i > 1 ) )
{ i = i < < 1 ; j + + ; }
if ( i > 2 )
2004-05-03 07:57:00 +00:00
return m_aBuff + j ;
2004-02-03 12:36:49 +00:00
return NULL ;
}
//##########################################
void at_invalid_logical_drive ( )
{
char * drv = get_unused_drive_letter ( ) ;
char buff [ PATH_BUFFER_SIZE ] ;
rtl_zeroMemory ( buff , sizeof ( buff ) ) ;
strncpy ( buff , drv , 1 ) ;
strcat ( buff , " : \\ " ) ;
strcat ( buff , TEST_PATH_POSTFIX ) ;
OUString path = OUString : : createFromAscii ( buff ) ;
OUString tp_url ;
FileBase : : getFileURLFromSystemPath ( path , tp_url ) ;
FileBase : : RC rc = Directory : : createPath ( tp_url ) ;
CPPUNIT_ASSERT_MESSAGE
(
" osl_createDirectoryPath doesn't fail on unused logical drive letters " ,
rc ! = FileBase : : E_None
) ;
}
//##########################################
void with_UNC_path ( )
{
OUString tp_unc = OUString : : createFromAscii ( " \\ \\ Tra-1 \\ TRA_D \\ hello \\ world \\ " ) ;
OUString tp_url ;
FileBase : : getFileURLFromSystemPath ( tp_unc , tp_url ) ;
FileBase : : RC rc = Directory : : createPath ( tp_url ) ;
CPPUNIT_ASSERT_MESSAGE
(
" osl_createDirectoryPath fails with UNC path " ,
rc = = FileBase : : E_None
) ;
}
2004-05-03 07:57:00 +00:00
# endif /* WNT */
2004-02-03 12:36:49 +00:00
CPPUNIT_TEST_SUITE ( createPath ) ;
CPPUNIT_TEST ( with_relative_path ) ;
CPPUNIT_TEST ( without_callback ) ;
CPPUNIT_TEST ( with_callback ) ;
# ifdef WNT
CPPUNIT_TEST ( at_invalid_logical_drive ) ;
// adapt the UNC path in method createDirectoryPath_with_UNC_path
// in order to run this test successfully
//CPPUNIT_TEST(with_UNC_path);
# endif
CPPUNIT_TEST_SUITE_END ( ) ;
} ; // class createPath
2003-04-17 07:34:31 +00:00
// -----------------------------------------------------------------------------
2003-10-06 12:40:17 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : ctors , " osl_Directory " ) ;
2003-04-17 07:34:31 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : open , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : isOpen , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : close , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : reset , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : getNextItem , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : getVolumeInfo , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : create , " osl_Directory " ) ;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : remove , " osl_Directory " ) ;
2004-02-03 12:36:49 +00:00
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( osl_Directory : : createPath , " osl_Directory " ) ;
2003-04-17 07:34:31 +00:00
} // namespace osl_Directory
// -----------------------------------------------------------------------------
// this macro creates an empty function, which will called by the RegisterAllFunctions()
// to let the user the possibility to also register some functions by hand.
// -----------------------------------------------------------------------------
2003-05-27 13:19:09 +00:00
/// NOADDITIONAL;
2003-10-06 12:40:17 +00:00
/** get Current PID.
*/
inline : : rtl : : OUString getCurrentPID ( )
{
//~ Get current PID and turn it into OUString;
int nPID = 0 ;
# ifdef WNT
nPID = GetCurrentProcessId ( ) ;
# else
nPID = getpid ( ) ;
# endif
return ( : : rtl : : OUString : : valueOf ( ( long ) nPID ) ) ;
}
/** Insert Current PID to the URL to avoid access violation between multiuser execution.
*/
inline void insertPID ( : : rtl : : OUString & pathname )
{
//~ check if the path contain the temp directory, do nothing changes if not;
if ( pathname . indexOf ( aTempDirectoryURL ) & & pathname . indexOf ( aTempDirectorySys ) )
return ;
//~ format pathname to TEMP/USERPID/URL style;
if ( ! pathname . indexOf ( aTempDirectoryURL ) )
{
: : rtl : : OUString strPID ( getCurrentPID ( ) ) ;
: : rtl : : OUString pathLeft = aTempDirectoryURL . copy ( 0 ) ;
: : rtl : : OUString pathRight = pathname . copy ( aTempDirectoryURL . getLength ( ) ) ;
pathname = pathLeft . copy ( 0 ) ;
( ( pathname + = aSlashURL ) + = strPID ) + = pathRight ;
}
else
{
: : rtl : : OUString strPID ( getCurrentPID ( ) ) ;
: : rtl : : OUString pathLeft = aTempDirectorySys . copy ( 0 ) ;
: : rtl : : OUString pathRight = pathname . copy ( aTempDirectorySys . getLength ( ) ) ;
pathname = pathLeft . copy ( 0 ) ;
( ( pathname + = aSlashURL ) + = strPID ) + = pathRight ;
}
}
2003-05-27 13:19:09 +00:00
/** to do some initialized work, we replace the NOADDITIONAL macro with the initialize work which
will check the file and directory existence . and set some variables for test use .
2003-10-06 12:40:17 +00:00
to simplify the initialize work , we seperate it into UNIX section and Windows section , the main task
of initialization is adapt all URL defined in osl_File_Const . h to TEMP / USERPID / URL style format ,
since there may be an instance that multiuser execute test at the same time , and the temp file
may not be clean up in this case due to access right problem .
2003-05-27 13:19:09 +00:00
*/
2003-10-06 12:40:17 +00:00
void RegisterAdditionalFunctions ( FktRegFuncPtr _pFunc )
2003-05-27 13:19:09 +00:00
{
2004-03-19 13:48:16 +00:00
t_print ( " Initializing... " ) ;
2003-05-27 13:19:09 +00:00
2003-10-06 12:40:17 +00:00
//~ make sure the c:\temp exist, if not, create it.
# if ( defined WNT )
if ( checkDirectory ( aTempDirectoryURL , osl_Check_Mode_Exist ) ! = sal_True ) {
2004-03-19 13:48:16 +00:00
t_print ( " \n #C: \\ temp is not exist, now creating \n " ) ;
2003-10-06 12:40:17 +00:00
createTestDirectory ( aTempDirectoryURL ) ;
} ;
# endif
2003-05-27 13:19:09 +00:00
2003-10-06 12:40:17 +00:00
//~ make sure the c:\temp\PID or /tmp/PID exist, if not, create it. initialize the user directory.
( aUserDirectoryURL + = aSlashURL ) + = getCurrentPID ( ) ;
( aUserDirectorySys + = aSlashURL ) + = getCurrentPID ( ) ;
2003-05-27 13:19:09 +00:00
2003-10-06 12:40:17 +00:00
if ( checkDirectory ( aUserDirectoryURL , osl_Check_Mode_Exist ) ! = sal_True ) {
createTestDirectory ( aUserDirectoryURL ) ;
2003-05-27 13:19:09 +00:00
}
2003-10-06 12:40:17 +00:00
//~ adapt all URL to the TEMP/USERPID/URL format;
insertPID ( aCanURL1 ) ;
insertPID ( aTmpName3 ) ;
insertPID ( aTmpName4 ) ;
insertPID ( aTmpName5 ) ;
insertPID ( aTmpName6 ) ;
insertPID ( aTmpName8 ) ;
insertPID ( aTmpName9 ) ;
insertPID ( aLnkURL1 ) ;
insertPID ( aFifoSys ) ;
insertPID ( aSysPath1 ) ;
insertPID ( aSysPath2 ) ;
insertPID ( aSysPath3 ) ;
insertPID ( aSysPath4 ) ;
2003-05-27 13:19:09 +00:00
2004-03-19 13:48:16 +00:00
t_print ( " Done. \n " ) ;
2003-05-27 13:19:09 +00:00
}
2003-10-06 12:40:17 +00:00
//~ do some clean up work after all test completed.
class GlobalObject
{
public :
~ GlobalObject ( )
{
try
{
//~ make sure the c:\temp\PID or /tmp/PID exist, if yes, delete it.
2004-03-19 13:48:16 +00:00
t_print ( " \n #Do some clean-ups ... \n " ) ;
2003-10-06 12:40:17 +00:00
if ( checkDirectory ( aUserDirectoryURL , osl_Check_Mode_Exist ) = = sal_True ) {
deleteTestDirectory ( aUserDirectoryURL ) ;
}
2004-03-19 13:48:16 +00:00
// LLA: t_print("after deleteTestDirectory\n");
2003-10-06 12:40:17 +00:00
//~ special clean up task in Windows and Unix seperately;
# if ( defined UNX ) || ( defined OS2 )
//~ some clean up task for UNIX OS
;
# else
//~ some clean up task for Windows OS
//~ check if some files are in the way, remove them if necessary.
2003-11-18 15:38:22 +00:00
if ( ifFileExist ( aTmpName6 ) = = sal_True )
2003-10-06 12:40:17 +00:00
deleteTestFile ( aTmpName6 ) ;
2003-11-18 15:38:22 +00:00
if ( ifFileExist ( aTmpName4 ) = = sal_True )
2003-10-06 12:40:17 +00:00
deleteTestFile ( aTmpName4 ) ;
if ( checkDirectory ( aTmpName4 , osl_Check_Mode_Exist ) = = sal_True )
deleteTestDirectory ( aTmpName4 ) ;
2003-11-18 15:38:22 +00:00
if ( ifFileExist ( aTmpName3 ) = = sal_True )
2003-10-06 12:40:17 +00:00
deleteTestFile ( aTmpName3 ) ;
if ( checkDirectory ( aTmpName3 , osl_Check_Mode_Exist ) = = sal_True )
deleteTestDirectory ( aTmpName3 ) ;
: : rtl : : OUString aUStr ( aUserDirectoryURL ) ;
concatURL ( aUStr , aHidURL1 ) ;
2003-11-18 15:38:22 +00:00
if ( ifFileExist ( aUStr ) = = sal_True )
2003-10-06 12:40:17 +00:00
deleteTestFile ( aUStr ) ;
: : rtl : : OUString aUStr1 ( aRootURL ) ;
concatURL ( aUStr1 , aTmpName2 ) ;
2003-11-18 15:38:22 +00:00
if ( ifFileExist ( aUStr1 ) = = sal_True )
2003-10-06 12:40:17 +00:00
deleteTestFile ( aUStr1 ) ;
# endif
}
catch ( CppUnit : : Exception & e )
{
2004-03-19 13:48:16 +00:00
t_print ( " Exception caught in GlobalObject dtor(). Exception message: '%s'. Source line: %d \n " , e . what ( ) , e . sourceLine ( ) . lineNumber ( ) ) ;
2003-10-06 12:40:17 +00:00
}
catch ( . . . )
{
2004-03-19 13:48:16 +00:00
t_print ( " Exception caught (...) in GlobalObject dtor() \n " ) ;
2003-10-06 12:40:17 +00:00
}
}
} ;
GlobalObject theGlobalObject ;