| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sal.hxx" |
| |
| //------------------------------------------------------------------------ |
| // include files |
| //------------------------------------------------------------------------ |
| #include <sal/types.h> |
| #include <rtl/ustring.hxx> |
| #include <rtl/ustrbuf.hxx> |
| |
| #include "osl/thread.h" |
| |
| #include "rtl/ustrbuf.hxx" |
| #include <osl/file.hxx> |
| #include <osl_File_Const.h> |
| |
| #include <testshl/simpleheader.hxx> |
| |
| // #ifdef WNT |
| // # define UNICODE |
| // # define WIN32_LEAN_AND_MEAN |
| // # include <windows.h> |
| // # include <tchar.h> |
| // #endif |
| |
| |
| using namespace osl; |
| using namespace rtl; |
| |
| //------------------------------------------------------------------------ |
| // helper functions |
| //------------------------------------------------------------------------ |
| |
| /** detailed wrong message. |
| */ |
| inline ::rtl::OString errorToString( const ::osl::FileBase::RC _nError ) |
| { |
| ::rtl::OString sResult; |
| switch ( _nError ) { |
| case ::osl::FileBase::E_None: |
| sResult = "Success"; |
| break; |
| case ::osl::FileBase::E_PERM: |
| sResult = "Operation not permitted"; |
| break; |
| case ::osl::FileBase::E_NOENT: |
| sResult = "No such file or directory"; |
| break; |
| case ::osl::FileBase::E_EXIST: |
| sResult = "Already Exist"; |
| break; |
| case ::osl::FileBase::E_ACCES: |
| sResult = "Permission denied"; |
| break; |
| case ::osl::FileBase::E_INVAL: |
| sResult = "The format of the parameters was not valid"; |
| break; |
| case ::osl::FileBase::E_NOTDIR: |
| sResult = "Not a directory"; |
| break; |
| case ::osl::FileBase::E_ISDIR: |
| sResult = "Is a directory"; |
| break; |
| case ::osl::FileBase::E_BADF: |
| sResult = "Bad file"; |
| break; |
| case ::osl::FileBase::E_NOTEMPTY: |
| sResult = "The directory is not empty"; |
| break; |
| default: |
| sResult = "Unknown Error"; |
| break; |
| } |
| return sResult; |
| } |
| |
| rtl::OUString errorToStr( ::osl::FileBase::RC const& nError) |
| { |
| rtl::OUStringBuffer suBuf; |
| suBuf.append( rtl::OUString::createFromAscii("The returned error is: ") ); |
| suBuf.append( rtl::OStringToOUString(errorToString(nError), RTL_TEXTENCODING_ASCII_US) ); |
| suBuf.append( rtl::OUString::createFromAscii("!\n") ); |
| return suBuf.makeStringAndClear(); |
| } |
| |
| /** print a file type name. |
| */ |
| inline void printFileType( const ::osl::FileStatus::Type nType ) |
| { |
| t_print( "#printFileType# " ); |
| switch ( nType ) { |
| case ::osl::FileStatus::Directory: |
| t_print( "This file is a: Directory.\n" ); |
| break; |
| case ::osl::FileStatus::Volume: |
| t_print( "This file is a: volume device.\n" ); |
| break; |
| case ::osl::FileStatus::Regular: |
| t_print( "This file is a: regular file.\n" ); |
| break; |
| case ::osl::FileStatus::Fifo: |
| t_print( "This file is a: fifo.\n" ); |
| break; |
| case ::osl::FileStatus::Socket: |
| t_print( "This file is a: socket.\n" ); |
| break; |
| case ::osl::FileStatus::Link: |
| t_print( "This file is a: link file.\n" ); |
| break; |
| case ::osl::FileStatus::Special: |
| t_print( "This file is a: special.\n" ); |
| break; |
| case ::osl::FileStatus::Unknown: |
| t_print( "The file type is unknown %d \n", nType ); |
| break; |
| } |
| } |
| |
| /** print a file attributes. |
| */ |
| inline void printFileAttributes( const sal_Int64 nAttributes ) |
| { |
| t_print( "#printFileAttributes# This file is a: (" ); |
| if ( ( nAttributes | Attribute_ReadOnly ) == nAttributes ) |
| t_print( " ReadOnly " ); |
| if ( ( nAttributes | Attribute_Hidden ) == nAttributes ) |
| t_print( " Hidden " ); |
| if ( ( nAttributes | Attribute_Executable ) == nAttributes ) |
| t_print( " Executable " ); |
| if ( ( nAttributes | Attribute_GrpWrite ) == nAttributes ) |
| t_print( " GrpWrite " ); |
| if ( ( nAttributes | Attribute_GrpRead ) == nAttributes ) |
| t_print( " GrpRead " ); |
| if ( ( nAttributes | Attribute_GrpExe ) == nAttributes ) |
| t_print( " GrpExe " ); |
| if ( ( nAttributes | Attribute_OwnWrite ) == nAttributes ) |
| t_print( " OwnWrite " ); |
| if ( ( nAttributes | Attribute_OwnRead ) == nAttributes ) |
| t_print( " OwnRead " ); |
| if ( ( nAttributes | Attribute_OwnExe ) == nAttributes ) |
| t_print( " OwnExe " ); |
| if ( ( nAttributes | Attribute_OthWrite ) == nAttributes ) |
| t_print( " OthWrite " ); |
| if ( ( nAttributes | Attribute_OthRead ) == nAttributes ) |
| t_print( " OthRead " ); |
| if ( ( nAttributes | Attribute_OthExe ) == nAttributes ) |
| t_print( " OthExe " ); |
| t_print( ") file!\n" ); |
| } |
| |
| /** print a UNI_CODE file name. |
| */ |
| inline void printFileName( const ::rtl::OUString & str ) |
| { |
| rtl::OString aString; |
| |
| t_print( "#printFileName_u# " ); |
| aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US ); |
| t_print( "%s\n", aString.getStr( ) ); |
| } |
| |
| /** print a ASCII_CODE file name. |
| */ |
| inline void printFileName( const sal_Char * str ) |
| { |
| t_print( "#printFileName_a# " ); |
| t_print( "%s\n", str ); |
| } |
| |
| /** print an output wrong message. |
| */ |
| inline void printError( const ::osl::FileBase::RC nError ) |
| { |
| t_print( "#printError# " ); |
| printFileName( errorToStr(nError) ); |
| } |
| |
| /** print an signed Integer Number. |
| */ |
| inline void printInt( sal_Int64 i ) |
| { |
| t_print( "#printInt_i64# " ); |
| t_print( "The Integer64 is %lld\n", i); |
| } |
| |
| /** print an unsigned Integer Number. |
| */ |
| inline void printInt( sal_uInt64 i ) |
| { |
| t_print( "#printInt_u64# " ); |
| t_print( "The unsigned Integer64 is %llu\n", i); |
| } |
| |
| /** print Boolean value. |
| */ |
| inline void printBool( sal_Bool bOk ) |
| { |
| t_print( "#printBool# " ); |
| ( sal_True == bOk ) ? t_print( "YES!\n" ): t_print( "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 ) ); |
| |
| t_print( "#printTime# " ); |
| t_print( " Time is: %d/%d/%d ", pDateTime->Month, pDateTime->Day, pDateTime->Year); |
| switch ( pDateTime->DayOfWeek ) |
| { |
| case 0: t_print("Sun. "); break; |
| case 1: t_print("Mon. "); break; |
| case 2: t_print("Tue. "); break; |
| case 3: t_print("Thr. "); break; |
| case 4: t_print("Wen. "); break; |
| case 5: t_print("Fri. "); break; |
| case 6: t_print("Sat. "); break; |
| } |
| t_print( " %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_Int64 t_abs64(sal_Int64 _nValue) |
| { |
| // std::abs() seems to have some ambiguity problems (so-texas) |
| // return abs(_nValue); |
| t_print("t_abs64(%ld)\n", _nValue); |
| // CPPUNIT_ASSERT(_nValue < 2147483647); |
| |
| if (_nValue < 0) |
| { |
| _nValue = -_nValue; |
| } |
| return _nValue; |
| } |
| |
| inline sal_Bool t_compareTime( TimeValue *m_aEndTime, TimeValue *m_aStartTime, sal_Int32 nDelta) |
| { |
| // sal_uInt64 uTimeValue; |
| // sal_Int64 iTimeValue; |
| // |
| // iTimeValue = t_abs64(( tv1->Seconds - tv2->Seconds) * 1000000000 + tv1->Nanosec - tv2->Nanosec); |
| // uTimeValue = ( iTimeValue / 1000000 ); |
| |
| sal_Int32 nDeltaSeconds = m_aEndTime->Seconds - m_aStartTime->Seconds; |
| sal_Int32 nDeltaNanoSec = sal_Int32(m_aEndTime->Nanosec) - sal_Int32(m_aStartTime->Nanosec); |
| if (nDeltaNanoSec < 0) |
| { |
| nDeltaNanoSec = 1000000000 + nDeltaNanoSec; |
| nDeltaSeconds--; |
| } |
| |
| sal_Int32 nDeltaMilliSec = (nDeltaSeconds * 1000) + (nDeltaNanoSec / 1000000); |
| return ( nDeltaMilliSec < nDelta ); |
| } |
| |
| /** compare two OUString file name. |
| */ |
| inline sal_Bool compareFileName( const ::rtl::OUString & ustr1, const ::rtl::OUString & ustr2 ) |
| { |
| sal_Bool bOk; |
| //on Windows, the seperatar is '\', so here change to '/', then compare |
| #if defined (WNT ) |
| ::rtl::OUString ustr1new,ustr2new; |
| sal_Unicode reverseSlash = (sal_Unicode)'\\'; |
| |
| if (ustr1.lastIndexOf(reverseSlash) != -1) |
| ustr1new = ustr1.replace(reverseSlash,(sal_Unicode)'/'); |
| else |
| ustr1new = ustr1; |
| if (ustr2.lastIndexOf(reverseSlash) != -1) |
| ustr2new = ustr2.replace(reverseSlash,(sal_Unicode)'/'); |
| else |
| ustr2new = ustr2; |
| bOk = ustr1new.equalsIgnoreAsciiCase( ustr2new ) ; |
| #else |
| bOk = ustr1.equalsIgnoreAsciiCase( ustr2 ); |
| #endif |
| return bOk; |
| } |
| |
| /** compare a OUString and an ASCII file name. |
| */ |
| inline sal_Bool compareFileName( const ::rtl::OUString & ustr, const sal_Char *astr ) |
| { |
| (void)ustr; |
| ::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 ) ); |
| File aFile(aPathURL); |
| //nError = pFile->open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create ); |
| nError = aFile.open( OpenFlag_Read | OpenFlag_Write | OpenFlag_Create ); |
| //CPPUNIT_ASSERT_MESSAGE( "In createTestFile Function: creation ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) ); |
| if ( ( ::osl::FileBase::E_None != nError ) && ( nError != ::osl::FileBase::E_EXIST )) |
| { |
| t_print("createTestFile failed!\n"); |
| } |
| aFile.close(); |
| |
| } |
| |
| /** 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 ) |
| { |
| // LLA: t_print("deleteTestFile\n"); |
| ::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 ) ); |
| if ( ( ::osl::FileBase::E_None != nError ) && ( nError != ::osl::FileBase::E_EXIST )) |
| t_print("createTestDirectory failed!\n"); |
| } |
| |
| /** 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 ) |
| { |
| // LLA: t_print("deleteTestDirectory\n"); |
| ::rtl::OUString aPathURL = dirname.copy( 0 ); |
| ::osl::FileBase::RC nError; |
| // LLA: printFileName(aPathURL); |
| if ( !isURL( dirname ) ) |
| ::osl::FileBase::getFileURLFromSystemPath( dirname, aPathURL ); //convert if not full qualified URL |
| |
| ::osl::Directory testDir( aPathURL ); |
| if ( testDir.isOpen( ) == sal_True ) |
| { |
| // LLA: t_print("#close Dir\n"); |
| testDir.close( ); //close if still open. |
| } |
| |
| nError = ::osl::Directory::remove( aPathURL ); |
| // LLA: printError(nError); |
| // LLA: if (( ::osl::FileBase::E_None == nError )) |
| // LLA: { |
| // LLA: t_print("nError == E_None\n"); |
| // LLA: } |
| // LLA: else if ( ( nError == ::osl::FileBase::E_NOENT )) |
| // LLA: { |
| // LLA: t_print("nError == E_NOENT\n"); |
| // LLA: } |
| // LLA: else |
| // LLA: { |
| // LLA: // t_print("nError == %d\n", nError); |
| // LLA: } |
| rtl::OUString strError = rtl::OUString::createFromAscii( "In deleteTestDirectory function: remove Directory "); |
| strError += aPathURL; |
| CPPUNIT_ASSERT_MESSAGE( strError, ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) ); |
| // LLA: if (! ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT )) |
| // LLA: { |
| // LLA: t_print("In deleteTestDirectory function: remove\n"); |
| // LLA: } |
| } |
| |
| /** 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; |
| |
| // not used here |
| 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. |
| //testFile.close( ); |
| //testFile.open( OpenFlag_Write ); |
| 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; |
| } |
| |
| //check if the file exist |
| inline sal_Bool ifFileExist( const ::rtl::OUString & str ) |
| { |
| sal_Bool bCheckResult = sal_False; |
| |
| /*#ifdef WNT |
| ::rtl::OUString aUStr = str.copy( 0 ); |
| if ( isURL( str ) ) |
| ::osl::FileBase::getSystemPathFromFileURL( str, aUStr ); |
| |
| ::rtl::OString aString = ::rtl::OUStringToOString( aUStr, RTL_TEXTENCODING_ASCII_US ); |
| const char *path = aString.getStr( ); |
| if (( _access( path, 0 ) ) != -1 ) |
| bCheckResult = sal_True; |
| #else*/ |
| ::rtl::OString aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US ); |
| // const char *path = aString.getStr( ); |
| ::osl::File testFile( str ); |
| bCheckResult = ( osl::FileBase::E_None == testFile.open( OpenFlag_Read ) ); |
| //if (bCheckResult) |
| //t_print("%s exist!\n", path); |
| //else |
| //t_print("%s not exist!\n", path); |
| //#endif |
| return bCheckResult; |
| |
| } |
| |
| //check if the file can be writen |
| inline sal_Bool ifFileCanWrite( const ::rtl::OUString & str ) |
| { |
| sal_Bool bCheckResult = sal_False; |
| //on Windows, the file has no write right, but can be written |
| #ifdef WNT |
| ::rtl::OUString aUStr = str.copy( 0 ); |
| if ( isURL( str ) ) |
| ::osl::FileBase::getSystemPathFromFileURL( str, aUStr ); |
| |
| ::rtl::OString aString = ::rtl::OUStringToOString( aUStr, RTL_TEXTENCODING_ASCII_US ); |
| const char *path = aString.getStr( ); |
| if (( _access( path, 2 ) ) != -1 ) |
| bCheckResult = sal_True; |
| //on UNX, just test if open success with OpenFlag_Write |
| #else |
| ::osl::File testFile( str ); |
| bCheckResult = (osl::FileBase::E_None == testFile.open( OpenFlag_Write )); |
| #endif |
| return bCheckResult; |
| } |
| |
| 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 ) ); |
| Directory aDir( str ); |
| rc = aDir.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 ); |
| rc = aDir.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 ) |
| if ( ( rc = Directory::create( aUString ) ) == ::osl::FileBase::E_None ) |
| { |
| bCheckResult = sal_True; |
| //rc = pDir->remove( aUString ); |
| rc = Directory::remove( aUString ); |
| CPPUNIT_ASSERT( rc == ::osl::FileBase::E_None ); |
| } |
| else |
| bCheckResult = sal_False; |
| break; |
| |
| default: |
| bCheckResult = sal_False; |
| }// switch |
| |
| rc = aDir.close( ); |
| CPPUNIT_ASSERT( rc == FileBase::E_None ); |
| |
| }//if |
| |
| return bCheckResult; |
| } |
| |
| /** construct error message |
| */ |
| inline ::rtl::OUString outputError( const ::rtl::OUString & returnVal, const ::rtl::OUString & rightVal, const sal_Char * msg = "") |
| { |
| ::rtl::OUString aUString; |
| if ( returnVal.equals( rightVal ) ) |
| return aUString; |
| aUString += ::rtl::OUString::createFromAscii(msg); |
| aUString += ::rtl::OUString::createFromAscii(": the returned value is '"); |
| aUString += returnVal; |
| aUString += ::rtl::OUString::createFromAscii("', but the value should be '"); |
| aUString += rightVal; |
| aUString += ::rtl::OUString::createFromAscii("'."); |
| return aUString; |
| } |
| |
| /** 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 ) |
| { |
| (void)filepath; |
| (void)mode; |
| t_print("this method is not implemented yet"); |
| } |
| #endif |
| |
| inline ::rtl::OUString getCurrentPID( void ); |
| |
| |
| |
| //------------------------------------------------------------------------ |
| // Beginning of the test cases for FileBase class |
| //------------------------------------------------------------------------ |
| namespace osl_FileBase |
| { |
| |
| #if 0 //~ this function has been deprecated |
| //--------------------------------------------------------------------- |
| // 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: |
| ::osl::FileBase::RC nError; |
| |
| void getCanonicalName_001( ) |
| { |
| ::rtl::OUString aUStr_ValidURL; |
| 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.equalsIgnoreAsciiCase( aCanURL1 ) ); |
| } |
| |
| void getCanonicalName_002( ) |
| { |
| ::rtl::OUString aUStr_ValidURL; |
| |
| createTestFile( aCanURL1 ); |
| nError = ::osl::FileBase::getCanonicalName( aCanURL1, aUStr_ValidURL ); |
| deleteTestFile( aCanURL1 ); |
| |
| CPPUNIT_ASSERT_MESSAGE( " test for getCanonicalName function: an existed file name, should different from the request, it did not passed(W32)(UNX)", |
| ( osl::FileBase::E_None == nError ) && aUStr_ValidURL.equalsIgnoreAsciiCase( aCanURL1 ) ); |
| } |
| |
| void getCanonicalName_003( ) |
| { |
| ::rtl::OUString aUStr_ValidURL; |
| 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.equalsIgnoreAsciiCase( aCanURL2 ) ); |
| } |
| |
| CPPUNIT_TEST_SUITE( getCanonicalName ); |
| CPPUNIT_TEST( getCanonicalName_001 ); |
| CPPUNIT_TEST( getCanonicalName_002 ); |
| CPPUNIT_TEST( getCanonicalName_003 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class getCanonicalName |
| #endif |
| |
| //--------------------------------------------------------------------- |
| // 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, aResultURL6; |
| // ::osl::FileBase::RC nError; |
| sal_Bool bOk; |
| |
| public: |
| |
| void check_getAbsoluteFileURL( rtl::OUString const& _suBaseURL, rtl::OString const& _sRelativeURL, ::osl::FileBase::RC _nAssumeError, rtl::OUString const& _suAssumeResultStr ); |
| |
| void getAbsoluteFileURL_001_1(); |
| void getAbsoluteFileURL_001_2(); |
| void getAbsoluteFileURL_001_3(); |
| void getAbsoluteFileURL_001_4(); |
| void getAbsoluteFileURL_001_5(); |
| void getAbsoluteFileURL_001_6(); |
| void getAbsoluteFileURL_001_7(); |
| void getAbsoluteFileURL_001_8(); |
| void getAbsoluteFileURL_002(); |
| void getAbsoluteFileURL_003(); |
| void getAbsoluteFileURL_004(); |
| |
| CPPUNIT_TEST_SUITE( getAbsoluteFileURL ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_1 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_2 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_3 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_4 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_5 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_6 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_7 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_001_8 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_002 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_003 ); |
| CPPUNIT_TEST( getAbsoluteFileURL_004 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| |
| }; //class getAbsoluteFileURL |
| |
| /* use coding format as same as getSystemPathFromFileURL |
| // 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"; |
| sal_Char pResultURL6[] = "/relative/"; |
| aResultURL1 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL1 ) ); |
| aResultURL2 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL2 ) ); |
| aResultURL3 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL3 ) ); |
| aResultURL4 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL4 ) ); |
| aResultURL5 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL5 ) ); |
| aResultURL6 = aUserDirectoryURL.concat( rtl::OUString::createFromAscii( pResultURL6 ) ); |
| } |
| |
| void tearDown( ) |
| { |
| } |
| |
| // test code |
| void getAbsoluteFileURL_001( ) |
| { |
| ::rtl::OUString aUStr_AbsURL; |
| |
| ::osl::FileBase::RC nError11 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aRelURL1, aUStr_AbsURL ); |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL(' "); |
| suError += aUserDirectoryURL; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aRelURL1; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aUStr_AbsURL; |
| suError += outputError( aUStr_AbsURL, aResultURL1, "' ),"); |
| |
| sal_Bool nError12 = aUStr_AbsURL.equals( aResultURL1 ); |
| ::osl::FileBase::RC nError21 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aRelURL2, aUStr_AbsURL ); |
| sal_Bool nError22 = aUStr_AbsURL.equals( aResultURL2 ); |
| ::osl::FileBase::RC nError31 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aRelURL3, aUStr_AbsURL ); |
| sal_Bool nError32 = aUStr_AbsURL.equals( aResultURL3 ); |
| ::osl::FileBase::RC nError41 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aRelURL4, aUStr_AbsURL ); |
| sal_Bool nError42 = aUStr_AbsURL.equals( aResultURL4 ); |
| ::osl::FileBase::RC nError61 = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aRelURL6, aUStr_AbsURL ); |
| sal_Bool nError62 = aUStr_AbsURL.equals( aResultURL6 ); |
| printFileName( aUStr_AbsURL ); |
| printFileName( aResultURL6 ); |
| |
| 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 ) && |
| ( ::osl::FileBase::E_None == nError61 ) && ( sal_True == nError62 ) ); |
| } |
| |
| |
| #if ( defined UNX ) || ( defined OS2 ) //Link is not defined in Windows |
| void getAbsoluteFileURL_002( ) |
| { |
| ::rtl::OUString aUStr_AbsURL, aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys ); |
| ( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file"); |
| ( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/canonical.name"); |
| |
| rtl::OString strLinkFileName, strSrcFileName; |
| strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US ); |
| strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US ); |
| |
| createTestFile( aCanURL1 ); |
| sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| |
| nError = aFileBase.getAbsoluteFileURL( aUserDirectoryURL, aLnkURL1, aUStr_AbsURL ); |
| bOk = aUStr_AbsURL.equals( aResultURL5 ); |
| |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL(' "); |
| suError += aUserDirectoryURL; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aLnkURL1; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aUStr_AbsURL; |
| suError += outputError( aUStr_AbsURL, aResultURL5, "' ),"); |
| //printFileName(suError); |
| |
| deleteTestFile( aCanURL1 ); |
| fd = remove( strLinkFileName.getStr() ); |
| 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( ) |
| { |
| // LLA: may be a wrong test, aTmpName1 not a real URL |
| #if 0 |
| ::rtl::OUString aUStr_AbsURL; |
| |
| nError = aFileBase.getAbsoluteFileURL( aTmpName1, aRelURL1, aUStr_AbsURL ); //base dir invalid error |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL('"); |
| suError += aTmpName1; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aRelURL1; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aUStr_AbsURL; |
| suError += ::rtl::OUString::createFromAscii("' ),Parameter is invalid. it ignore the invalid base in Windows, did not pass in (W32), the reason maybe caused by the similar bug with getSystemPathFromFileURL() "); |
| |
| CPPUNIT_ASSERT_MESSAGE( suError, ( ::osl::FileBase::E_INVAL == nError ) ); |
| #endif |
| } |
| |
| //use ".." in relartive path, the BasePath must exist on the file system |
| void getAbsoluteFileURL_004( ) |
| { |
| //create two level directories under $Temp/PID/ |
| ::rtl::OUString aUStrUpBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1"); |
| createTestDirectory( aUStrUpBase ); |
| ::rtl::OUString aUStrBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1/dir1"); |
| createTestDirectory( aUStrBase ); |
| |
| ::rtl::OUString aUStrRelar = ::rtl::OUString::createFromAscii("../../mytestfile"); |
| ::rtl::OUString aUStr_AbsURL; |
| ::rtl::OUString aResultURL6 = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/mytestfile"); |
| |
| nError = aFileBase.getAbsoluteFileURL( aUStrBase, aUStrRelar, aUStr_AbsURL ); |
| bOk = aUStr_AbsURL.equals( aResultURL6 ); |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getAbsoluteFileURL('"); |
| suError += aUStrBase; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aUStrRelar; |
| suError += ::rtl::OUString::createFromAscii("', '"); |
| suError += aUStr_AbsURL; |
| suError += outputError( aUStr_AbsURL, aResultURL6, "' ), did not pass on Win32 "); |
| |
| deleteTestDirectory( aUStrBase ); |
| deleteTestDirectory( aUStrUpBase ); |
| |
| CPPUNIT_ASSERT_MESSAGE( suError, ( ::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*/ |
| |
| void getAbsoluteFileURL::check_getAbsoluteFileURL( rtl::OUString const& _suBaseURL, rtl::OString const& _sRelativeURL, ::osl::FileBase::RC _nAssumeError, rtl::OUString const& _suAssumeResultStr ) |
| { |
| rtl::OUString suRelativeURL = rtl::OStringToOUString(_sRelativeURL, RTL_TEXTENCODING_UTF8); |
| rtl::OString sBaseURL = rtl::OUStringToOString(_suBaseURL, RTL_TEXTENCODING_UTF8); |
| rtl::OUString suResultURL; |
| osl::FileBase::RC nError = FileBase::getAbsoluteFileURL( _suBaseURL, suRelativeURL, suResultURL ); |
| rtl::OString sResultURL = rtl::OUStringToOString( suResultURL, RTL_TEXTENCODING_UTF8); |
| rtl::OString sError = errorToString(nError); |
| t_print("getAbsoluteFileURL('%s','%s') deliver absolute URL: '%s', error '%s'\n", sBaseURL.getStr(), _sRelativeURL.getStr(),sResultURL.getStr(), sError.getStr() ); |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong: error number is wrong", nError == _nAssumeError ); |
| if ( nError == ::osl::FileBase::E_None ) |
| { |
| sal_Bool bStrAreEqual = _suAssumeResultStr.equals( suResultURL ); |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong: ResultURL is not equal to expected URL ", bStrAreEqual == sal_True ); |
| } |
| } |
| |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_1() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/file1") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, "relative/file1",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_2() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/file2") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, "relative/./file2",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_3() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/file3") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, "relative/../file3",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_4() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/file4") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, "././relative/../file4",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_5() |
| { |
| rtl::OUString suAssume; |
| #if ( defined UNX ) |
| suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative/") ); |
| #else |
| suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/relative") ); |
| #endif |
| check_getAbsoluteFileURL( aUserDirectoryURL, "././relative/.",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_6() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.relative") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, "./.relative",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_7() |
| { |
| rtl::OUString suAssume; |
| #if (defined UNX ) |
| suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.a/") ); |
| #else //windows |
| suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/.a") ); |
| #endif |
| check_getAbsoluteFileURL( aUserDirectoryURL, "./.a/mydir/..",::osl::FileBase::E_None, suAssume ); |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_001_8() |
| { |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/tmp/ok") ); |
| #if ( defined UNX ) || ( defined OS2 ) |
| check_getAbsoluteFileURL( aUserDirectoryURL, "tmp//ok",::osl::FileBase::E_None, suAssume ); |
| #else |
| check_getAbsoluteFileURL( aUserDirectoryURL, "tmp//ok",::osl::FileBase::E_INVAL, suAssume ); |
| #endif |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_002() |
| { |
| #if ( defined UNX ) || ( defined OS2 ) //Link is not defined in Windows |
| ::rtl::OUString aUStr_AbsURL, aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys ); |
| ( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file"); |
| ( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/canonical.name"); |
| |
| rtl::OString strLinkFileName, strSrcFileName; |
| strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US ); |
| strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US ); |
| |
| createTestFile( aCanURL1 ); |
| sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| rtl::OString sLnkURL = OUStringToOString( aLnkURL1, RTL_TEXTENCODING_ASCII_US ); |
| rtl::OUString suAssume = aUserDirectoryURL.concat( rtl::OUString::createFromAscii("/canonical.name") ); |
| check_getAbsoluteFileURL( aUserDirectoryURL, sLnkURL, ::osl::FileBase::E_None, suAssume ); |
| deleteTestFile( aCanURL1 ); |
| fd = remove( strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| #endif |
| } |
| //please see line# 930 |
| void getAbsoluteFileURL::getAbsoluteFileURL_003() |
| { |
| } |
| void getAbsoluteFileURL::getAbsoluteFileURL_004() |
| { |
| //create two level directories under $Temp/PID/ |
| ::rtl::OUString aUStrUpBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1"); |
| createTestDirectory( aUStrUpBase ); |
| ::rtl::OUString aUStrBase = aUserDirectoryURL + ::rtl::OUString::createFromAscii("/test1/dir1"); |
| createTestDirectory( aUStrBase ); |
| |
| ::rtl::OUString suAssume = aUserDirectoryURL.concat( ::rtl::OUString::createFromAscii("/mytestfile") ); |
| check_getAbsoluteFileURL( aUStrBase, "../../mytestfile" , ::osl::FileBase::E_None, suAssume ); |
| deleteTestDirectory( aUStrBase ); |
| deleteTestDirectory( aUStrUpBase ); |
| } |
| //--------------------------------------------------------------------- |
| // testing two methods: |
| // static inline RC getSystemPathFromFileURL( const ::rtl::OUString& ustrFileURL, |
| // ::rtl::OUString& ustrSystemPath ) |
| // static RC getFileURLFromSystemPath( const ::rtl::OUString & ustrSystemPath, |
| // ::rtl::OUString & ustrFileURL ); |
| //--------------------------------------------------------------------- |
| class SystemPath_FileURL:public CppUnit::TestFixture |
| { |
| //::osl::FileBase aFileBase; |
| // ::rtl::OUString aUStr; |
| // ::osl::FileBase::RC nError; |
| |
| //void check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr); |
| void check_SystemPath_FileURL(rtl::OString const& _sSource, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr, sal_Bool bDirection = sal_True ); |
| void checkWNTBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString ); |
| void checkUNXBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString ); |
| void checkWNTBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString); |
| void checkUNXBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString); |
| |
| public: |
| // test code. |
| void getSystemPathFromFileURL_001_1( ); |
| void getSystemPathFromFileURL_001_2( ); |
| void getSystemPathFromFileURL_001_21( ); |
| void getSystemPathFromFileURL_001_22( ); |
| void getSystemPathFromFileURL_001_3( ); |
| void getSystemPathFromFileURL_001_31( ); |
| void getSystemPathFromFileURL_001_4( ); |
| void getSystemPathFromFileURL_001_41( ); |
| void getSystemPathFromFileURL_001_5( ); |
| void getSystemPathFromFileURL_001_51( ); |
| void getSystemPathFromFileURL_001_52( ); |
| void getSystemPathFromFileURL_001_53( ); |
| void getSystemPathFromFileURL_001_6( ); |
| void getSystemPathFromFileURL_001_61( ); |
| void getSystemPathFromFileURL_001_7( ); |
| void getSystemPathFromFileURL_001_71( ); |
| void getSystemPathFromFileURL_001_8( ); |
| void getSystemPathFromFileURL_001_81( ); |
| void getSystemPathFromFileURL_001_9( ); |
| void getSystemPathFromFileURL_001_91( ); |
| void getSystemPathFromFileURL_001_92( ); |
| void getSystemPathFromFileURL_004( ); |
| void getSystemPathFromFileURL_005( ); |
| |
| //test case fot getFileURLFromSystemPath |
| void getFileURLFromSystemPath_001( ); |
| void getFileURLFromSystemPath_002( ); |
| void getFileURLFromSystemPath_003( ); |
| void getFileURLFromSystemPath_004( ); |
| void getFileURLFromSystemPath_005( ); |
| |
| CPPUNIT_TEST_SUITE( SystemPath_FileURL ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_1 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_2 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_21 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_22 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_3 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_31 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_4 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_41 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_5 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_51 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_52 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_53 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_6 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_61 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_7 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_71 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_8 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_81 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_9 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_91 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_001_92 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_004 ); |
| CPPUNIT_TEST( getSystemPathFromFileURL_005 ); |
| CPPUNIT_TEST( getFileURLFromSystemPath_001 ); |
| CPPUNIT_TEST( getFileURLFromSystemPath_002 ); |
| CPPUNIT_TEST( getFileURLFromSystemPath_003 ); |
| CPPUNIT_TEST( getFileURLFromSystemPath_004 ); |
| CPPUNIT_TEST( getFileURLFromSystemPath_005 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class SystemPath_FileURL |
| |
| |
| // test code. |
| |
| /* void getSystemPathFromFileURL::check_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr) |
| { |
| // PRE: URL as String |
| rtl::OUString suURL; |
| rtl::OUString suStr; |
| suURL = rtl::OStringToOUString(_sURL, RTL_TEXTENCODING_UTF8); |
| ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( suURL, suStr ); // start with / |
| |
| // if the given string is gt length 0, |
| // we check also this string |
| rtl::OString sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8); |
| rtl::OString sError = errorToString(nError); |
| t_print("getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s'\n", _sURL.getStr(), sStr.getStr(), sError.getStr() ); |
| |
| // rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8); |
| // sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8); |
| // t_print("UTF8: %s\n", sStr.getStr() ); |
| |
| if (_sAssumeResultStr.getLength() > 0) |
| { |
| sal_Bool bStrAreEqual = _sAssumeResultStr.equals(sStr); |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", |
| nError == _nAssumeError && bStrAreEqual == sal_True ); |
| } |
| else |
| { |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", nError == _nAssumeError ); |
| } |
| }*/ |
| |
| // if bDirection==sal_True, check getSystemPathFromFileURL |
| // if bDirection==sal_False, check getFileURLFromSystemPath |
| void SystemPath_FileURL::check_SystemPath_FileURL(rtl::OString const& _sSource, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sAssumeResultStr, sal_Bool bDirection) |
| { |
| // PRE: URL as String |
| rtl::OUString suSource; |
| rtl::OUString suStr; |
| suSource = rtl::OStringToOUString(_sSource, RTL_TEXTENCODING_UTF8); |
| ::osl::FileBase::RC nError; |
| if ( bDirection == sal_True ) |
| nError = osl::FileBase::getSystemPathFromFileURL( suSource, suStr ); |
| else |
| nError = osl::FileBase::getFileURLFromSystemPath( suSource, suStr ); |
| |
| // if the given string is gt length 0, |
| // we check also this string |
| rtl::OString sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8); |
| rtl::OString sError = errorToString(nError); |
| if ( bDirection == sal_True ) |
| t_print("getSystemPathFromFileURL('%s') deliver system path: '%s', error '%s'\n", _sSource.getStr(), sStr.getStr(), sError.getStr() ); |
| else |
| t_print("getFileURLFromSystemPath('%s') deliver File URL: '%s', error '%s'\n", _sSource.getStr(), sStr.getStr(), sError.getStr() ); |
| |
| // rtl::OUString suStrEncode = rtl::Uri::encode(suStr, rtl_UriCharClassUnoParamValue, rtl_UriEncodeKeepEscapes, RTL_TEXTENCODING_UTF8); |
| // sStr = rtl::OUStringToOString(suStr, RTL_TEXTENCODING_UTF8); |
| // t_print("UTF8: %s\n", sStr.getStr() ); |
| |
| if (_sAssumeResultStr.getLength() > 0) |
| { |
| sal_Bool bStrAreEqual = _sAssumeResultStr.equals(sStr); |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", |
| nError == _nAssumeError && bStrAreEqual == sal_True ); |
| } |
| else |
| { |
| CPPUNIT_ASSERT_MESSAGE( "Assumption is wrong", nError == _nAssumeError ); |
| } |
| } |
| void SystemPath_FileURL::checkWNTBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString) |
| { |
| #if ( defined WNT ) |
| check_SystemPath_FileURL(_sURL, _nAssumeError, _sWNTAssumeResultString); |
| #else |
| (void)_sURL; |
| (void)_nAssumeError; |
| (void)_sWNTAssumeResultString; |
| #endif |
| } |
| |
| void SystemPath_FileURL::checkUNXBehaviour_getSystemPathFromFileURL(rtl::OString const& _sURL, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString) |
| { |
| #if ( defined UNX ) |
| check_SystemPath_FileURL(_sURL, _nAssumeError, _sUnixAssumeResultString); |
| #else |
| (void)_sURL; |
| (void)_nAssumeError; |
| (void)_sUnixAssumeResultString; |
| #endif |
| } |
| |
| void SystemPath_FileURL::checkWNTBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sWNTAssumeResultString) |
| { |
| #if ( defined WNT ) |
| check_SystemPath_FileURL(_sSysPath, _nAssumeError, _sWNTAssumeResultString, sal_False ); |
| #else |
| (void)_sSysPath; |
| (void)_nAssumeError; |
| (void)_sWNTAssumeResultString; |
| #endif |
| } |
| |
| void SystemPath_FileURL::checkUNXBehaviour_getFileURLFromSystemPath(rtl::OString const& _sSysPath, ::osl::FileBase::RC _nAssumeError, rtl::OString const& _sUnixAssumeResultString) |
| { |
| #if ( defined UNX ) |
| check_SystemPath_FileURL(_sSysPath, _nAssumeError, _sUnixAssumeResultString, sal_False ); |
| #else |
| (void)_sSysPath; |
| (void)_nAssumeError; |
| (void)_sUnixAssumeResultString; |
| #endif |
| } |
| |
| /** LLA: Test for getSystemPathFromFileURL() |
| this test is splitted into 2 different OS tests, |
| the first function checkUNXBehaviour... runs only on Unix based Systems, |
| the second only on windows based systems |
| the first parameter are a file URL where we want to get the system path of, |
| the second parameter is the assumed error of the osl_getSystemPathFromFileURL() function, |
| the thrid parameter is the assumed result string, the string will only test, if it's length is greater 0 |
| */ |
| |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_1() |
| { |
| rtl::OString sURL(""); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_2() |
| { |
| rtl::OString sURL("/"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "\\"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_21() |
| { |
| // rtl::OString sURL("%2f"); |
| rtl::OString sURL("%2F"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/"); // LLA: this is may be a BUG |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_22() |
| { |
| rtl::OString sURL("file:///tmp%2Fmydir"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_3() |
| { |
| rtl::OString sURL("a"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "a"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "a"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_31() |
| { |
| rtl::OString sURL("tmpname"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "tmpname"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "tmpname"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_4() |
| { |
| rtl::OString sURL("file://"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_41() |
| { |
| rtl::OString sURL("file://localhost/tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_5() |
| { |
| rtl::OString sURL("file:///tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_51() |
| { |
| rtl::OString sURL("file://c:/tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:/tmp"); // LLA: this is may be a BUG |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_52() |
| { |
| rtl::OString sURL("file:///c:/tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_53() |
| { |
| // LLA: is this a legal file path? |
| rtl::OString sURL("file:///c|/tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c|/tmp"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_6() |
| { |
| rtl::OString sURL("file:///tmp/first"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/first"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_61() |
| { |
| rtl::OString sURL("file:///c:/tmp/first"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/first"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\first"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_7() |
| { |
| rtl::OString sURL("file:///tmp/../second"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/../second"); // LLA: may be a BUG |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_71() |
| { |
| rtl::OString sURL("file:///c:/tmp/../second"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/../second"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\..\\second"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_8() |
| { |
| rtl::OString sURL("../tmp"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "../tmp"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "..\\tmp"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_81() |
| { |
| rtl::OString sURL("file://~/tmp"); |
| char* home_path; |
| home_path = getenv("HOME"); |
| rtl::OString expResult(home_path); |
| expResult += "/tmp"; |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, expResult ); |
| // checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "\\tmp"); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_9() |
| { |
| rtl::OString sURL("file:///tmp/first%20second"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/tmp/first second"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_91() |
| { |
| rtl::OString sURL("file:///c:/tmp/first%20second"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "/c:/tmp/first second"); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, "c:\\tmp\\first second"); |
| } |
| |
| void SystemPath_FileURL::getSystemPathFromFileURL_001_92() |
| { |
| rtl::OString sURL("ca@#;+.,$///78no%01ni..name"); |
| checkUNXBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_None, ""); |
| checkWNTBehaviour_getSystemPathFromFileURL(sURL, osl::FileBase::E_INVAL, ""); |
| } |
| |
| #if 0 |
| void SystemPath_FileURL::getSystemPathFromFileURL_003( ) |
| { |
| // LLA: ??? |
| //!! seams to be, that the directories do not pass together |
| ::rtl::OUString aUStr; |
| ::rtl::OUString aRelativeURL = ::rtl::OUString::createFromAscii("../../relartive/file3"); |
| ::rtl::OUString aResultURL ( aSysPath4 ); |
| ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aRelativeURL, aUStr ); |
| |
| sal_Bool bOk = compareFileName( aUStr, aResultURL ); |
| |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL("); |
| suError += aRelativeURL; |
| suError += ::rtl::OUString::createFromAscii(") function:use a relative file URL, did not pass in(W32), it did not specified in method declaration of relative path issue, "); |
| suError += outputError(aUStr, aResultURL); |
| CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) ); |
| } |
| #endif |
| |
| //normal legal case |
| void SystemPath_FileURL::getSystemPathFromFileURL_004( ) |
| { |
| ::rtl::OUString aUStr; |
| ::rtl::OUString aNormalURL( aTmpName6 ); |
| ::rtl::OUString aResultURL ( aSysPath4 ); |
| ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aNormalURL, aUStr ); |
| |
| sal_Bool bOk = compareFileName( aUStr, aResultURL ); |
| |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL(' "); |
| suError += aNormalURL; |
| suError += ::rtl::OUString::createFromAscii(" ') function:use an absolute file URL, "); |
| suError += outputError(aUStr, aResultURL); |
| |
| CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) ); |
| |
| } |
| |
| //CJK charactors case |
| void SystemPath_FileURL::getSystemPathFromFileURL_005( ) |
| { |
| ::rtl::OUString aUStr; |
| createTestDirectory( aTmpName10 ); |
| ::rtl::OUString aNormalURL( aTmpName10 ); |
| ::rtl::OUString aResultURL ( aSysPath5 ); |
| |
| ::osl::FileBase::RC nError = osl::FileBase::getSystemPathFromFileURL( aNormalURL, aUStr ); |
| |
| sal_Bool bOk = compareFileName( aUStr, aResultURL ); |
| |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for getSystemPathFromFileURL(' "); |
| suError += aNormalURL; |
| suError += ::rtl::OUString::createFromAscii(" ') function:use a CJK coded absolute URL, "); |
| suError += outputError(aUStr, aResultURL); |
| deleteTestDirectory( aTmpName10 ); |
| |
| CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_None == nError ) && ( sal_True == bOk ) ); |
| } |
| void SystemPath_FileURL::getFileURLFromSystemPath_001() |
| { |
| rtl::OString sSysPath("~/tmp"); |
| char* home_path; |
| home_path = getenv("HOME"); |
| rtl::OString expResult(home_path); |
| expResult = "file://"+ expResult + "/tmp"; |
| checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, expResult ); |
| checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "~/tmp"); |
| } |
| void SystemPath_FileURL::getFileURLFromSystemPath_002() |
| { |
| rtl::OString sSysPath("c:/tmp"); |
| checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "c:/tmp"); |
| checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "file:///c:/tmp"); |
| } |
| void SystemPath_FileURL::getFileURLFromSystemPath_003() |
| { |
| rtl::OString sSysPath("file:///temp"); |
| checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, ""); |
| checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getFileURLFromSystemPath_004() |
| { |
| rtl::OString sSysPath("//tmp//first start"); |
| checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_None, "file:///tmp/first%20start"); |
| checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, ""); |
| } |
| void SystemPath_FileURL::getFileURLFromSystemPath_005() |
| { |
| rtl::OString sSysPath(""); |
| checkUNXBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, ""); |
| checkWNTBehaviour_getFileURLFromSystemPath(sSysPath, osl::FileBase::E_INVAL, ""); |
| } |
| // start with "~user", not impletment |
| // void SystemPath_FileURL::getFileURLFromSystemPath_006() |
| |
| |
| |
| |
| //--------------------------------------------------------------------- |
| // 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: |
| |
| // test code. |
| void searchFileURL_001( ) |
| { |
| /* search file is passed by system filename */ |
| nError1 = ::osl::FileBase::searchFileURL( aTmpName1, aUserDirectorySys, aUStr ); |
| /* search file is passed by full qualified file URL */ |
| nError2 = ::osl::FileBase::searchFileURL( aCanURL1, aUserDirectorySys, aUStr ); |
| /* search file is passed by relative file path */ |
| nError3 = ::osl::FileBase::searchFileURL( aRelURL4, aUserDirectorySys, aUStr ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for searchFileURL function: system filename/URL filename/relative path, system directory, searched files that is not exist, but it reply invalid error, did not pass in (W32) ", |
| ( osl::FileBase::E_NOENT == nError1 ) && |
| ( osl::FileBase::E_NOENT == nError2 ) && |
| ( osl::FileBase::E_NOENT == nError3 )); |
| } |
| |
| void searchFileURL_002( ) |
| { |
| /* search file is passed by system filename */ |
| nError1 = ::osl::FileBase::searchFileURL( aTempDirectorySys, aRootSys, aUStr ); |
| sal_Bool bOk1 = compareFileName( aUStr, aTempDirectoryURL ); |
| /* search file is passed by full qualified file URL */ |
| nError2 = ::osl::FileBase::searchFileURL( aTempDirectoryURL, aRootSys, aUStr ); |
| sal_Bool bOk2 = compareFileName( aUStr, aTempDirectoryURL ); |
| /* search file is passed by relative file path */ |
| nError3 = ::osl::FileBase::searchFileURL( aRelURL5, aRootSys, aUStr ); |
| sal_Bool bOk3 = compareFileName( aUStr, aTempDirectoryURL ); |
| /* search file is passed by an exist file */ |
| createTestFile( aCanURL1 ); |
| nError4 = ::osl::FileBase::searchFileURL( aCanURL4, aUserDirectorySys, 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( aUserDirectoryURL, aSystemPathList, aUStr ); |
| sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL ); |
| 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( aUserDirectoryURL, aSystemPathList, aUStr ); |
| sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL ); |
| 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( aUserDirectoryURL, aNullURL, aUStr ); |
| sal_Bool bOk = compareFileName( aUStr, aUserDirectoryURL ); |
| 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 = FileBase::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( aUserDirectoryURL ); |
| pUStr_FileURL = new ::rtl::OUString(); |
| //*pUStr_DirURL = aUserDirectoryURL; /// create temp file in /tmp/PID or c:\temp\PID.*/ |
| } |
| |
| void tearDown( ) |
| { |
| delete pUStr_DirURL; |
| delete pUStr_FileURL; |
| delete pHandle; |
| } |
| |
| // test code. |
| void createTempFile_001( ) |
| { |
| nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL ); |
| ::osl::File testFile( *pUStr_FileURL ); |
| //printFileName(*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( ) |
| { |
| bOK = sal_False; |
| nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, pUStr_FileURL ); |
| ::osl::File testFile( *pUStr_FileURL ); |
| nError2 = testFile.open( OpenFlag_Create ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "createTempFile function: create a temp file, but it does not exist", |
| ( osl::FileBase::E_None == nError1 ) && ( pHandle != NULL ) && |
| ( osl::FileBase::E_EXIST == nError2 ) ); |
| |
| //check file if have the write permission |
| if ( osl::FileBase::E_EXIST == nError2 ) { |
| bOK = ifFileCanWrite( *pUStr_FileURL ); |
| osl_closeFile( *pHandle ); |
| deleteTestFile( *pUStr_FileURL ); |
| } |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for open and write access rights, in (W32), it did not have write access right, but it should be writtenable.", |
| ( sal_True == bOK ) ); |
| } |
| |
| void createTempFile_003( ) |
| { |
| nError1 = FileBase::createTempFile( pUStr_DirURL, pHandle, 0 ); |
| //the temp file will be removed when return from createTempFile |
| bOK = ( pHandle != NULL && pHandle != 0); |
| 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.", |
| ( ::osl::FileBase::E_None == nError1 ) &&( sal_True == bOK ) ); |
| } |
| void createTempFile_004( ) |
| { |
| nError1 = FileBase::createTempFile( pUStr_DirURL, 0, pUStr_FileURL ); |
| bOK = ( pUStr_FileURL != 0); |
| ::osl::File testFile( *pUStr_FileURL ); |
| nError2 = testFile.open( OpenFlag_Create ); |
| deleteTestFile( *pUStr_FileURL ); |
| CPPUNIT_ASSERT_MESSAGE( "createTempFile function: create a temp file, but it does not exist", |
| ( osl::FileBase::E_None == nError1 ) && ( osl::FileBase::E_EXIST == nError2 ) &&( sal_True == bOK ) ); |
| |
| } |
| |
| CPPUNIT_TEST_SUITE( createTempFile ); |
| CPPUNIT_TEST( createTempFile_001 ); |
| CPPUNIT_TEST( createTempFile_002 ); |
| CPPUNIT_TEST( createTempFile_003 ); |
| CPPUNIT_TEST( createTempFile_004 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class createTempFile |
| |
| // ----------------------------------------------------------------------------- |
| #if 0 //~ this function has been deprecated. |
| CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getCanonicalName, "osl_FileBase" ); |
| #endif |
| CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getAbsoluteFileURL, "osl_FileBase" ); |
| CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::SystemPath_FileURL, "osl_FileBase" ); |
| // CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_FileBase::getFileURLFromSystemPath, "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 |
| //------------------------------------------------------------------------ |
| |
| #if 0 //~ this Class has been deprecated |
| 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 |
| #endif |
| |
| |
| //------------------------------------------------------------------------ |
| // 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 ); |
| pDir->close(); |
| /* |
| Directory aDir( aTmpName3 ); |
| nError1 = aDir.open(); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| nError1 = aDir.getNextItem( rItem, 0 ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| aDir.close(); |
| */ |
| } |
| |
| void tearDown( ) |
| { |
| // remove the tempfile in $TEMP/tmpdir/tmpname. |
| deleteTestFile( aTmpName4 ); |
| deleteTestDirectory( aTmpName3 ); |
| } |
| |
| // test code. |
| void ctors_001( ) |
| { |
| ::osl::FileStatus rFileStatus( FileStatusMask_All ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| aUStr = rFileStatus.getFileName( ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask all and see the file name", |
| sal_True == compareFileName( aUStr, aTmpName2) ); |
| } |
| |
| void ctors_002( ) |
| { |
| ::osl::FileStatus rFileStatus( 0 ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| aUStr = rFileStatus.getFileName( ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for ctors function: mask is empty", |
| sal_True == compareFileName( aUStr, aNullURL) ); |
| } |
| |
| CPPUNIT_TEST_SUITE( ctors ); |
| CPPUNIT_TEST( ctors_001 ); |
| CPPUNIT_TEST( ctors_002 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class ctors |
| |
| |
| //--------------------------------------------------------------------- |
| // testing the method |
| // inline sal_Bool isValid( sal_uInt32 nMask ) const |
| //--------------------------------------------------------------------- |
| class isValid : public CppUnit::TestFixture |
| { |
| ::rtl::OUString aUStr; |
| ::osl::Directory *pDir; |
| ::osl::DirectoryItem rItem_file, rItem_link; |
| |
| public: |
| // initialization |
| void setUp( ) |
| { |
| // create a tempfile in $TEMP/tmpdir/tmpname. |
| createTestDirectory( aTmpName3 ); |
| createTestFile( aTmpName4 ); |
| |
| pDir = new Directory( aTmpName3 ); |
| //::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) ); |
| ::osl::FileBase::RC 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( ) |
| { |
| ::osl::FileBase::RC nError1 = pDir->close( ); |
| delete pDir; |
| CPPUNIT_ASSERT_MESSAGE( errorToStr(nError1), ::osl::FileBase::E_None == nError1 ); |
| |
| // remove the tempfile in $TEMP/tmpdir/tmpname. |
| deleteTestFile( aTmpName4 ); |
| deleteTestDirectory( aTmpName3 ); |
| } |
| |
| // test code. |
| void isValid_001( ) |
| { |
| sal_uInt32 mask = 0; |
| ::osl::FileStatus rFileStatus( mask ); |
| ::osl::FileBase::RC 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 check_FileStatus(::osl::FileStatus const& _aStatus) |
| { |
| rtl::OString sStat; |
| if (_aStatus.isValid(FileStatusMask_Type)) |
| { |
| sStat += "type "; |
| } |
| if (_aStatus.isValid(FileStatusMask_Attributes)) |
| { |
| sStat += "attributes "; |
| } |
| if (_aStatus.isValid(FileStatusMask_CreationTime)) |
| { |
| sStat += "ctime "; |
| } |
| if (_aStatus.isValid(FileStatusMask_AccessTime)) |
| { |
| sStat += "atime "; |
| } |
| if (_aStatus.isValid(FileStatusMask_ModifyTime)) |
| { |
| sStat += "mtime "; |
| } |
| if (_aStatus.isValid(FileStatusMask_FileSize)) |
| { |
| sStat += "filesize "; |
| } |
| if (_aStatus.isValid(FileStatusMask_FileName)) |
| { |
| sStat += "filename "; |
| } |
| if (_aStatus.isValid(FileStatusMask_FileURL)) |
| { |
| sStat += "fileurl "; |
| } |
| t_print("mask: %s\n", sStat.getStr()); |
| } |
| |
| void isValid_002( ) |
| { |
| createTestFile( aTmpName6 ); |
| 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 ); |
| ::osl::FileBase::RC nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem_file ); |
| nError1 = rItem_file.getFileStatus( rFileStatus ); |
| |
| CPPUNIT_ASSERT_MESSAGE( errorToStr(nError1), ::osl::FileBase::E_None == nError1 ); |
| |
| // LLA: this is wrong, we never should try to check on all masks |
| // only on one. |
| // Second, it's not a bug, if a value is not valid, it's an unhandled feature. |
| |
| // sal_Bool bOk = rFileStatus.isValid( mask_file ); |
| |
| check_FileStatus(rFileStatus); |
| deleteTestFile( aTmpName6 ); |
| |
| // 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 ) ); |
| } |
| |
| //Link is not defined in Windows, and on Linux, we can not get the directory item of the link file |
| // LLA: we have to differ to filesystems, normal filesystems support links (EXT2, ...) |
| // castrated filesystems don't (FAT, FAT32) |
| // Windows NT NTFS support links, but the windows api don't :-( |
| |
| void isValid_003( ) |
| { |
| #if defined ( UNX ) |
| // ::osl::FileBase::RC nError; |
| sal_Int32 fd; |
| |
| ::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys ); |
| ( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/link.file"); |
| ( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/tmpname"); |
| |
| rtl::OString strLinkFileName; |
| rtl::OString strSrcFileName; |
| strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US ); |
| strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US ); |
| |
| //create a link file and link it to file "/tmp/PID/tmpdir/tmpname" |
| fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| |
| // testDirectory is "/tmp/PID/tmpdir/" |
| ::osl::Directory testDirectory( aTmpName3 ); |
| ::osl::FileBase::RC nError1 = testDirectory.open( ); |
| ::rtl::OUString aFileName = ::rtl::OUString::createFromAscii("link.file"); |
| sal_Bool bOk = sal_False; |
| while (1) { |
| nError1 = testDirectory.getNextItem( rItem_link, 4 ); |
| if (::osl::FileBase::E_None == nError1) { |
| sal_uInt32 mask_link = FileStatusMask_FileName | FileStatusMask_LinkTargetURL; |
| ::osl::FileStatus rFileStatus( mask_link ); |
| rItem_link.getFileStatus( rFileStatus ); |
| //printFileName( rFileStatus.getFileName( ) ); |
| if ( compareFileName( rFileStatus.getFileName( ), aFileName) == sal_True ) |
| { |
| //t_print("find the link file"); |
| if ( sal_True == rFileStatus.isValid( FileStatusMask_LinkTargetURL ) ) |
| { |
| bOk = sal_True; |
| break; |
| } |
| } |
| } |
| else |
| break; |
| }; |
| |
| fd = remove( strLinkFileName ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| |
| CPPUNIT_ASSERT_MESSAGE("test for isValid function: link file, check for LinkTargetURL", |
| ( sal_True == bOk ) ); |
| #endif |
| } |
| |
| void isValid_004( ) |
| { |
| sal_uInt32 mask_file_all = FileStatusMask_All; |
| ::osl::FileStatus rFileStatus_all( mask_file_all ); |
| ::osl::FileBase::RC nError1 = rItem_file.getFileStatus( rFileStatus_all ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| check_FileStatus(rFileStatus_all); |
| // LLA: this is wrong |
| // 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 ); |
| |
| check_FileStatus(rFileStatus_val); |
| // CPPUNIT_ASSERT_MESSAGE( "test for isValid function: check for Mask_All and Validate, really not sure what validate used for and how to use it, help me. did not pass (W32)(UNX).", |
| // ( sal_False == bOk1 ) && ( sal_True == bOk2 ) ); |
| } |
| |
| |
| 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 m_aItem_1, m_aItem_2, m_aVolumeItem, m_aFifoItem; |
| ::osl::DirectoryItem m_aLinkItem, m_aSocketItem, m_aSpecialItem; |
| |
| public: |
| // initialization |
| void setUp( ) |
| { |
| // create a tempfile: $TEMP/tmpdir/tmpname. |
| // a tempdirectory: $TEMP/tmpdir/tmpdir. |
| // use $ROOT/staroffice as volume ---> use dev/fd as volume. |
| // and get their directory item. |
| createTestDirectory( aTmpName3 ); |
| //printFileName( aTmpName2); |
| createTestFile( aTmpName3, aTmpName2 ); |
| createTestDirectory( aTmpName3, aTmpName1 ); |
| |
| ::std::auto_ptr<Directory> pDir( new Directory( aTmpName3 ) ); |
| nError1 = pDir->open( ); |
| CPPUNIT_ASSERT_MESSAGE("open aTmpName3 failed!", ::osl::FileBase::E_None == nError1 ); |
| //getNextItem can not assure which item retrieved |
| nError1 = pDir->getNextItem( m_aItem_1, 1 ); |
| CPPUNIT_ASSERT_MESSAGE("get first item failed!", ::osl::FileBase::E_None == nError1 ); |
| |
| nError1 = pDir->getNextItem( m_aItem_2 ); |
| CPPUNIT_ASSERT_MESSAGE("get second item failed!", ::osl::FileBase::E_None == nError1 ); |
| pDir->close(); |
| //mindy: failed on my RH9,so removed temporaly |
| //nError1 = ::osl::DirectoryItem::get( aVolURL2, m_aVolumeItem ); |
| //CPPUNIT_ASSERT_MESSAGE("get volume item failed!", ::osl::FileBase::E_None == nError1 ); |
| |
| } |
| |
| 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 | FileStatusMask_FileName ); |
| nError1 = m_aItem_1.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT_MESSAGE("getFileStatus failed", ::osl::FileBase::E_None == nError1 ); |
| |
| check_FileType(rFileStatus); |
| } |
| |
| void check_FileType(osl::FileStatus const& _rFileStatus ) |
| { |
| sal_Bool bOK = sal_False; |
| if ( _rFileStatus.isValid(FileStatusMask_FileName)) |
| { |
| rtl::OUString suFilename = _rFileStatus.getFileName(); |
| |
| if ( _rFileStatus.isValid(FileStatusMask_Type)) |
| { |
| osl::FileStatus::Type eType = _rFileStatus.getFileType( ); |
| |
| if ( compareFileName( suFilename, aTmpName2) == sal_True ) |
| { |
| // regular |
| bOK = ( eType == osl::FileStatus::Regular ); |
| } |
| if ( compareFileName( suFilename, aTmpName1) == sal_True ) |
| { |
| // directory |
| bOK = ( eType == ::osl::FileStatus::Directory ); |
| } |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: ", |
| ( bOK == sal_True ) ); |
| } |
| } |
| // LLA: it's not a bug, if a FileStatus not exist, so no else |
| } |
| |
| void getFileType_002( ) |
| { |
| ::osl::FileStatus rFileStatus( FileStatusMask_Type | FileStatusMask_FileName ); |
| nError1 = m_aItem_2.getFileStatus( rFileStatus ); |
| |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| check_FileType(rFileStatus); |
| } |
| |
| void getFileType_003( ) |
| { |
| #if 0 |
| // LLA: this have to be discussed. |
| ::osl::FileStatus rFileStatus( FileStatusMask_Type ); |
| nError1 = m_aVolumeItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| if (rFileStatus.isValid(FileStatusMask_Type)) |
| { |
| osl::FileStatus::Type eType = rFileStatus.getFileType( ); |
| |
| 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).", |
| ( eType == ::osl::FileStatus::Volume ) ); |
| } |
| #endif |
| } |
| |
| |
| void getFileType_004( ) |
| { |
| #if ( defined UNX ) || ( defined OS2 ) //Fifo creation is differ in Windows |
| |
| //create a fifo in $ROOT/tmp/tmpdir, get its DirectoryItem. |
| rtl::OString strFifoSys; |
| strFifoSys = OUStringToOString( aFifoSys, RTL_TEXTENCODING_ASCII_US ); |
| ::rtl::OUString aFifoURL; |
| |
| int fd = mkfifo( strFifoSys.getStr(), O_RDWR | O_CREAT ); |
| CPPUNIT_ASSERT_MESSAGE("mkfifo failed!", fd == 0 ); |
| ::osl::FileBase::getFileURLFromSystemPath( aFifoSys, aFifoURL ); |
| |
| nError1 = ::osl::DirectoryItem::get( aFifoURL, m_aFifoItem ); |
| CPPUNIT_ASSERT_MESSAGE("get item failed!", ::osl::FileBase::E_None == nError1 ); |
| |
| //check for File type |
| ::osl::FileStatus rFileStatus( FileStatusMask_Type ); |
| nError1 = m_aFifoItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT_MESSAGE("get Status failed!", ::osl::FileBase::E_None == nError1 ); |
| |
| //delete fifo |
| nError1 = ::osl::File::remove( aFifoURL ); |
| CPPUNIT_ASSERT_MESSAGE("remove file failed!", ::osl::FileBase::E_None == nError1 ); |
| |
| if (rFileStatus.isValid(FileStatusMask_Type)) |
| { |
| osl::FileStatus::Type eType = rFileStatus.getFileType( ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Fifo, Solaris version ", |
| ( eType == ::osl::FileStatus::Fifo ) ); |
| } |
| #endif |
| } |
| |
| /* |
| * LLA: removed, m_aSocketItem is wrong initialised. |
| */ |
| |
| // LLA: void getFileType_005( ) |
| // LLA: { |
| // LLA: #if defined ( SOLARIS ) //Socket file may differ in Windows |
| // LLA: // nError1 = ::osl::DirectoryItem::get( aTypeURL1, m_aSocketItem ); |
| // LLA: nError1 = ::osl::DirectoryItem::get( rtl::OUString::createFromAscii("/dev/null"), m_aSocketItem ); |
| // LLA: printError(nError1); |
| // LLA: CPPUNIT_ASSERT_MESSAGE("get Socket type file failed", ::osl::FileBase::E_None == nError1 ); |
| // LLA: |
| // LLA: //check for File type |
| // LLA: ::osl::FileStatus rFileStatus( FileStatusMask_Type ); |
| // LLA: |
| // LLA: nError1 = m_aSocketItem.getFileStatus( rFileStatus ); |
| // LLA: CPPUNIT_ASSERT_MESSAGE("getFileStatus failed", ::osl::FileBase::E_None == nError1 ); |
| // LLA: |
| // LLA: if (rFileStatus.isValid( FileStatusMask_Type )) |
| // LLA: { |
| // LLA: osl::FileStatus::Type eType = rFileStatus.getFileType( ); |
| // LLA: printFileType(eType); |
| // LLA: CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Socket, Solaris version ", |
| // LLA: ( eType == ::osl::FileStatus::Socket ) ); |
| // LLA: } |
| // LLA: #endif |
| // LLA: } |
| |
| |
| // deprecated since there is a same case Directory::getNextItem_004 |
| /*#if defined 0 //( UNX ) //( SOLARIS ) //Link file is not defined in Windows |
| void getFileType_006( ) |
| { |
| nError1 = ::osl::DirectoryItem::get( aTypeURL3, m_aLinkItem ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| //check for File type |
| ::osl::FileStatus rFileStatus( FileStatusMask_Type ); |
| nError1 = m_aLinkItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Link, UNX version ", |
| ( ::osl::FileStatus::Link == rFileStatus.getFileType( ) ) ); |
| } |
| #endif */ |
| |
| void getFileType_007( ) |
| { |
| #if defined ( SOLARIS ) //Special file is differ in Windows |
| nError1 = ::osl::DirectoryItem::get( aTypeURL2, m_aSpecialItem ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| //check for File type |
| ::osl::FileStatus rFileStatus( FileStatusMask_Type ); |
| nError1 = m_aSpecialItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| if (rFileStatus.isValid(FileStatusMask_Type)) |
| { |
| osl::FileStatus::Type eType = rFileStatus.getFileType( ); |
| |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for getFileType function: Special, Solaris version ", |
| ( eType == ::osl::FileStatus::Special ) ); |
| } |
| #endif |
| } |
| |
| CPPUNIT_TEST_SUITE( getFileType ); |
| CPPUNIT_TEST( getFileType_001 ); |
| CPPUNIT_TEST( getFileType_002 ); |
| CPPUNIT_TEST( getFileType_003 ); |
| CPPUNIT_TEST( getFileType_004 ); |
| // LLA: 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 = aUserDirectoryURL.copy( 0 ); |
| concatURL( aTypeURL, aTmpName2 ); |
| createTestFile( aTypeURL ); |
| nError = ::osl::DirectoryItem::get( aTypeURL, rItem ); |
| CPPUNIT_ASSERT( nError == FileBase::E_None ); |
| |
| aTypeURL_Hid = aUserDirectoryURL.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 ) |
| //windows only 3 file attributes: normal, readonly, hidden |
| 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( UNX 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 |
| |
| |
| void getAttributes_002( ) |
| { |
| #if ( defined UNX ) || ( defined OS2 ) |
| changeFileMode( aTypeURL, S_IXUSR | S_IXGRP | S_IXOTH ); |
| |
| ::osl::FileStatus rFileStatus( FileStatusMask_Attributes ); |
| nError = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( nError == FileBase::E_None ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for getAttributes function: Executable, GrpExe, OwnExe, OthExe, the result is Readonly, Executable, GrpExe, OwnExe, OthExe, it partly not pass( Solaris version )", |
| ( Attribute_ReadOnly | Attribute_Executable | Attribute_GrpExe | Attribute_OwnExe | Attribute_OthExe ) == |
| rFileStatus.getAttributes( ) ); |
| #endif |
| } |
| |
| |
| #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( ) |
| { |
| ::rtl::OUString aUserHiddenFileURL = ::rtl::OUString::createFromAscii("file:///c:/AUTOEXEC.BAT"); |
| nError = ::osl::DirectoryItem::get( aUserHiddenFileURL, rItem_hidden ); |
| //printFileName( aUserHiddenFileURL ); |
| CPPUNIT_ASSERT_MESSAGE("get item fail", nError == FileBase::E_None ); |
| ::osl::FileStatus rFileStatus( FileStatusMask_Attributes ); |
| nError = rItem_hidden.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( nError == FileBase::E_None ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "Hidden files(Windows version), please check if hidden file c:/AUTOEXEC.BAT exists ", |
| (rFileStatus.getAttributes( ) & Attribute_Hidden)!= 0 ); |
| } |
| #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 = aUserDirectoryURL.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( ) |
| { |
| 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 ); |
| |
| ::osl::FileStatus rFileStatus( FileStatusMask_AccessTime ); |
| nError = rItem.getFileStatus( rFileStatus ); |
| sal_Bool bOk = osl_getSystemTime( pTV_current ); |
| CPPUNIT_ASSERT( sal_True == bOk && nError == FileBase::E_None ); |
| |
| *pTV_access = rFileStatus.getAccessTime( ); |
| |
| sal_Bool bOK = t_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. ", |
| 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 = aUserDirectoryURL.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 = t_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 = aUserDirectoryURL.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( ) |
| { |
| ::osl::File testfile( aTypeURL ); |
| nError = testfile.open( OpenFlag_Write | OpenFlag_Read ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError ); |
| nError = testfile.setSize( TEST_FILE_SIZE ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError ); |
| |
| nError = ::osl::DirectoryItem::get( aTypeURL, rItem ); |
| CPPUNIT_ASSERT( nError == FileBase::E_None ); |
| ::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 = aUserDirectoryURL.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 = aUserDirectoryURL.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; |
| ::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys ); |
| ( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/link.file"); |
| ( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpname"); |
| |
| rtl::OString strLinkFileName, strSrcFileName; |
| strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US ); |
| strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US ); |
| |
| sal_Int32 fd; |
| fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() ); |
| 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( strLinkFileName.getStr() ); |
| 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", |
| 1 ); |
| } |
| #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; |
| |
| 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 ); |
| |
| ::osl::FileBase::RC nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write ); |
| ::osl::FileBase::RC 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; |
| |
| ::osl::FileBase::RC nError1 = testFile.open( OpenFlag_Read | OpenFlag_Write ); |
| ::osl::FileBase::RC 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_MESSAGE("close error", ::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 ); |
| //the file size is smaller than 100 |
| nError1 = testFile.setPos( Pos_End, -100 ); |
| CPPUNIT_ASSERT_MESSAGE( "should return error", ::osl::FileBase::E_INVAL == 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.getPos( nFilePointer ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_INVAL == nError1 ); |
| |
| 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 ); |
| } |
| /* void setSize_003( ) |
| { |
| ::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[3][27] = { "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 ); |
| } |
| void copy_006( ) |
| { |
| createTestFile( aTmpName6 ); |
| File tmpFile( aTmpName6 ); |
| FileBase::RC err = tmpFile.open( OpenFlag_Write | OpenFlag_Read ); |
| (void)err; |
| tmpFile.setSize( 200 ); |
| tmpFile.close(); |
| //copy to new path |
| nError1 = ::osl::File::copy( aTmpName6, aTmpName4 ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None ); |
| |
| //check if is the new file |
| File newFile( aTmpName4 ); |
| newFile.open( OpenFlag_Write | OpenFlag_Read ); |
| newFile.setPos( Pos_End, 0 ); |
| // CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| sal_uInt64 nFilePointer; |
| nError1 = newFile.getPos( nFilePointer ); |
| CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| newFile.close( ); |
| deleteTestFile( aTmpName6 ); |
| CPPUNIT_ASSERT_MESSAGE( "test for copy function: the dest file exist", |
| nFilePointer == 200 ); |
| } |
| //copyLink has not been impletmented yet |
| void copy_007( ) |
| { |
| #if ( defined UNX ) |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for copy function: source file is link file", |
| ::osl::FileBase::E_INVAL == nError1 ); |
| #endif |
| } |
| |
| 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( copy_006 ); |
| 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 ); |
| //returned ::osl::FileBase::E_ACCES on WNT |
| CPPUNIT_ASSERT_MESSAGE( "test for move function: use directory as destination", |
| ( ::osl::FileBase::E_ACCES == nError1 || ::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 ); |
| //move file $TEMP/tmpdir/tmpname to $TEMP/tmpname |
| nError2 = ::osl::File::move( aTmpName4, aTmpName6 ); |
| deleteTestDirectory( aTmpName6 ); |
| #if defined ( WNT ) |
| deleteTestDirectory( aTmpName4 );// in Windows, it can be moved!!!!! this is only for not influence the following test. |
| deleteTestFile( aTmpName6 ); |
| nError1 = ::osl::FileBase::E_NOTDIR; |
| nError2 = ::osl::FileBase::E_ISDIR; |
| #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 && ::osl::FileBase::E_ISDIR == nError2 ); |
| } |
| |
| 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 ) ); |
| } |
| // oldpath and newpath are not on the same filesystem.EXDEV,no such error no on Solaris, only on linux |
| void move_008( ) |
| { |
| CPPUNIT_ASSERT_MESSAGE( "oldpath and newpath are not on the same filesystem, should error returns", |
| ::osl::FileBase::E_None == nError1 ); |
| } |
| //bugid# 115420, after the bug fix, add the case |
| void move_009( ) |
| { |
| //create directory $TEMP/tmpname. |
| createTestDirectory( aTmpName6 ); |
| //create directory $TEMP/tmpname/tmpdir |
| createTestDirectory( aTmpName8 ); |
| //move directory $TEMP/tmpname to $TEMP/tmpname/tmpdir/tmpname |
| rtl::OUString newName = aTmpName8 + OUString::createFromAscii("/tmpname"); |
| //printFileName( newName ); |
| nError1 = ::osl::File::move( aTmpName3, newName ); |
| //deleteTestDirectory( newName + OUString::createFromAscii("/tmpname") ); |
| //deleteTestDirectory( newName ); |
| deleteTestDirectory( aTmpName8 ); |
| deleteTestDirectory( aTmpName6 ); |
| CPPUNIT_ASSERT_MESSAGE( "test for move function: move a directory to it's subdirectory", |
| ::osl::FileBase::E_None != nError1 ); |
| } |
| |
| 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( move_008 ); |
| //CPPUNIT_TEST( move_009 ); |
| 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( ) |
| { |
| //on windows, only can set 2 attributes: Attribute_ReadOnly, Attribute_HIDDEN |
| #ifdef UNX |
| //set the file to readonly |
| nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ); |
| CPPUNIT_ASSERT( nError2 == FileBase::E_None); |
| nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None); |
| //get the file attributes |
| ::osl::FileStatus rFileStatus( FileStatusMask_Attributes ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes and get it to verify.", |
| ( Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ) == |
| rFileStatus.getAttributes( ) ); |
| #else |
| //please see GetFileAttributes |
| nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly ); |
| CPPUNIT_ASSERT( nError2 == FileBase::E_None); |
| nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None); |
| //get the file attributes |
| ::osl::FileStatus rFileStatus( FileStatusMask_Attributes ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None ); |
| //here the file has 2 Attributes: FILE_ATTRIBUTE_READONLY and FILE_ATTRIBUTE_NORMAL, |
| // but FILE_ATTRIBUTE_NORMAL is valid only if used alone, so this is maybe a bug |
| /*::rtl::OString aString = ::rtl::OUStringToOString( aTmpName6, RTL_TEXTENCODING_ASCII_US ); |
| DWORD dwFileAttributes = GetFileAttributes( aString.getStr( ) ); |
| if (dwFileAttributes & FILE_ATTRIBUTE_NORMAL) |
| t_print("has normal attribute"); |
| if (dwFileAttributes & FILE_ATTRIBUTE_READONLY) |
| t_print("has readonly attribute"); |
| */ |
| CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes READONLY and get it to verify.", |
| (Attribute_ReadOnly & rFileStatus.getAttributes( )) != 0 ); |
| #endif |
| } |
| void setAttributes_002( ) |
| { |
| //on UNX, can not set hidden attribute to file, rename file can set the attribute |
| #ifdef WNT |
| //set the file to hidden |
| nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_Hidden); |
| |
| CPPUNIT_ASSERT( nError2 == FileBase::E_None); |
| nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None); |
| //get the file attributes |
| ::osl::FileStatus rFileStatus( FileStatusMask_Attributes ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for setAttributes function: set file attributes and get it to verify.", |
| (Attribute_Hidden & rFileStatus.getAttributes( )) != 0 ); |
| #endif |
| } |
| |
| CPPUNIT_TEST_SUITE( setAttributes ); |
| CPPUNIT_TEST( setAttributes_001 ); |
| CPPUNIT_TEST( setAttributes_002 ); |
| 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 ); |
| CPPUNIT_ASSERT_MESSAGE( errorToStr( nError2 ), nError2 == FileBase::E_None); |
| |
| //get the file access time, creation time, modify time |
| nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem ); |
| CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None); |
| |
| ::osl::FileStatus rFileStatus( FileStatusMask_AccessTime ); |
| nError1 = rItem.getFileStatus( rFileStatus ); |
| CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ),nError1 == FileBase::E_None ); |
| *pTV_access = rFileStatus.getAccessTime( ); |
| |
| ::osl::FileStatus rFileStatus1( FileStatusMask_CreationTime ); |
| nError1 = rItem.getFileStatus( rFileStatus1 ); |
| CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None ); |
| *pTV_creation = rFileStatus1.getCreationTime( ); |
| |
| ::osl::FileStatus rFileStatus2( FileStatusMask_ModifyTime ); |
| nError1 = rItem.getFileStatus( rFileStatus2 ); |
| CPPUNIT_ASSERT_MESSAGE( errorToStr( nError1 ), nError1 == FileBase::E_None ); |
| *pTV_modify = rFileStatus2.getModifyTime( ); |
| |
| CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set access time then get it. time precision is still a problem for it cut off the nanosec.", |
| sal_True == t_compareTime( pTV_access, pTV_current, delta ) ); |
| #if defined ( WNT ) |
| //Unfortunately there is no way to get the creation time of a file under Unix (its a Windows only feature). |
| //That means the flag osl_FileStatus_Mask_CreationTime should be deprecated under Unix. |
| CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set creation time then get it. ", |
| sal_True == t_compareTime( pTV_creation, pTV_current, delta ) ) ; |
| #endif |
| CPPUNIT_ASSERT_MESSAGE( "test for setTime function: set modify time then get it. ", |
| sal_True == t_compareTime( pTV_modify, pTV_current, delta ) ); |
| free( pTV_current ); |
| free( pTV_creation ); |
| free( pTV_access ); |
| free( pTV_modify ); |
| } |
| |
| CPPUNIT_TEST_SUITE( setTime ); |
| CPPUNIT_TEST( setTime_001 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class setTime |
| |
| //--------------------------------------------------------------------- |
| // testing the method |
| // inline static RC sync() |
| //--------------------------------------------------------------------- |
| class sync : public CppUnit::TestFixture |
| { |
| ::osl::FileBase::RC nError1, nError2; |
| ::osl::DirectoryItem rItem; |
| |
| public: |
| // initialization |
| void setUp( ) |
| { |
| // create a tempfile in $TEMP/tmpdir/tmpname. |
| createTestFile( aTmpName6 ); |
| |
| } |
| |
| void tearDown( ) |
| { |
| // remove the tempfile in $TEMP/tmpdir/tmpname. |
| deleteTestFile( aTmpName6 ); |
| } |
| |
| // test case: if The file is located on a read only file system. |
| void sync_001( ) |
| { |
| #ifdef UNX |
| nError1 = ::osl::DirectoryItem::get( aTmpName6, rItem ); |
| CPPUNIT_ASSERT( nError1 == FileBase::E_None); |
| |
| File tmp_file( aTmpName6 ); |
| FileBase::RC err = tmp_file.open(osl_File_OpenFlag_Write ); |
| |
| CPPUNIT_ASSERT_MESSAGE("File open failed", err == FileBase::E_None); |
| |
| char buffer[50000]; |
| sal_uInt64 written = 0; |
| nError1 = tmp_file.write((void*)buffer, sizeof(buffer), written); |
| CPPUNIT_ASSERT_MESSAGE("write failed!", nError1 == FileBase::E_None); |
| |
| //set the file to readonly |
| nError2 = ::osl::File::setAttributes( aTmpName6, Attribute_ReadOnly | Attribute_GrpRead | Attribute_OwnRead | Attribute_OthRead ); |
| CPPUNIT_ASSERT( nError2 == FileBase::E_None); |
| |
| nError2 = tmp_file.sync(); |
| |
| CPPUNIT_ASSERT_MESSAGE("can not sync to readonly file!", nError2 == FileBase::E_None); |
| |
| tmp_file.close(); |
| #endif |
| } |
| //test case:no enough space, how to create such case???see test_cpy_wrt_file.cxx::test_osl_writeFile |
| |
| |
| |
| CPPUNIT_TEST_SUITE( sync ); |
| CPPUNIT_TEST( sync_001 ); |
| CPPUNIT_TEST_SUITE_END( ); |
| };// class setTime |
| |
| // ----------------------------------------------------------------------------- |
| 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" ); |
| CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_File::sync, "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 ); |
| // LLA: t_print("tearDown done.\n"); |
| } |
| |
| // 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( aUserDirectorySys ); //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 |
| //mindy: nError1 = testDirectory.getNextItem( rItem, 0 ); |
| //mindy: CPPUNIT_ASSERT( ::osl::FileBase::E_None == nError1 ); |
| |
| //reset enumeration |
| nError2 = testDirectory.reset( ); |
| //get reseted Item, if reset does not work, getNextItem() should return the second Item (aTmpName1) |
| 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 ); |
| |
| sal_Bool bOK1,bOK2; |
| bOK1 = compareFileName( rFileStatus.getFileName( ), aTmpName2 ); |
| bOK2 = compareFileName( rFileStatus.getFileName( ), aHidURL1 ); |
| |
| 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 == bOK1 || bOK2 ) ); |
| } |
| |
| 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( aUserDirectorySys ); //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 = sal_False; |
| sal_Bool bOk2 = sal_False; |
| sal_Bool bOk3 = sal_False; |
| ::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 ) || compareFileName( rFileStatus.getFileName( ), aHidURL1); |
| break; |
| case 1: bOk2 = compareFileName( rFileStatus.getFileName( ), aTmpName1 ); |
| break; |
| case 2: bOk3 = compareFileName( rFileStatus.getFileName( ), aHidURL1) || compareFileName( rFileStatus.getFileName( ), aTmpName2 ); |
| } |
| } |
| |
| //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 ) ); |
| } |
| |
| void getNextItem_004( ) |
| { |
| //create a link file(can not on Windows), then check if getNextItem can get it. |
| #ifdef UNX |
| sal_Bool bOK = sal_False; |
| ::rtl::OUString aUStr_LnkFileSys( aTempDirectorySys ), aUStr_SrcFileSys( aTempDirectorySys ); |
| ( ( aUStr_LnkFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/link.file"); |
| ( ( aUStr_SrcFileSys += aSlashURL ) += getCurrentPID( ) ) += ::rtl::OUString::createFromAscii("/tmpdir/tmpname"); |
| rtl::OString strLinkFileName, strSrcFileName; |
| strLinkFileName = OUStringToOString( aUStr_LnkFileSys, RTL_TEXTENCODING_ASCII_US ); |
| strSrcFileName = OUStringToOString( aUStr_SrcFileSys, RTL_TEXTENCODING_ASCII_US ); |
| |
| //create a link file and link it to file "/tmp/PID/tmpdir/tmpname" |
| sal_Int32 fd = symlink( strSrcFileName.getStr(), strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT( fd == 0 ); |
| ::osl::Directory testDirectory( aTmpName3 ); |
| |
| //open a directory |
| nError1 = testDirectory.open( ); |
| ::rtl::OUString aFileName = ::rtl::OUString::createFromAscii("link.file"); |
| |
| while (1) { |
| nError1 = testDirectory.getNextItem( rItem, 4 ); |
| if (::osl::FileBase::E_None == nError1) { |
| ::osl::FileStatus rFileStatus( FileStatusMask_FileName | FileStatusMask_Type ); |
| rItem.getFileStatus( rFileStatus ); |
| if ( compareFileName( rFileStatus.getFileName( ), aFileName) == sal_True ) |
| { |
| if ( FileStatus::Link == rFileStatus.getFileType( )) |
| { |
| bOK = sal_True; |
| break; |
| } |
| } |
| } |
| else |
| break; |
| }; |
| fd = std::remove( strLinkFileName.getStr() ); |
| CPPUNIT_ASSERT_MESSAGE( "remove link file failed", fd == 0 ); |
| CPPUNIT_ASSERT_MESSAGE( "test for getNextItem function: check if can retrieve the link file name", |
| ( bOK == sal_True ) ); |
| #endif |
| } |
| |
| CPPUNIT_TEST_SUITE( getNextItem ); |
| CPPUNIT_TEST( getNextItem_001 ); |
| CPPUNIT_TEST( getNextItem_002 ); |
| CPPUNIT_TEST( getNextItem_003 ); |
| CPPUNIT_TEST( getNextItem_004 ); |
| 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 checkValidMask(osl::VolumeInfo const& _aVolumeInfo, sal_Int32 _nMask) |
| { |
| if (_nMask == VolumeInfoMask_FileSystemName) |
| { |
| //get file system name |
| ::rtl::OUString aFileSysName( aNullURL ); |
| aFileSysName = _aVolumeInfo.getFileSystemName( ); |
| |
| sal_Bool bRes2 = compareFileName( aFileSysName, aNullURL ); |
| CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: getVolumeInfo of root directory.", |
| ( osl::FileBase::E_None == nError1 ) && |
| ( sal_False == bRes2 ) ); |
| } |
| if (_nMask == VolumeInfoMask_Attributes) |
| { |
| sal_Bool b1 = _aVolumeInfo.getRemoteFlag(); |
| sal_Bool b2 = _aVolumeInfo.getRemoveableFlag(); |
| sal_Bool b3 = _aVolumeInfo.getCompactDiscFlag(); |
| sal_Bool b4 = _aVolumeInfo.getFloppyDiskFlag(); |
| sal_Bool b5 = _aVolumeInfo.getFixedDiskFlag(); |
| sal_Bool b6 = _aVolumeInfo.getRAMDiskFlag(); |
| |
| rtl::OString sAttr; |
| if (b1) sAttr = "Remote"; |
| if (b2) sAttr += " Removeable"; |
| if (b3) sAttr += " CDROM"; |
| if (b4) sAttr += " Floppy"; |
| if (b5) sAttr += " FixedDisk"; |
| if (b6) sAttr += " RAMDisk"; |
| |
| t_print("Attributes: %s\n", sAttr.getStr() ); |
| } |
| if (_nMask == VolumeInfoMask_TotalSpace) |
| { |
| // within Linux, df / * 1024 bytes is the result |
| sal_uInt64 nSize = _aVolumeInfo.getTotalSpace(); |
| t_print("Total space: %lld\n", nSize); |
| } |
| if (_nMask == VolumeInfoMask_UsedSpace) |
| { |
| sal_uInt64 nSize = _aVolumeInfo.getUsedSpace(); |
| t_print(" Used space: %lld\n", nSize); |
| } |
| if (_nMask == VolumeInfoMask_FreeSpace) |
| { |
| sal_uInt64 nSize = _aVolumeInfo.getFreeSpace(); |
| t_print(" Free space: %lld\n", nSize); |
| } |
| if (_nMask == VolumeInfoMask_MaxNameLength) |
| { |
| sal_uInt32 nLength = _aVolumeInfo.getMaxNameLength(); |
| t_print("max name length: %ld\n", nLength); |
| } |
| if (_nMask == VolumeInfoMask_MaxPathLength) |
| { |
| sal_uInt32 nLength = _aVolumeInfo.getMaxPathLength(); |
| t_print("max path length: %ld\n", nLength); |
| } |
| if (_nMask == VolumeInfoMask_FileSystemCaseHandling) |
| { |
| bool bIsCase = _aVolumeInfo.isCaseSensitiveFileSystem(); |
| t_print("filesystem case sensitive: %s\n", bIsCase ? "yes" : "no"); |
| } |
| } |
| |
| void checkVolumeInfo(sal_Int32 _nMask) |
| { |
| ::osl::VolumeInfo aVolumeInfo( _nMask ); |
| //call getVolumeInfo here |
| nError1 = ::osl::Directory::getVolumeInfo( aVolURL1, aVolumeInfo ); |
| // LLA: IMHO it's not a bug, if VolumeInfo is not valid, it's a feature |
| // LLA: CPPUNIT_ASSERT_MESSAGE("mask is not valid", sal_True == aVolumeInfo.isValid( _nMask ) ); |
| if (aVolumeInfo.isValid( _nMask)) |
| { |
| checkValidMask(aVolumeInfo, _nMask); |
| } |
| } |
| |
| |
| void getVolumeInfo_001_1( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_FileSystemName; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_2( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_Attributes; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_3( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_TotalSpace; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_4( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_UsedSpace; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_5( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_FreeSpace; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_6( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_MaxNameLength; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_7( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_MaxPathLength; |
| checkVolumeInfo(mask); |
| } |
| void getVolumeInfo_001_8( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_FileSystemCaseHandling; |
| checkVolumeInfo(mask); |
| } |
| |
| void getVolumeInfo_002( ) |
| { |
| sal_Int32 mask = VolumeInfoMask_FileSystemName; |
| ::osl::VolumeInfo aVolumeInfo( mask ); |
| //call getVolumeInfo here |
| |
| // LLA: rtl::OUString aRootSysURL; |
| // LLA: nError1 = osl::File::getFileURLFromSystemPath(aRootSys, aRootSysURL); |
| // LLA: |
| // LLA: CPPUNIT_ASSERT_MESSAGE( "can't convert root path to file url", |
| // LLA: ( osl::FileBase::E_NONE == nError1 ) ); |
| |
| 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 ); |
| |
| // LLA: in Windows, it reply no error, it did not pass in (W32). |
| #ifdef UNX |
| CPPUNIT_ASSERT_MESSAGE( "test for getVolumeInfo function: non-existence test. ", |
| ( osl::FileBase::E_NOENT == nError1 ) ); |
| #endif |
| } |
| |
| CPPUNIT_TEST_SUITE( getVolumeInfo ); |
| CPPUNIT_TEST( getVolumeInfo_001_1 ); |
| CPPUNIT_TEST( getVolumeInfo_001_2 ); |
| CPPUNIT_TEST( getVolumeInfo_001_3 ); |
| CPPUNIT_TEST( getVolumeInfo_001_4 ); |
| CPPUNIT_TEST( getVolumeInfo_001_5 ); |
| CPPUNIT_TEST( getVolumeInfo_001_6 ); |
| CPPUNIT_TEST( getVolumeInfo_001_7 ); |
| CPPUNIT_TEST( getVolumeInfo_001_8 ); |
| 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 ); |
| sal_Bool bExist = ifFileExist( 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.", |
| bExist == sal_True &&(( 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 ); |
| ::rtl::OUString suError = ::rtl::OUString::createFromAscii("test for remove function: try to remove a directory that is not empty.") + errorToStr( nError1 ); |
| #if defined ( SOLARIS ) |
| //on UNX, the implementation uses rmdir(), which EEXIST is thrown on Solaris when the directory is not empty, refer to: 'man -s 2 rmdir', while on linux, ENOTEMPTY is thrown. |
| //EEXIST The directory contains entries other than those for "." and "..". |
| t_print("#Solaris test\n"); |
| CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_EXIST == nError1 ) ); |
| #else |
| CPPUNIT_ASSERT_MESSAGE( suError, ( osl::FileBase::E_NOTEMPTY == nError1 ) ); |
| #endif |
| } |
| |
| 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 |
| |
| //######################################## |
| // TEST Directory::createPath |
| //######################################## |
| |
| #ifdef WNT |
| # define PATH_BUFFER_SIZE MAX_PATH |
| #else |
| # define PATH_BUFFER_SIZE PATH_MAX |
| #endif |
| |
| char TEST_PATH_POSTFIX[] = "hello/world"; |
| |
| //######################################## |
| OUString get_test_path() |
| { |
| OUString tmp; |
| FileBase::RC rc = FileBase::getTempDirURL(tmp); |
| |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "Test path creation failed", |
| rc == FileBase::E_None |
| ); |
| |
| OUStringBuffer b(tmp); |
| if (tmp.lastIndexOf('/') != (tmp.getLength() - 1)) |
| b.appendAscii("/"); |
| |
| b.appendAscii(TEST_PATH_POSTFIX); |
| |
| return b.makeStringAndClear(); |
| } |
| |
| //######################################## |
| void rm_test_path(const OUString& path) |
| { |
| sal_Unicode buffer[PATH_BUFFER_SIZE]; |
| rtl_copyMemory(buffer, path.getStr(), (path.getLength() + 1) * sizeof(sal_Unicode)); |
| |
| sal_Int32 i = rtl_ustr_lastIndexOfChar(buffer, '/'); |
| if (i == path.getLength()) |
| buffer[i] = 0; |
| |
| Directory::remove(buffer); |
| |
| i = rtl_ustr_lastIndexOfChar(buffer, '/'); |
| buffer[i] = 0; |
| Directory::remove(buffer); |
| } |
| |
| //######################################## |
| class DirCreatedObserver : public DirectoryCreationObserver |
| { |
| public: |
| DirCreatedObserver() : i(0) |
| { |
| } |
| |
| virtual void DirectoryCreated(const rtl::OUString& /*aDirectoryUrl*/) |
| { |
| i++; |
| }; |
| |
| int number_of_dirs_created() const |
| { |
| return i; |
| } |
| |
| private: |
| int i; |
| }; |
| |
| |
| //######################################## |
| class createPath : public CppUnit::TestFixture |
| { |
| public: |
| //########################################## |
| createPath() |
| {} |
| |
| //########################################## |
| void with_relative_path() |
| { |
| FileBase::RC rc = Directory::createPath( |
| OUString::createFromAscii(TEST_PATH_POSTFIX)); |
| |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "osl_createDirectoryPath contract broken", |
| rc == FileBase::E_INVAL |
| ); |
| } |
| |
| //########################################## |
| void without_callback() |
| { |
| OUString tp_url = get_test_path(); |
| |
| rm_test_path(tp_url); |
| |
| FileBase::RC rc = Directory::createPath(tp_url); |
| |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "osl_createDirectoryPath failed", |
| rc == FileBase::E_None |
| ); |
| } |
| |
| //########################################## |
| void with_callback() |
| { |
| OUString tp_url = get_test_path(); |
| |
| rm_test_path(tp_url); |
| |
| DirCreatedObserver* observer = new DirCreatedObserver; |
| FileBase::RC rc = Directory::createPath(tp_url, observer); |
| int nDirs = observer->number_of_dirs_created(); |
| delete observer; |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "osl_createDirectoryPath failed", |
| (rc == FileBase::E_None) && (nDirs > 0) |
| ); |
| |
| } |
| |
| #ifdef WNT |
| |
| //########################################## |
| char* get_unused_drive_letter() |
| { |
| static char m_aBuff[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
| |
| DWORD ld = GetLogicalDrives(); |
| DWORD i = 4; |
| DWORD j = 2; |
| |
| while ((ld & i) && (i > 1)) |
| { i = i << 1; j++; } |
| |
| if (i > 2) |
| return m_aBuff + j; |
| |
| return NULL; |
| } |
| |
| //########################################## |
| void at_invalid_logical_drive() |
| { |
| char* drv = get_unused_drive_letter(); |
| char buff[PATH_BUFFER_SIZE]; |
| rtl_zeroMemory(buff, sizeof(buff)); |
| |
| strncpy(buff, drv, 1); |
| strcat(buff, ":\\"); |
| strcat(buff, TEST_PATH_POSTFIX); |
| |
| OUString path = OUString::createFromAscii(buff); |
| OUString tp_url; |
| FileBase::getFileURLFromSystemPath(path, tp_url); |
| |
| FileBase::RC rc = Directory::createPath(tp_url); |
| |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "osl_createDirectoryPath doesn't fail on unused logical drive letters", |
| rc != FileBase::E_None |
| ); |
| } |
| |
| //########################################## |
| void with_UNC_path() |
| { |
| |
| OUString tp_unc = OUString::createFromAscii("\\\\Tra-1\\TRA_D\\hello\\world\\"); |
| OUString tp_url; |
| FileBase::getFileURLFromSystemPath(tp_unc, tp_url); |
| |
| FileBase::RC rc = Directory::createPath(tp_url); |
| |
| CPPUNIT_ASSERT_MESSAGE |
| ( |
| "osl_createDirectoryPath fails with UNC path", |
| rc == FileBase::E_None |
| ); |
| } |
| |
| #endif /* WNT */ |
| |
| CPPUNIT_TEST_SUITE(createPath); |
| CPPUNIT_TEST(with_relative_path); |
| CPPUNIT_TEST(without_callback); |
| CPPUNIT_TEST(with_callback); |
| #ifdef WNT |
| CPPUNIT_TEST(at_invalid_logical_drive); |
| |
| // adapt the UNC path in method createDirectoryPath_with_UNC_path |
| // in order to run this test successfully |
| //CPPUNIT_TEST(with_UNC_path); |
| #endif |
| CPPUNIT_TEST_SUITE_END(); |
| |
| }; // class createPath |
| |
| // ----------------------------------------------------------------------------- |
| 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" ); |
| CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_Directory::createPath, "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; |
| |
| |
| |
| /** get Current PID. |
| */ |
| inline ::rtl::OUString getCurrentPID( ) |
| { |
| //~ Get current PID and turn it into OUString; |
| int nPID = 0; |
| #ifdef WNT |
| nPID = GetCurrentProcessId(); |
| #else |
| nPID = getpid(); |
| #endif |
| return ( ::rtl::OUString::valueOf( ( long )nPID ) ); |
| } |
| |
| |
| /** Insert Current PID to the URL to avoid access violation between multiuser execution. |
| */ |
| inline void insertPID( ::rtl::OUString & pathname ) |
| { |
| //~ check if the path contain the temp directory, do nothing changes if not; |
| if ( pathname.indexOf( aTempDirectoryURL ) && pathname.indexOf( aTempDirectorySys ) ) |
| return; |
| |
| //~ format pathname to TEMP/USERPID/URL style; |
| if ( !pathname.indexOf( aTempDirectoryURL ) ) |
| { |
| ::rtl::OUString strPID( getCurrentPID( ) ); |
| ::rtl::OUString pathLeft = aTempDirectoryURL.copy( 0 ); |
| ::rtl::OUString pathRight = pathname.copy( aTempDirectoryURL.getLength( ) ); |
| pathname = pathLeft.copy( 0 ); |
| ( ( pathname += aSlashURL ) += strPID ) += pathRight; |
| } |
| else |
| { |
| ::rtl::OUString strPID( getCurrentPID( ) ); |
| ::rtl::OUString pathLeft = aTempDirectorySys.copy( 0 ); |
| ::rtl::OUString pathRight = pathname.copy( aTempDirectorySys.getLength( ) ); |
| pathname = pathLeft.copy( 0 ); |
| ( ( pathname += aSlashURL ) += strPID ) += pathRight; |
| } |
| |
| |
| } |
| |
| /** 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, the main task |
| of initialization is adapt all URL defined in osl_File_Const.h to TEMP/USERPID/URL style format, |
| since there may be an instance that multiuser execute test at the same time, and the temp file |
| may not be clean up in this case due to access right problem. |
| */ |
| void RegisterAdditionalFunctions( FktRegFuncPtr _pFunc ) |
| { |
| (void)_pFunc; |
| t_print( "Initializing..." ); |
| |
| //~ make sure the c:\temp exist, if not, create it. |
| #if ( defined WNT ) |
| if ( checkDirectory( aTempDirectoryURL, osl_Check_Mode_Exist ) != sal_True ) { |
| t_print( "\n#C:\\temp is not exist, now creating\n" ); |
| createTestDirectory( aTempDirectoryURL ); |
| }; |
| #endif |
| |
| //~ make sure the c:\temp\PID or /tmp/PID exist, if not, create it. initialize the user directory. |
| ( aUserDirectoryURL += aSlashURL ) += getCurrentPID( ); |
| ( aUserDirectorySys += aSlashURL ) += getCurrentPID( ); |
| |
| if ( checkDirectory( aUserDirectoryURL, osl_Check_Mode_Exist ) != sal_True ) { |
| createTestDirectory( aUserDirectoryURL ); |
| } |
| |
| //~ adapt all URL to the TEMP/USERPID/URL format; |
| insertPID( aCanURL1 ); |
| insertPID( aTmpName3 ); |
| insertPID( aTmpName4 ); |
| insertPID( aTmpName5 ); |
| insertPID( aTmpName6 ); |
| insertPID( aTmpName8 ); |
| insertPID( aTmpName9 ); |
| insertPID( aLnkURL1 ); |
| insertPID( aFifoSys ); |
| insertPID( aSysPath1 ); |
| insertPID( aSysPath2 ); |
| insertPID( aSysPath3 ); |
| insertPID( aSysPath4 ); |
| |
| t_print( "Done.\n" ); |
| |
| } |
| |
| |
| //~ do some clean up work after all test completed. |
| class GlobalObject |
| { |
| public: |
| ~GlobalObject() |
| { |
| try |
| { |
| //~ make sure the c:\temp\PID or /tmp/PID exist, if yes, delete it. |
| t_print( "\n#Do some clean-ups ...\n" ); |
| if ( checkDirectory( aUserDirectoryURL, osl_Check_Mode_Exist ) == sal_True ) { |
| deleteTestDirectory( aUserDirectoryURL ); |
| } |
| |
| // LLA: t_print("after deleteTestDirectory\n"); |
| //~ special clean up task in Windows and Unix seperately; |
| #if ( defined UNX ) || ( defined OS2 ) |
| //~ some clean up task for UNIX OS |
| ; |
| #else |
| //~ some clean up task for Windows OS |
| //~ check if some files are in the way, remove them if necessary. |
| if ( ifFileExist( aTmpName6 ) == sal_True ) |
| deleteTestFile( aTmpName6 ); |
| if ( ifFileExist( aTmpName4 ) == sal_True ) |
| deleteTestFile( aTmpName4 ); |
| if ( checkDirectory( aTmpName4, osl_Check_Mode_Exist ) == sal_True ) |
| deleteTestDirectory( aTmpName4 ); |
| if ( ifFileExist( aTmpName3 ) == sal_True ) |
| deleteTestFile( aTmpName3 ); |
| if ( checkDirectory( aTmpName3, osl_Check_Mode_Exist ) == sal_True ) |
| deleteTestDirectory( aTmpName3 ); |
| |
| ::rtl::OUString aUStr( aUserDirectoryURL ); |
| concatURL( aUStr, aHidURL1 ); |
| if ( ifFileExist( aUStr ) == sal_True ) |
| deleteTestFile( aUStr ); |
| |
| ::rtl::OUString aUStr1( aRootURL ); |
| concatURL( aUStr1, aTmpName2 ); |
| if ( ifFileExist( aUStr1 ) == sal_True ) |
| deleteTestFile( aUStr1 ); |
| #endif |
| |
| } |
| catch (CppUnit::Exception &e) |
| { |
| t_print("Exception caught in GlobalObject dtor(). Exception message: '%s'. Source line: %d\n", e.what(), e.sourceLine().lineNumber()); |
| } |
| catch (...) |
| { |
| t_print("Exception caught (...) in GlobalObject dtor()\n"); |
| } |
| } |
| }; |
| |
| GlobalObject theGlobalObject; |