blob: 002f2f68e779886b1cf7d2741ff7dded2ee73689 [file] [log] [blame]
/**************************************************************
*
* 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"
// LLA:
// this file is converted to use with testshl2
// original was placed in sal/test/textenc.cxx
#include <stdio.h>
#include <osl/file.h>
#include <osl/process.h>
#include <rtl/ustring.hxx>
#ifdef SAL_UNX
#include <unistd.h>
#include <limits.h>
#include <string.h>
#include <sys/stat.h>
#define TEST_VOLUME ""
#else
// WINDOWS
#define TEST_VOLUME "c:/"
#endif
#include <testshl/simpleheader.hxx>
namespace osl_test_file
{
// -----------------------------------------------------------------------------
class oldtestfile : public CppUnit::TestFixture
{
public:
void test_file_001();
void test_file_002();
void test_file_003();
void test_file_004();
CPPUNIT_TEST_SUITE( oldtestfile );
CPPUNIT_TEST( test_file_001 );
CPPUNIT_TEST( test_file_002 );
CPPUNIT_TEST( test_file_003 );
CPPUNIT_TEST( test_file_004 );
CPPUNIT_TEST_SUITE_END( );
};
char *aSource1[] =
{
"a" , "file:///" TEST_VOLUME "bla/a",
"a/" , "file:///" TEST_VOLUME "bla/a",
"../a" , "file:///" TEST_VOLUME "a" ,
"a/.." , "file:///" TEST_VOLUME "bla",
"a/../b" , "file:///" TEST_VOLUME "bla/b",
".." , "file:///" TEST_VOLUME "",
"a/b/c/d/" , "file:///" TEST_VOLUME "bla/a/b/c/d",
"a/./c" , "file:///" TEST_VOLUME "bla/a/c",
"file:///bla/blub", "file:///" TEST_VOLUME "bla/blub",
0 , 0
};
char *aSource2[ ] =
{
"a" , "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
"a/", "file:///" TEST_VOLUME "bla/blubs/schnubbel/a",
"../a", "file:///" TEST_VOLUME "bla/blubs/a",
"../../a", "file:///" TEST_VOLUME "bla/a",
"../../../a", "file:///" TEST_VOLUME "a",
"../../../a/b/c/d", "file:///" TEST_VOLUME "a/b/c/d",
0,0
};
char *aSource3[ ] =
{
".." , "/a",
"../a" , "/a/a",
"e/f" , "/c/e/f",
"../..", "",
0,0
};
using namespace rtl;
void oldtestfile::test_file_001()
{
#ifdef WIN32
return;
#endif
OUString base1( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla" ) );
int i;
for( i = 0 ; aSource1[i] ; i +=2 )
{
OUString target;
OUString rel = OUString::createFromAscii( aSource1[i] );
oslFileError e = osl_getAbsoluteFileURL( base1.pData, rel.pData , &target.pData );
CPPUNIT_ASSERT_MESSAGE("failure #1", osl_File_E_None == e );
if( osl_File_E_None == e )
{
CPPUNIT_ASSERT_MESSAGE("failure #1.1", target.equalsAscii( aSource1[i+1] ) );
}
OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
OString obase = OUStringToOString( base1 , RTL_TEXTENCODING_ASCII_US );
fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
}
OUString err1( RTL_CONSTASCII_USTRINGPARAM( "../.." ) );
OUString target;
CPPUNIT_ASSERT_MESSAGE("failure #11", osl_File_E_None != osl_getAbsoluteFileURL( base1.pData , err1.pData , &target.pData ) );
}
void oldtestfile::test_file_002()
{
#ifdef WIN32
return;
#endif
OUString base2( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/blubs/schnubbel" ) );
int i;
for( i = 0 ; aSource2[i] ; i +=2 )
{
OUString target;
OUString rel = OUString::createFromAscii( aSource2[i] );
oslFileError e = osl_getAbsoluteFileURL( base2.pData, rel.pData , &target.pData );
CPPUNIT_ASSERT_MESSAGE("failure #2", osl_File_E_None == e );
if( osl_File_E_None == e )
{
CPPUNIT_ASSERT_MESSAGE("failure #2.1", target.equalsAscii( aSource2[i+1] ) );
}
OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
OString obase = OUStringToOString( base2 , RTL_TEXTENCODING_ASCII_US );
// fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource2[i], o.pData->buffer );
}
}
void oldtestfile::test_file_003()
{
#ifdef WIN32
return;
#endif
// links !
#ifdef UNX
int i;
char buf[PATH_MAX];
if( getcwd( buf, PATH_MAX ) )
{
char buf2[PATH_MAX];
strcpy( buf2 , buf );
strcat( buf2, "/a" );
if( 0 == mkdir( buf2 , S_IRWXG | S_IRWXO | S_IRWXU ) )
{
strcat( buf2, "/b" );
if( 0 == mkdir( buf2, S_IRWXU | S_IRWXO | S_IRWXU ) )
{
if( 0 == symlink( buf2 , "c" ) )
{
OUString dir;
osl_getProcessWorkingDir( &(dir.pData) );
OUString base3 = dir;
base3 += OUString( RTL_CONSTASCII_USTRINGPARAM( "/c" ) );
for( i = 0 ; aSource3[i] ; i +=2 )
{
OUString target;
OUString rel = OUString::createFromAscii( aSource3[i] );
oslFileError e = osl_getAbsoluteFileURL( base3.pData, rel.pData , &target.pData );
CPPUNIT_ASSERT_MESSAGE("failure #3", osl_File_E_None == e );
if( osl_File_E_None == e )
{
CPPUNIT_ASSERT_MESSAGE("failure #4", target.getLength() >= dir.getLength() );
if( target.getLength() >= dir.getLength() )
{
int j;
for( j = dir.getLength() ;
j < target.getLength() &&
aSource3[i+1][j-dir.getLength()] == target[j] ; j++ );
CPPUNIT_ASSERT_MESSAGE("failure #5", j == target.getLength() );
}
}
OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
OString obase = OUStringToOString( base3 , RTL_TEXTENCODING_ASCII_US );
fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource3[i], o.pData->buffer );
}
unlink( "c" );
}
else
{
CPPUNIT_ASSERT_MESSAGE("failure #6", 0 );
}
rmdir( "a/b" );
}
else
{
CPPUNIT_ASSERT_MESSAGE("failure #7", 0 );
}
rmdir( "a" );
}
else
{
CPPUNIT_ASSERT_MESSAGE("failure #8", 0 );
}
}
else
{
CPPUNIT_ASSERT_MESSAGE("failure #9", 0 );
}
#endif
}
void oldtestfile::test_file_004()
{
#ifdef WIN32
return;
#endif
OUString base4( RTL_CONSTASCII_USTRINGPARAM( "file:///" TEST_VOLUME "bla/" ) );
int i;
for( i = 0 ; aSource1[i] ; i +=2 )
{
OUString target;
OUString rel = OUString::createFromAscii( aSource1[i] );
oslFileError e = osl_getAbsoluteFileURL( base4.pData, rel.pData , &target.pData );
CPPUNIT_ASSERT_MESSAGE("failure #10", osl_File_E_None == e );
if( osl_File_E_None == e )
{
CPPUNIT_ASSERT_MESSAGE("failure #10.1", target.equalsAscii( aSource1[i+1] ) );
}
OString o = OUStringToOString( target , RTL_TEXTENCODING_ASCII_US );
OString obase = OUStringToOString( base4 , RTL_TEXTENCODING_ASCII_US );
fprintf( stderr, "%d %s + %s = %s\n" ,e, obase.getStr(), aSource1[i], o.pData->buffer );
}
// fprintf( stderr, "test_file done\n" );
}
} // namespace osl_test_file
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( osl_test_file::oldtestfile, "osl_File" );
// -----------------------------------------------------------------------------
NOADDITIONAL;