Files
libreoffice/sal/qa/osl/file/osl_File.cxx
Vladimir Glazounov a954200fe1 INTEGRATION: CWS qadev6 (1.2.8); FILE MERGED
2003/05/20 16:48:27 deuce 1.2.8.3: #109230# Solaris bug of abs() function fixed.
2003/05/19 13:34:20 lla 1.2.8.2: #109230# add some '#' to printf
2003/05/14 10:02:07 deuce 1.2.8.1: #109230# tested on Windows, Linux, Solaris, resolve directory problems.
2003-05-27 13:19:09 +00:00

5301 lines
207 KiB
C++

/*************************************************************************
*
* $RCSfile: osl_File.cxx,v $
*
* $Revision: 1.3 $
*
* last change: $Author: vg $ $Date: 2003-05-27 14:19:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems,
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* 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.
*
* 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.
*
* 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
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
//------------------------------------------------------------------------
// include files
//------------------------------------------------------------------------
#ifndef _SAL_TYPES_H_
#include <sal/types.h>
#endif
#ifndef _RTL_USTRING_HXX_
#include <rtl/ustring.hxx>
#endif
#ifndef _OSL_FILE_HXX_
#include <osl/file.hxx>
#endif
#ifndef _OSL_FILE_CONST_H_
#include <osl_File_Const.h>
#endif
#include <cppunit/simpleheader.hxx>
using namespace osl;
using namespace rtl;
//------------------------------------------------------------------------
// helper functions
//------------------------------------------------------------------------
/** print an output wrong message.
*/
inline void printError( const ::osl::FileBase::RC nError )
{
printf( "#printError# " );
switch ( nError ) {
case ::osl::FileBase::E_None:
printf( "Success!\n" );
break;
case ::osl::FileBase::E_PERM:
printf( "The returned error is: Permission denied!\n" );
break;
case ::osl::FileBase::E_NOENT:
printf( "The returned error is: Not Exist!\n" );
break;
case ::osl::FileBase::E_EXIST:
printf( "The returned error is: Already Exist!\n" );
break;
case ::osl::FileBase::E_ACCES:
printf( "The returned error is: Access denied!\n" );
break;
case ::osl::FileBase::E_INVAL:
printf( "The returned error is: Invalid Parameter!\n" );
break;
case ::osl::FileBase::E_NOTDIR:
printf( "The returned error is: Not a directory!\n" );
break;
case ::osl::FileBase::E_ISDIR:
printf( "The returned error is: Is a directory!\n" );
break;
case ::osl::FileBase::E_BADF:
printf( "The returned error is: Invalid Directory/File parameter!\n" );
break;
case ::osl::FileBase::E_NOTEMPTY:
printf( "The returned error is: The directory is not empty!\n" );
break;
default:
printf( "The returned error is: Number %d, Unknown Error\n", nError );
break;
}
}
/** print a file type name.
*/
inline void printFileType( const ::osl::FileStatus::Type nType )
{
printf( "#printFileType# " );
switch ( nType ) {
case ::osl::FileStatus::Directory:
printf( "This file is a: Directory.\n" );
break;
case ::osl::FileStatus::Volume:
printf( "This file is a: volume device.\n" );
break;
case ::osl::FileStatus::Regular:
printf( "This file is a: regular file.\n" );
break;
case ::osl::FileStatus::Fifo:
printf( "This file is a: fifo.\n" );
break;
case ::osl::FileStatus::Socket:
printf( "This file is a: socket.\n" );
break;
case ::osl::FileStatus::Link:
printf( "This file is a: link file.\n" );
break;
case ::osl::FileStatus::Special:
printf( "This file is a: special.\n" );
break;
case ::osl::FileStatus::Unknown:
printf( "The file type is unknown\n", nType );
break;
}
}
/** print a file attributes.
*/
inline void printFileAttributes( const sal_Int64 nAttributes )
{
printf( "#printFileAttributes# This file is a: (" );
if ( ( nAttributes | Attribute_ReadOnly ) == nAttributes )
printf( " ReadOnly " );
if ( ( nAttributes | Attribute_Hidden ) == nAttributes )
printf( " Hidden " );
if ( ( nAttributes | Attribute_Executable ) == nAttributes )
printf( " Executable " );
if ( ( nAttributes | Attribute_GrpWrite ) == nAttributes )
printf( " GrpWrite " );
if ( ( nAttributes | Attribute_GrpRead ) == nAttributes )
printf( " GrpRead " );
if ( ( nAttributes | Attribute_GrpExe ) == nAttributes )
printf( " GrpExe " );
if ( ( nAttributes | Attribute_OwnWrite ) == nAttributes )
printf( " OwnWrite " );
if ( ( nAttributes | Attribute_OwnRead ) == nAttributes )
printf( " OwnRead " );
if ( ( nAttributes | Attribute_OwnExe ) == nAttributes )
printf( " OwnExe " );
if ( ( nAttributes | Attribute_OthWrite ) == nAttributes )
printf( " OthWrite " );
if ( ( nAttributes | Attribute_OthRead ) == nAttributes )
printf( " OthRead " );
if ( ( nAttributes | Attribute_OthExe ) == nAttributes )
printf( " OthExe " );
printf( ") file!\n" );
}
/** print a UNI_CODE file name.
*/
inline void printFileName( const ::rtl::OUString & str )
{
rtl::OString aString;
printf( "#printFileName_u# " );
aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
printf( "%s\n", aString.getStr( ) );
}
/** print a ASCII_CODE file name.
*/
inline void printFileName( const sal_Char * str )
{
printf( "#printFileName_a# " );
printf( "%s\n", str );
}
/** print an signed Integer Number.
*/
inline void printInt( sal_Int64 i )
{
printf( "#printInt_i64# " );
printf( "The Integer64 is %lld\n", i);
}
/** print an unsigned Integer Number.
*/
inline void printInt( sal_uInt64 i )
{
printf( "#printInt_u64# " );
printf( "The unsigned Integer64 is %llu\n", i);
}
/** print Boolean value.
*/
inline void printBool( sal_Bool bOk )
{
printf( "#printBool# " );
( sal_True == bOk ) ? printf( "YES!\n" ): printf( "NO!\n" );
}
/** 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 ) );
printf( "#printTime# " );
printf( " Time is: %d/%d/%d ", pDateTime->Month, pDateTime->Day, pDateTime->Year);
switch ( pDateTime->DayOfWeek )
{
case 0: printf("Sun. "); break;
case 1: printf("Mon. "); break;
case 2: printf("Tue. "); break;
case 3: printf("Thr. "); break;
case 4: printf("Wen. "); break;
case 5: printf("Fri. "); break;
case 6: printf("Sat. "); break;
}
printf( " %d:%d:%d %d nsecs\n", pDateTime->Hours, pDateTime->Minutes, pDateTime->Seconds, pDateTime->NanoSeconds);
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
# define delta 1800 //time precision, 1.8s
#endif
inline sal_Bool compareTime( TimeValue *tv1, TimeValue *tv2, sal_uInt64 nDelta)
{
sal_uInt64 uTimeValue;
sal_Int64 iTimeValue;
iTimeValue = ( tv1->Seconds * 1000000000 + tv1->Nanosec ) - ( tv2->Seconds * 1000000000 + tv2->Nanosec );
if ( iTimeValue < 0 )
iTimeValue = -1 * iTimeValue;
uTimeValue = ( sal_uInt64 ) ( iTimeValue / 1000000 );
return ( uTimeValue < nDelta );
}
/** compare two OUString file name.
*/
inline sal_Bool compareFileName( const ::rtl::OUString & ustr1, const ::rtl::OUString & ustr2 )
{
sal_Bool bOk = ustr1.equalsIgnoreAsciiCase( ustr2 );
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 );
sal_Bool bOk = ustr1.equalsIgnoreAsciiCase( ustr1 );
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
::std::auto_ptr<File> pFile( new File( aPathURL ) );
nError = pFile->open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create );
CPPUNIT_ASSERT_MESSAGE( "In createTestFile Function: creation ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
}
/** 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 )
{
::rtl::OUString aBaseURL = basename.copy( 0 );
concatURL( aBaseURL, filename );
createTestFile( aBaseURL );
}
/** detete a temp test file using OUString name.
*/
inline void deleteTestFile( 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
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 ) );
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 );
CPPUNIT_ASSERT_MESSAGE( "In createTestDirectory Function: creation: ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
}
/** 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 )
{
::rtl::OUString aPathURL = dirname.copy( 0 );
::osl::FileBase::RC nError;
if ( !isURL( dirname ) )
::osl::FileBase::getFileURLFromSystemPath( dirname, aPathURL ); //convert if not full qualified URL
::osl::Directory testDir( aPathURL );
if ( testDir.isOpen( ) == sal_True )
testDir.close( ); //close if still open.
nError = ::osl::Directory::remove( aPathURL );
CPPUNIT_ASSERT_MESSAGE( "In deleteTestDirectory function: remove ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) );
}
/** 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 {
osl_Check_Mode_Exist,
osl_Check_Mode_OpenAccess,
osl_Check_Mode_ReadAccess,
osl_Check_Mode_WriteAccess
} oslCheckMode;
inline sal_Bool checkFile( const ::rtl::OUString & str, oslCheckMode nCheckMode )
{
::osl::FileBase::RC nError1, nError2;
::osl::File testFile( str );
sal_Bool bCheckResult;
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.
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;
}
inline sal_Bool checkDirectory( const ::rtl::OUString & str, oslCheckMode nCheckMode )
{
rtl::OUString aUString;
DirectoryItem rItem;
FileBase::RC rc;
sal_Bool bCheckResult= sal_False;
::std::auto_ptr<Directory> pDir( new Directory( str ) );
rc = pDir->open( );
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:
rc = pDir->getNextItem( rItem, 0 );
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;
if ( ( rc = pDir->create( aUString ) ) == ::osl::FileBase::E_None )
{
bCheckResult = sal_True;
rc = pDir->remove( aUString );
CPPUNIT_ASSERT( rc == ::osl::FileBase::E_None );
}
else
bCheckResult = sal_False;
break;
default:
bCheckResult = sal_False;
}// switch
rc = pDir->close( );
CPPUNIT_ASSERT( rc == FileBase::E_None );
}
return bCheckResult;
}
/** 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 )
{
printf("this method is not implemented yet");
}
#endif
//------------------------------------------------------------------------
// Beginning of the test cases for FileBase class
//------------------------------------------------------------------------
namespace osl_FileBase
{
//---------------------------------------------------------------------
// testing the method
// static inline RC getCanonicalName( const ::rtl::OUString& ustrRequestedURL, ::rtl::OUString& ustrValidURL )
//
// The illegal characters are ;+=[]',\"*\\<>/?:|.
// because getCanonicalName method is not implemented yet and will be deprecated in the future, this test is not necessary.
//---------------------------------------------------------------------
class getCanonicalName:public CppUnit::TestFixture
{
public:
void getCanonicalName_001( )
{
::rtl::OUString aUStr_ValidURL;
::osl::FileBase::RC nError = ::osl::FileBase::getCanonicalName( aCanURL1, aUStr_ValidURL );
CPPUNIT_ASSERT_MESSAGE("test for getCanonicalName function: check valid and unused file name",
( osl::FileBase::E_None == nError ) && !aUStr_ValidURL.compareTo ( aCanURL1, nCanURL1Len ) );
}
void getCanonicalName_002( )
{
::rtl::OUString aUStr_ValidURL;
::osl::FileBase::RC nError;
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)",
( osl::FileBase::E_None == nError ) && aUStr_ValidURL.compareTo ( aCanURL1, nCanURL1Len ) );
}
void getCanonicalName_003( )
{
::rtl::OUString aUStr_ValidURL;
::osl::FileBase::RC nError = ::osl::FileBase::getCanonicalName ( aCanURL2, aUStr_ValidURL );
CPPUNIT_ASSERT_MESSAGE( " test for getCanonicalName function: invalid file name, should different from the request, it did not passed(W32)(UNX)",
( osl::FileBase::E_None == nError ) && aUStr_ValidURL.compareTo ( aCanURL2, nCanURL2Len ) );
}
CPPUNIT_TEST_SUITE( getCanonicalName );
CPPUNIT_TEST( getCanonicalName_001 );
CPPUNIT_TEST( getCanonicalName_002 );
CPPUNIT_TEST( getCanonicalName_003 );
CPPUNIT_TEST_SUITE_END( );
};// class getCanonicalName
//---------------------------------------------------------------------
// testing the method
// static inline RC getAbsoluteFileURL( const ::rtl::OUString& ustrBaseDirectoryURL,
// const ::rtl::OUString& ustrRelativeFileURL,
// ::rtl::OUString& ustrAbsoluteFileURL )
//---------------------------------------------------------------------
class getAbsoluteFileURL:public CppUnit::TestFixture
{
::osl::FileBase aFileBase;
::rtl::OUString aResultURL1, aResultURL2, aResultURL3, aResultURL4, aResultURL5;
public:
// 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";
aResultURL1 = aTmpURL1.concat( rtl::OUString::createFromAscii( pResultURL1 ) );
aResultURL2 = aTmpURL1.concat( rtl::OUString::createFromAscii( pResultURL2 ) );
aResultURL3 = aTmpURL1.concat( rtl::OUString::createFromAscii( pResultURL3 ) );
aResultURL4 = aTmpURL1.concat( rtl::OUString::createFromAscii( pResultURL4 ) );
aResultURL5 = aTmpURL1.concat( rtl::OUString::createFromAscii( pResultURL5 ) );
}
void tearDown( )
{
}
// test code
void getAbsoluteFileURL_001( )
{
::rtl::OUString aUStr_BaseURL = rtl::OUString::createFromAscii( pTmpURL1 );
::rtl::OUString aUStr_RelURL1 = rtl::OUString::createFromAscii( pRelURL1 );
::rtl::OUString aUStr_RelURL2 = rtl::OUString::createFromAscii( pRelURL2 );
::rtl::OUString aUStr_RelURL3 = rtl::OUString::createFromAscii( pRelURL3 );
::rtl::OUString aUStr_RelURL4 = rtl::OUString::createFromAscii( pRelURL4 );
::rtl::OUString aUStr_AbsURL;
::osl::FileBase::RC nError11 = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL1, aUStr_AbsURL );
sal_Bool nError12 = aUStr_AbsURL.equals( aResultURL1 );
::osl::FileBase::RC nError21 = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL2, aUStr_AbsURL );
sal_Bool nError22 = aUStr_AbsURL.equals( aResultURL2 );
::osl::FileBase::RC nError31 = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL3, aUStr_AbsURL );
sal_Bool nError32 = aUStr_AbsURL.equals( aResultURL3 );
::osl::FileBase::RC nError41 = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL4, aUStr_AbsURL );
sal_Bool nError42 = aUStr_AbsURL.equals( aResultURL4 );
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 ) &&
( ::osl::FileBase::E_None == nError41 ) && ( sal_True == nError42 ) );
}
#if ( defined UNX ) || ( defined OS2 ) //Link is not defined in Windows
void getAbsoluteFileURL_002( )
{
::rtl::OUString aUStr_BaseURL = rtl::OUString::createFromAscii( pTmpURL1 );
::rtl::OUString aUStr_RelURL = rtl::OUString::createFromAscii( pLnkURL1 );
::rtl::OUString aUStr_AbsURL;
::osl::FileBase::RC nError;
sal_Int32 fd;
sal_Bool bOk;
createTestFile( aCanURL1 );
fd = symlink( "/tmp/canonical.name", "/tmp/link.file" );
CPPUNIT_ASSERT( fd == 0 );
nError = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL, aUStr_AbsURL );
bOk = aUStr_AbsURL.equals( aResultURL5 );
deleteTestFile( aCanURL1 );
fd = remove( "/tmp/link.file" );
CPPUNIT_ASSERT( fd == 0 );
CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: URL contain link( Solaris version )",
( ::osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
}
#else //Windows version
void getAbsoluteFileURL_002( )
{
CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: URL contain link( Windows version )",
1 );
}
#endif
void getAbsoluteFileURL_003( )
{
::rtl::OUString aUStr_AbsURL;
::osl::FileBase::RC nError1;
nError1 = aFileBase.getAbsoluteFileURL( aTmpName1, aRelURL1, aUStr_AbsURL ); //base dir invalid error
CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: Parameter is invalid. it ignore the invalid base in Windows, did not pass in (W32) ",
( ::osl::FileBase::E_INVAL == nError1 ) );
}
void getAbsoluteFileURL_004( )
{
::rtl::OUString aUStr_BaseURL = rtl::OUString::createFromAscii( pTmpName2 );
::rtl::OUString aUStr_RelURL = rtl::OUString::createFromAscii( pCanURL1 );
::rtl::OUString aUStr_AbsURL;
::osl::FileBase::RC nError;
sal_Bool bOk;
nError = aFileBase.getAbsoluteFileURL( aUStr_BaseURL, aUStr_RelURL, aUStr_AbsURL );
bOk = aUStr_AbsURL.equals( aResultURL5 );
CPPUNIT_ASSERT_MESSAGE("test for getAbsoluteFileURL function: ustrRelativeFileURL denotes an absolute",
( ::osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
}
CPPUNIT_TEST_SUITE( getAbsoluteFileURL );
CPPUNIT_TEST( getAbsoluteFileURL_001 );
CPPUNIT_TEST( getAbsoluteFileURL_002 );
CPPUNIT_TEST( getAbsoluteFileURL_003 );
CPPUNIT_TEST( getAbsoluteFileURL_004 );
CPPUNIT_TEST_SUITE_END( );
};// class getAbsoluteFileURL
//---------------------------------------------------------------------
// testing the method
// static inline RC getSystemPathFromFileURL( const ::rtl::OUString& ustrFileURL,
// ::rtl::OUString& ustrSystemPath )
//---------------------------------------------------------------------
class getSystemPathFromFileURL:public CppUnit::TestFixture
{
::osl::FileBase aFileBase;
::rtl::OUString aUStr;
::osl::FileBase::RC nError;
public:
// test code.
void getSystemPathFromFileURL_001( )
{
::rtl::OUString aUStr( aTmpURL1 );
concatURL( aUStr, aHidURL1 );
nError = aFileBase.getSystemPathFromFileURL( aTmpName2, aUStr ); // start with /
CPPUNIT_ASSERT_MESSAGE( "test for getSystemPathFromFileURL function: parameter is invalid 1. it did not find the invalid param, did not pass in (W32), ",
( osl::FileBase::E_INVAL == nError ) );
}
void getSystemPathFromFileURL_002( )
{
nError = aFileBase.getSystemPathFromFileURL( aCanURL2, aUStr ); // not a URL and contain illegal characters
CPPUNIT_ASSERT_MESSAGE( "test for getSystemPathFromFileURL function: parameter is invalid 2",
( osl::FileBase::E_INVAL == nError ) );
}
void getSystemPathFromFileURL_003( )
{
::rtl::OUString aRelativeURL( aTmpName5 );
static const sal_Char pResultURL[] = TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP "/tmpname";
::rtl::OUString aResultURL = rtl::OUString::createFromAscii( pResultURL );
nError = aFileBase.getSystemPathFromFileURL( aRelativeURL, aUStr );
sal_Bool bOk = compareFileName( aUStr, aResultURL );
CPPUNIT_ASSERT_MESSAGE( "test for getSystemPathFromFileURL function: use a relative file URL, did not pass in(W32), it did not specified in method declaration of relative path issue.",
( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) );
}
CPPUNIT_TEST_SUITE( getSystemPathFromFileURL );
CPPUNIT_TEST( getSystemPathFromFileURL_001 );
CPPUNIT_TEST( getSystemPathFromFileURL_002 );
CPPUNIT_TEST( getSystemPathFromFileURL_003 );
CPPUNIT_TEST_SUITE_END( );
};// class getSystemPathFromFileURL
//---------------------------------------------------------------------
// testing the method
// static inline RC searchFileURL( const ::rtl::OUString& ustrFileName,
// const ::rtl::OUString& ustrSearchPath,
// ::rtl::OUString& ustrFileURL )
//---------------------------------------------------------------------
class searchFileURL:public CppUnit::TestFixture
{
::osl::FileBase aFileBase;
::rtl::OUString aUStr;
::osl::FileBase::RC nError1, nError2, nError3,nError4;
public:
// initialization
void setUp( )
{
}
void tearDown( )
{
}
// test code.
void searchFileURL_001( )
{
/* search file is passed by system filename */
nError1 = ::osl::FileBase::searchFileURL( aSysPath2, aTmpSys1, aUStr );
/* search file is passed by full qualified file URL */
nError2 = ::osl::FileBase::searchFileURL( aCanURL1, aTmpSys1, aUStr );
/* search file is passed by relative file path */
nError3 = ::osl::FileBase::searchFileURL( aRelURL4, aTmpSys1, aUStr );
CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: system filename/URL filename/relative path, system directory, searched file not exist, did not pass in (W32) ",
( osl::FileBase::E_NOENT == nError1 ) &&
( osl::FileBase::E_NOENT == nError2 ) &&
( osl::FileBase::E_NOENT == nError3 ));
}
void searchFileURL_002( )
{
OSLTEST_DECLARE( RelativeFilePath, TEST_PLATFORM_TEMP "/./../" TEST_PLATFORM_TEMP );
OSLTEST_DECLARE( CanonicalFileName, "canonical.name" );
/* search file is passed by system filename */
nError1 = ::osl::FileBase::searchFileURL( aTmpSys1, aRootSys, aUStr );
sal_Bool bOk1 = compareFileName( aUStr, aTmpURL1 );
/* search file is passed by full qualified file URL */
nError2 = ::osl::FileBase::searchFileURL( aTmpURL1, aRootSys, aUStr );
sal_Bool bOk2 = compareFileName( aUStr, aTmpURL1 );
/* search file is passed by relative file path */
nError3 = ::osl::FileBase::searchFileURL( aRelativeFilePath, aRootSys, aUStr );
sal_Bool bOk3 = compareFileName( aUStr, aTmpURL1 );
/* search file is passed by an exist file */
createTestFile( aCanURL1 );
nError4 = ::osl::FileBase::searchFileURL( aCanonicalFileName, aTmpSys1, aUStr );
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" );
nError1 = ::osl::FileBase::searchFileURL( aTmpURL1, aSystemPathList, aUStr );
sal_Bool bOk = compareFileName( aUStr, aTmpURL1 );
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" );
nError1 = ::osl::FileBase::searchFileURL( aTmpURL1, aSystemPathList, aUStr );
sal_Bool bOk = compareFileName( aUStr, aTmpURL1 );
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( )
{
nError1 = ::osl::FileBase::searchFileURL( aTmpURL1, aNullURL, aUStr );
sal_Bool bOk = compareFileName( aUStr, aTmpURL1 );
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
{
::osl::FileBase aFileBase;
::rtl::OUString aUStr;
::osl::FileBase::RC nError;
public:
// initialization
void setUp( )
{
nError = aFileBase.getTempDirURL( aUStr );
}
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 ) &&
checkDirectory( aUStr, osl_Check_Mode_WriteAccess ) );
}
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
{
::osl::FileBase aFileBase;
::osl::FileBase::RC nError1, nError2;
sal_Bool bOK;
oslFileHandle *pHandle;
::rtl::OUString *pUStr_DirURL;
::rtl::OUString *pUStr_FileURL;
public:
// initialization
void setUp( )
{
pHandle = new oslFileHandle();
pUStr_DirURL = new ::rtl::OUString();
pUStr_FileURL = new ::rtl::OUString();
*pUStr_DirURL = aTmpURL1; /// create temp file in /tmp or c:\temp.
}
void tearDown( )
{
delete pUStr_DirURL;
delete pUStr_FileURL;
}
// test code.
void createTempFile_001( )
{
nError1 = aFileBase.createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL );
::osl::File testFile( *pUStr_FileURL );
nError2 = testFile.open( OpenFlag_Create );
if ( osl::FileBase::E_EXIST== nError2 ) {
osl_closeFile( *pHandle );
deleteTestFile( *pUStr_FileURL );
}
CPPUNIT_ASSERT_MESSAGE( "test for createTempFile function: create temp file and test the existence",
( osl::FileBase::E_None == nError1 ) && ( pHandle != NULL ) && ( osl::FileBase::E_EXIST== nError2 ) );
}
void createTempFile_002( )
{
nError1 = aFileBase.createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL );
::osl::File testFile( *pUStr_FileURL );
nError2 = testFile.open( OpenFlag_Create );
if ( osl::FileBase::E_EXIST== nError2 ) {
osl_closeFile( *pHandle );
bOK = checkFile( *pUStr_FileURL, osl_Check_Mode_WriteAccess );
deleteTestFile( *pUStr_FileURL );
}
CPPUNIT_ASSERT_MESSAGE( "test for createTempFile function: test for open and write access rights, in (W32), it did not have write access right.",
( sal_True == bOK ) );
}
void createTempFile_003( )
{
nError1 = aFileBase.createTempFile( pUStr_DirURL, pHandle, 0 );
bOK = ( pHandle != NULL );
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.",
( sal_True == bOK ) );
}
CPPUNIT_TEST_SUITE( createTempFile );
CPPUNIT_TEST( createTempFile_001 );
CPPUNIT_TEST( createTempFile_002 );
CPPUNIT_TEST( createTempFile_003 );
CPPUNIT_TEST_SUITE_END( );
};// class createTempFile
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getCanonicalName, "osl_FileBase" );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getAbsoluteFileURL, "osl_FileBase" );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getSystemPathFromFileURL, "osl_FileBase" );
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
//------------------------------------------------------------------------
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( ) );
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).",
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( ) );
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).",
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( );
CPPUNIT_ASSERT_MESSAGE( "test for automount function: this test is not implemented yet, it did not pass in (UNX), (W32).",
( 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
//------------------------------------------------------------------------
// 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 ) );
}
#if ( defined UNX ) || ( defined OS2 )
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" ) );
}
#else /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
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
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( );
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)",
( 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 ) );
}
#if ( defined UNX ) || ( defined OS2 )
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 ) );
}
#else /// Windows version,here we can not determine whichvolume in Windows is serve as an nfs volume.
void isValid_002( )
{
CPPUNIT_ASSERT_MESSAGE( "test for isValid function: all valid fields specified for a nfs volume.( Windows version )",
1 == 1 );
}
#endif
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( );
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).",
( 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 );
}
#if defined( UNX )
void getTotalSpace_002( )
{
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 );
}
#else /// Windows version, in Windows, there is no /proc directory
void getTotalSpace_002( )
{
CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function:not applicable for /proc( Windows version )",
1 == 1 );
}
#endif
#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 );
}
#else /// Windows version
void getTotalSpace_003( )
{
CPPUNIT_ASSERT_MESSAGE( "test for getTotalSpace function:not implemented yet( Windows version )",
1 == 1 );
}
#endif
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 );
}
#if defined( UNX )
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 );
}
#else /// Windows version, in Windows, there is no /proc directory
void getFreeSpace_002( )
{
CPPUNIT_ASSERT_MESSAGE( "test for getFreeSpace function: not applicable for /proc( Windows version )",
1 == 1 );
}
#endif
#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 );
}
#if defined( UNX )
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 );
}
#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
#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( ) );
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).",
( sal_False == bOk ) );
}
CPPUNIT_TEST_SUITE( getDeviceHandle );
CPPUNIT_TEST( getDeviceHandle_001 );
CPPUNIT_TEST_SUITE_END( );
};// class getDeviceHandle
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::ctors, "osl_VolumeInfo" );
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" );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_VolumeInfo::getDeviceHandle, "osl_VolumeInfo" );
}// 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 );
}
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::FileBase::RC nError1, nError2;
::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 );
nError1 = pDir->open( );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
nError1 = pDir->getNextItem( rItem_file, 1 );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
}
void tearDown( )
{
nError1 = pDir->close( );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
delete pDir;
// remove the tempfile in $TEMP/tmpdir/tmpname.
deleteTestFile( aTmpName4 );
deleteTestDirectory( aTmpName3 );
}
// test code.
void isValid_001( )
{
sal_uInt32 mask = 0;
::osl::FileStatus rFileStatus( mask );
nError1 = rItem_file.getFileStatus( rFileStatus );
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 ) );
}
void isValid_002( )
{
sal_uInt32 mask_file = FileStatusMask_Type | FileStatusMask_Attributes |
FileStatusMask_CreationTime | FileStatusMask_AccessTime |
FileStatusMask_ModifyTime | FileStatusMask_FileSize |
FileStatusMask_FileName | FileStatusMask_FileURL;
::osl::FileStatus rFileStatus( mask_file );
nError1 = rItem_file.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
sal_Bool bOk = rFileStatus.isValid( mask_file );
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 ) );
}
#if defined ( SOLARIS ) //Link is not defined in Windows
void isValid_003( )
{
::osl::FileBase::RC nError;
sal_Int32 fd;
//create a link file and link it to file "/tmp/tmpdir/tmpname"
fd = symlink( "/tmp/tmpdir/tmpname", "/tmp/tmpdir/link.file" );
CPPUNIT_ASSERT( fd == 0 );
nError1 = pDir->getNextItem( rItem_link );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
sal_uInt32 mask_link = FileStatusMask_LinkTargetURL;
::osl::FileStatus rFileStatus( mask_link );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
nError1 = rItem_link.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
sal_Bool bOk = rFileStatus.isValid( mask_link );
fd = remove( "/tmp/tmpdir/link.file" );
CPPUNIT_ASSERT( fd == 0 );
CPPUNIT_ASSERT_MESSAGE("test for isValid function: link file, check for LinkTargetURL",
( sal_True == bOk ) );
}
#else
void isValid_003( )
{
CPPUNIT_ASSERT_MESSAGE("test for isValid function: Windows version, link is not defined in windows ",
1 == 1 );
}
#endif
void isValid_004( )
{
sal_uInt32 mask_file_all = FileStatusMask_All;
::osl::FileStatus rFileStatus_all( mask_file_all );
nError1 = rItem_file.getFileStatus( rFileStatus_all );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
sal_Bool bOk1 = rFileStatus_all.isValid( mask_file_all );
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 );
sal_Bool bOk2 = rFileStatus_val.isValid( mask_file_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 ) );
}
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;
::osl::DirectoryItem rItem_file, rItem_directory, rItem_volume, rItem_fifo;
::osl::DirectoryItem rItem_link, rItem_socket, rItem_special;
public:
// initialization
void setUp( )
{
// create a tempfile: $TEMP/tmpdir/tmpname.
// a tempdirectory: $TEMP/tmpdir/tmpdir.
// use $ROOT/staroffice as volume.
// and get their directory item.
createTestDirectory( aTmpName3 );
createTestFile( aTmpName3, aTmpName2 );
createTestDirectory( aTmpName3, aTmpName1 );
::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) );
nError1 = pDir->open( );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
nError1 = pDir->getNextItem( rItem_file, 1 );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
nError1 = pDir->getNextItem( rItem_directory );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
nError1 = ::osl::DirectoryItem::get( aVolURL4, rItem_volume );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
}
void tearDown( )
{
// remove all in $TEMP/tmpdir.
deleteTestDirectory( aTmpName3, aTmpName1 );
deleteTestFile( aTmpName3, aTmpName2 );
deleteTestDirectory( aTmpName3 );
}
// test code.
void getFileType_001( )
{
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_file.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: File",
( ::osl::FileStatus::Regular == rFileStatus.getFileType( ) ) );
}
void getFileType_002( )
{
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_directory.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Directory",
( ::osl::FileStatus::Directory == rFileStatus.getFileType( ) ) );
}
void getFileType_003( )
{
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_volume.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
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).",
( ::osl::FileStatus::Volume == rFileStatus.getFileType( ) ) );
}
#if ( defined UNX ) || ( defined OS2 ) //Fifo creation is differ in Windows
void getFileType_004( )
{
//create a fifo in $ROOT/tmp/tmpdir, get its DirectoryItem.
sal_Int32 fd;
OSLTEST_DECLARE( FifoSys, TEST_PLATFORM_ROOT TEST_PLATFORM_TEMP "/tmpdir/fifo" );
::rtl::OUString aFifoURL;
fd = mkfifo( pFifoSys, O_RDWR | O_CREAT );
::osl::FileBase::getFileURLFromSystemPath( aFifoSys, aFifoURL );
nError1 = ::osl::DirectoryItem::get( aFifoURL, rItem_fifo );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//check for File type
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_fifo.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//delete fifo
nError1 = ::osl::File::remove( aFifoURL );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Fifo, Solaris version ",
( ::osl::FileStatus::Fifo == rFileStatus.getFileType( ) ) );
}
#else //Windows version
void getFileType_004( )
{
CPPUNIT_ASSERT_MESSAGE(" test for getFileType function: Fifo, Windows version ",
1 == 1 );
}
#endif
#if defined ( SOLARIS ) //Socket file may differ in Windows
void getFileType_005( )
{
nError1 = ::osl::DirectoryItem::get( aTypeURL1, rItem_socket );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//check for File type
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_socket.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Socket, Solaris version ",
( ::osl::FileStatus::Socket == rFileStatus.getFileType( ) ) );
}
#else //Windows version
void getFileType_005( )
{
CPPUNIT_ASSERT_MESSAGE(" test for getFileType function: Socket, Windows version ",
1 == 1 );
}
#endif
#if defined ( SOLARIS ) //Link file is not defined in Windows
void getFileType_006( )
{
nError1 = ::osl::DirectoryItem::get( aTypeURL3, rItem_link );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//check for File type
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_link.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Link, Solaris version ",
( ::osl::FileStatus::Link == rFileStatus.getFileType( ) ) );
}
#else //Windows version
void getFileType_006( )
{
CPPUNIT_ASSERT_MESSAGE(" test for getFileType function: Link, Windows version ",
1 == 1 );
}
#endif
#if defined ( SOLARIS ) //Special file is differ in Windows
void getFileType_007( )
{
nError1 = ::osl::DirectoryItem::get( aTypeURL2, rItem_special );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//check for File type
::osl::FileStatus rFileStatus( FileStatusMask_Type );
nError1 = rItem_special.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Special, Solaris version ",
( ::osl::FileStatus::Special == rFileStatus.getFileType( ) ) );
}
#else //Windows version
void getFileType_007( )
{
CPPUNIT_ASSERT_MESSAGE(" test for getFileType function: Special, Windows version ",
1 == 1 );
}
#endif
CPPUNIT_TEST_SUITE( getFileType );
CPPUNIT_TEST( getFileType_001 );
CPPUNIT_TEST( getFileType_002 );
CPPUNIT_TEST( getFileType_003 );
CPPUNIT_TEST( getFileType_004 );
CPPUNIT_TEST( getFileType_005 );
CPPUNIT_TEST( getFileType_006 );
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( )
{
aTypeURL = aTmpURL1.copy( 0 );
concatURL( aTypeURL, aTmpName2 );
createTestFile( aTypeURL );
nError = ::osl::DirectoryItem::get( aTypeURL, rItem );
CPPUNIT_ASSERT( nError == FileBase::E_None );
aTypeURL_Hid = aTmpURL1.copy( 0 );
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.
#if ( defined UNX ) || ( defined OS2 )
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 );
CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: ReadOnly, GrpRead, OwnRead, OthRead( Solaris version ) ",
( 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
#if ( defined UNX ) || ( defined OS2 )
void getAttributes_002( )
{
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( ) );
}
#else //Windows version
void getAttributes_002( )
{
CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: Executable, GrpExe, OwnExe, OthExe, the result is Readonly, Executable, GrpExe, OwnExe, OthExe, it partly not pass( Windows version )",
1 == 1 );
}
#endif
#if ( defined UNX ) || ( defined OS2 )
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
#if ( defined UNX ) || ( defined OS2 ) //hidden file definition may different in Windows
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( )
{
CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: Hidden files( Windows version )",
1 == 1 );
}
#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( )
{
aTypeURL = aTmpURL1.copy( 0 );
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( )
{
::osl::FileStatus rFileStatus( FileStatusMask_AccessTime );
nError = rItem.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( nError == FileBase::E_None );
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 );
sal_Bool bOk = osl_getSystemTime( pTV_current );
CPPUNIT_ASSERT( sal_True == bOk );
*pTV_access = rFileStatus.getAccessTime( );
sal_Bool bOK = compareTime( pTV_access, pTV_current, delta );
free( pTV_current );
free( pTV_access );
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, did not pass in (W32). ",
sal_True == bOK );
}
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
aTypeURL = aTmpURL1.copy( 0 );
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( );
sal_Bool bOK = compareTime( pTV_modify, pTV_current, delta );
//delete file
deleteTestFile( aTypeURL );
free( pTV_current );
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 );
}
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( )
{
aTypeURL = aTmpURL1.copy( 0 );
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( )
{
::std::auto_ptr<File> pFile( new File( aTypeURL ) );
nError = pFile->open( OpenFlag_Write );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError );
nError = pFile->setSize( TEST_FILE_SIZE );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError );
::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: file with size of TEST_FILE_SIZE, did not pass in (W32). ",
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( )
{
aTypeURL = aTmpURL1.copy( 0 );
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( )
{
createTestFile( aTmpName6 );
nError = ::osl::DirectoryItem::get( aTmpName6, rItem );
CPPUNIT_ASSERT( nError == FileBase::E_None );
}
void tearDown( )
{
deleteTestFile( aTmpName6 );
}
// 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: ",
sal_True == compareFileName( aFileURL, aTmpName6 ) );
}
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( )
{
aTypeURL = aTmpURL1.copy( 0 );
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;
sal_Int32 fd;
fd = symlink( "/tmp/tmpname", "/tmp/link.file" );
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 );
::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
fd = remove( "/tmp/link.file" );
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",
0 );
}
#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
{
::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 ctors_001( )
{
::osl::File testFile( aTmpName4 );
nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
nError2 = testFile.close( );
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;
nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write );
nError2 = testFile.write( buffer, 30, nCount );
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( );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError2 );
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",
( File::E_INVAL == nError1 ) || ( File::E_ACCES == nError1 ) );
}
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 );
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
CPPUNIT_ASSERT_MESSAGE( "test for open function: create an illegal file",
bOK == sal_True );
}
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 );
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;
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 );
sal_Bool bEOF = sal_False;
sal_Bool *pEOF = &bEOF;
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 );
sal_Bool bEOF = sal_False;
sal_Bool *pEOF = &bEOF;
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 );
}
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 );
sal_Char * ppStrSeq[] = { "abcde\n",
"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",
( ::osl::FileBase::E_ISDIR == nError1 ) ||( ::osl::FileBase::E_ACCES == nError1 ) );
}
void copy_003( )
{
//copy $TEMP/tmpdir/tmpname to $ROOT/tmpname.
nError1 = ::osl::File::copy( aTmpName4, aTmpName7 );
#if defined (WNT )
nError1 = ::osl::FileBase::E_ACCES; /// for Windows, c:/ is writtenable any way.
deleteTestFile( aTmpName7);
#endif
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 );
}
CPPUNIT_TEST_SUITE( copy );
CPPUNIT_TEST( copy_001 );
CPPUNIT_TEST( copy_002 );
CPPUNIT_TEST( copy_003 );
CPPUNIT_TEST( copy_004 );
CPPUNIT_TEST( copy_005 );
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 );
CPPUNIT_ASSERT_MESSAGE( "test for move function: use directory as destination",
( ::osl::FileBase::E_ISDIR == nError1 ) ||( ::osl::FileBase::E_EXIST == nError1 ) );
}
void move_003( )
{
//move $TEMP/tmpdir/tmpname to $ROOT/tmpname.
nError1 = ::osl::File::move( aTmpName4, aTmpName7 );
#if defined (WNT )
nError1 = ::osl::FileBase::E_ACCES; /// for Windows, c:/ is writtenable any way.
deleteTestFile( aTmpName7);
#endif
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 );
deleteTestDirectory( aTmpName6 );
#if defined ( WNT )
deleteTestDirectory( aTmpName4 );// in Windows, it can be moved!!!!! this is only for not influence the following test.
#endif
CPPUNIT_ASSERT_MESSAGE( "test for move function: move a directory to an exist file with same name, did not pass in (W32)",
::osl::FileBase::E_NOTDIR == nError1 );
}
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 ) );
}
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 );
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",
( ::osl::FileBase::E_ISDIR == nError1 ) || ( ::osl::FileBase::E_ACCES == nError1 ));
}
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( )
{
//set the file to readonly
nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead );
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, did not pass in (W32), it returned ReadOnly and GrpWrite",
( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) ==
rFileStatus.getAttributes( ) );
}
CPPUNIT_TEST_SUITE( setAttributes );
CPPUNIT_TEST( setAttributes_001 );
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 );
//get the file access time, creation time, modify time
nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem );
CPPUNIT_ASSERT( nError1 == FileBase::E_None);
::osl::FileStatus rFileStatus( FileStatusMask_AccessTime );
nError1 = rItem.getFileStatus( rFileStatus );
CPPUNIT_ASSERT( nError1 == FileBase::E_None );
*pTV_access = rFileStatus.getAccessTime( );
::osl::FileStatus rFileStatus1( FileStatusMask_CreationTime );
nError1 = rItem.getFileStatus( rFileStatus1 );
CPPUNIT_ASSERT( nError1 == FileBase::E_None );
*pTV_creation = rFileStatus1.getCreationTime( );
::osl::FileStatus rFileStatus2( FileStatusMask_ModifyTime );
nError1 = rItem.getFileStatus( rFileStatus2 );
CPPUNIT_ASSERT( nError1 == FileBase::E_None );
*pTV_modify = rFileStatus2.getModifyTime( );
free( pTV_current );
free( pTV_creation );
free( pTV_access );
free( pTV_modify );
CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set file time then get them. time precision is still a problem for it cut off the nanosec.",
( sal_True == compareTime( pTV_access, pTV_current, delta ) ) &&
( sal_True == compareTime( pTV_creation, pTV_current, delta ) ) &&
( sal_True == compareTime( pTV_modify, pTV_current, delta ) )
);
}
CPPUNIT_TEST_SUITE( setTime );
CPPUNIT_TEST( setTime_001 );
CPPUNIT_TEST_SUITE_END( );
};// class setTime
// -----------------------------------------------------------------------------
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" );
}// 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
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_DirectoryItem::ctors, "osl_DirectoryItem" );
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 );
}
// 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( )
{
::osl::Directory testDirectory( aTmpSys1 ); //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: 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",
( ::osl::FileBase::E_NOTDIR == nError1 ) || ( ::osl::FileBase::E_ACCES ) );
}
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
nError1 = testDirectory.getNextItem( rItem, 0 );
CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 );
//reset enumeration
nError2 = testDirectory.reset( );
//get reseted Item
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 );
CPPUNIT_ASSERT_MESSAGE( "test for reset function: get two directory item, reset it, then get again, check the filename",
( ::osl::FileBase::E_None == nError2 ) &&
( sal_True == compareFileName( rFileStatus.getFileName( ), aTmpName2 ) ) );
}
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",
( ::osl::FileBase::E_NOTDIR == nError1 ) || ( ::osl::FileBase::E_NOENT == nError1 ) );
}
void reset_004( )
{
::osl::Directory testDirectory( aTmpSys1 ); //constructor
//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 );
}
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 )
{
case 0: bOk1 = compareFileName( rFileStatus.getFileName( ), aTmpName2 );
break;
case 1: bOk2 = compareFileName( rFileStatus.getFileName( ), aTmpName1 );
break;
case 2: bOk3 = compareFileName( rFileStatus.getFileName( ), aHidURL1 );
}
}
//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 ) );
}
CPPUNIT_TEST_SUITE( getNextItem );
CPPUNIT_TEST( getNextItem_001 );
CPPUNIT_TEST( getNextItem_002 );
CPPUNIT_TEST( getNextItem_003 );
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.
void getVolumeInfo_001( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName;
::osl::VolumeInfo aVolumeInfo( mask );
//call getVolumeInfo here
nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo );
CPPUNIT_ASSERT( sal_True == aVolumeInfo.isValid( mask ) );
//get file system name
::rtl::OUString aFileSysName( aNullURL );
aFileSysName = aVolumeInfo.getFileSystemName( );
CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: getVolumeInfo of root directory.",
( osl::FileBase::E_None == nError1 ) &&
( sal_False == compareFileName( aFileSysName, aNullURL ) ) );
}
void getVolumeInfo_002( )
{
sal_Int32 mask = VolumeInfoMask_FileSystemName;
::osl::VolumeInfo aVolumeInfo( mask );
//call getVolumeInfo here
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 );
CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: non-existence test. in Windows, it reply no error, it did not pass in (W32).",
( osl::FileBase::E_NOENT == nError1 ) );
}
CPPUNIT_TEST_SUITE( getVolumeInfo );
CPPUNIT_TEST( getVolumeInfo_001 );
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
nError2 = ::osl::Directory::create( aTmpName3 );
//remove it
deleteTestDirectory( aTmpName3 );
CPPUNIT_ASSERT_MESSAGE( "test for create function: create a directory and check its existence.",
( osl::FileBase::E_None == nError1 ) &&
( osl::FileBase::E_EXIST== nError2 ) );
}
void create_002( )
{
//create directory in /tmpname
nError1 = ::osl::Directory::create( aTmpName7 );
#if defined (WNT )
nError1 = osl::FileBase::E_ACCES; /// in Windows, you can create directory in c:/ any way.
deleteTestDirectory( aTmpName7 );
#endif
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 );
//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.",
( osl::FileBase::E_NOTDIR == nError1 ) || ( osl::FileBase::E_NOENT == nError1 ));
}
void remove_005( )
{
createTestDirectory( aTmpName3 );
createTestFile( aTmpName4 );
nError1 = ::osl::Directory::remove( aTmpName3 );
deleteTestFile( aTmpName4 );
deleteTestDirectory( aTmpName3 );
CPPUNIT_ASSERT_MESSAGE( "test for remove function: try to remove a directory that is not empty.",
( osl::FileBase::E_NOTEMPTY == nError1 ) );
}
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
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::ctors, "osl_Directory" );
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" );
}// 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.
// -----------------------------------------------------------------------------
/// NOADDITIONAL;
/** 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.
to simplify the initialize work, we seperate it into UNIX section and Windows section.
*/
void RegisterAdditionalFunctions(FktRegFuncPtr _pFunc)
{
printf( "#Initializing..." );
#if ( defined UNX ) || ( defined OS2 )
/// some initialization work for UNIX OS
;
#else
/// some initialization work for Windows OS
/// 1. make sure the c:\temp exist, if not, create it.
if ( checkDirectory( aTmpURL1, osl_Check_Mode_Exist ) != sal_True ) {
printf( "\n#C:\\temp is not exist, now creating\n" );
createTestDirectory( aTmpURL1 );
}
/// 2. check if some files are in the way, remove them if necessary.
else{
printf( "\n#Do some clean-ups ...\n" );
if ( checkFile( aTmpName6, osl_Check_Mode_Exist ) == sal_True )
deleteTestFile( aTmpName6 );
if ( checkFile( aTmpName4, osl_Check_Mode_Exist ) == sal_True )
deleteTestFile( aTmpName4 );
if ( checkDirectory( aTmpName4, osl_Check_Mode_Exist ) == sal_True )
deleteTestDirectory( aTmpName4 );
if ( checkFile( aTmpName3, osl_Check_Mode_Exist ) == sal_True )
deleteTestFile( aTmpName3 );
if ( checkDirectory( aTmpName3, osl_Check_Mode_Exist ) == sal_True )
deleteTestDirectory( aTmpName3 );
::rtl::OUString aUStr( aTmpURL1 );
concatURL( aUStr, aHidURL1 );
if ( checkFile( aUStr, osl_Check_Mode_Exist ) == sal_True )
deleteTestFile( aUStr );
::rtl::OUString aUStr1( aRootURL );
concatURL( aUStr1, aTmpName2 );
if ( checkFile( aUStr1, osl_Check_Mode_Exist ) == sal_True )
deleteTestFile( aUStr1 );
}
#endif
printf( "#Done.\n" );
}