More unit test cleanup, + fix a warning in msystem le_set()
This commit is contained in:
parent
ffd6dd8720
commit
4af1375fb1
|
@ -403,7 +403,6 @@ char *env;
|
||||||
* just include it from the current environment
|
* just include it from the current environment
|
||||||
* (if not defined there, don't define it here)
|
* (if not defined there, don't define it here)
|
||||||
*/
|
*/
|
||||||
size_t p_size=0;
|
|
||||||
if (strchr(env, '=') == NULL) {
|
if (strchr(env, '=') == NULL) {
|
||||||
|
|
||||||
q = getenv(env);
|
q = getenv(env);
|
||||||
|
|
|
@ -43,7 +43,7 @@ void TestBlockFile()
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
static const TCHAR fileName[] = _T("c:/tmp/test.bf");
|
static const TCHAR fileName[] = _T("test.bf");
|
||||||
// truncate the file I am going to use...
|
// truncate the file I am going to use...
|
||||||
//
|
//
|
||||||
cFileArchive a;
|
cFileArchive a;
|
||||||
|
@ -113,6 +113,7 @@ void TestBlockFile()
|
||||||
}
|
}
|
||||||
catch( eError& e )
|
catch( eError& e )
|
||||||
{
|
{
|
||||||
|
TCERR << "Exception: " << e.GetMsg() << std::endl;
|
||||||
d.TraceError( _T("Exception caught: %d %s\n"), e.GetID(), e.GetMsg().c_str() );
|
d.TraceError( _T("Exception caught: %d %s\n"), e.GetID(), e.GetMsg().c_str() );
|
||||||
TEST( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ void TestBlockRecordArray()
|
||||||
cDebug d( "TestBlockRecordArray" );
|
cDebug d( "TestBlockRecordArray" );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
static const TCHAR fileName[] = _T("c:/tmp/test.bf");
|
static const TCHAR fileName[] = _T("test.bf");
|
||||||
|
|
||||||
cBlockFile bf;
|
cBlockFile bf;
|
||||||
bf.Open( fileName, 2, true ); // opened up with two pages
|
bf.Open( fileName, 2, true ); // opened up with two pages
|
||||||
|
|
|
@ -88,6 +88,7 @@ const TCHAR* argv5[] =
|
||||||
_T("frog")
|
_T("frog")
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
static void PrintCmdLine(int argc, const TCHAR** argv, cDebug d)
|
static void PrintCmdLine(int argc, const TCHAR** argv, cDebug d)
|
||||||
{
|
{
|
||||||
TSTRING str;
|
TSTRING str;
|
||||||
|
@ -99,6 +100,7 @@ static void PrintCmdLine(int argc, const TCHAR** argv, cDebug d)
|
||||||
}
|
}
|
||||||
d.TraceDebug(_T(">>>%s\n"), str.c_str());
|
d.TraceDebug(_T(">>>%s\n"), str.c_str());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void test_parse(cCmdLineParser& parser, const int argc, const TCHAR** argv, bool should_throw)
|
static void test_parse(cCmdLineParser& parser, const int argc, const TCHAR** argv, bool should_throw)
|
||||||
{
|
{
|
||||||
|
|
|
@ -142,7 +142,7 @@ size_t DistanceToOne( size_t n )
|
||||||
n = ( n >> 1 );
|
n = ( n >> 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT( n == 1 ); // n was not a power of 2!
|
TEST( n == 1 ); // n was not a power of 2!
|
||||||
|
|
||||||
return dist;
|
return dist;
|
||||||
}
|
}
|
||||||
|
@ -159,14 +159,14 @@ void ConvertAndCompareString( const std::string& s )
|
||||||
wc16_string ws;
|
wc16_string ws;
|
||||||
ws.resize( s.length() );
|
ws.resize( s.length() );
|
||||||
nWrote = iCodeConverter::GetInstance()->Convert( (ntdbs_t)ws.c_str(), ws.length(), s.c_str(), ws.length() );
|
nWrote = iCodeConverter::GetInstance()->Convert( (ntdbs_t)ws.c_str(), ws.length(), s.c_str(), ws.length() );
|
||||||
ASSERT( nWrote != -1 );
|
TEST( nWrote != -1 );
|
||||||
ws.resize( nWrote );
|
ws.resize( nWrote );
|
||||||
|
|
||||||
// convert back to mbchar_t string
|
// convert back to mbchar_t string
|
||||||
std::string s2;
|
std::string s2;
|
||||||
s2.resize( ws.length() * MB_CUR_MAX );
|
s2.resize( ws.length() * MB_CUR_MAX );
|
||||||
nWrote = iCodeConverter::GetInstance()->Convert( (ntmbs_t)s2.c_str(), s2.length(), ws.c_str(), ws.length() );
|
nWrote = iCodeConverter::GetInstance()->Convert( (ntmbs_t)s2.c_str(), s2.length(), ws.c_str(), ws.length() );
|
||||||
ASSERT( nWrote != -1 );
|
TEST( nWrote != -1 );
|
||||||
s2.resize( nWrote );
|
s2.resize( nWrote );
|
||||||
|
|
||||||
std::cout << "* Result : ";
|
std::cout << "* Result : ";
|
||||||
|
@ -195,10 +195,10 @@ void TestMbToDb()
|
||||||
for( size_t j = 0; j < 0x10; j++ )
|
for( size_t j = 0; j < 0x10; j++ )
|
||||||
{
|
{
|
||||||
size_t first_byte = ( i & 0xFF00 ) >> 8;
|
size_t first_byte = ( i & 0xFF00 ) >> 8;
|
||||||
ASSERT( first_byte <= 0xFF );
|
TEST( first_byte <= 0xFF );
|
||||||
|
|
||||||
size_t second_byte = ( ( i & 0x00F0 ) >> 4 ) | j;
|
size_t second_byte = ( ( i & 0x00F0 ) >> 4 ) | j;
|
||||||
ASSERT( second_byte <= 0xFF );
|
TEST( second_byte <= 0xFF );
|
||||||
|
|
||||||
s[ 2 * j ] = NonZeroChar( (char)first_byte );
|
s[ 2 * j ] = NonZeroChar( (char)first_byte );
|
||||||
s[ ( 2 * j ) + 1 ] = NonZeroChar( (char)second_byte );
|
s[ ( 2 * j ) + 1 ] = NonZeroChar( (char)second_byte );
|
||||||
|
@ -221,10 +221,10 @@ void TestMbToDb()
|
||||||
for( size_t j = 0; j < CHARS_AT_A_TIME; j++ )
|
for( size_t j = 0; j < CHARS_AT_A_TIME; j++ )
|
||||||
{
|
{
|
||||||
size_t first_byte = ( ( i & FIRST_BYTE_MASK ) >> DistanceToOne( CHARS_AT_A_TIME ) );
|
size_t first_byte = ( ( i & FIRST_BYTE_MASK ) >> DistanceToOne( CHARS_AT_A_TIME ) );
|
||||||
ASSERT( first_byte <= 0xFF );
|
TEST( first_byte <= 0xFF );
|
||||||
|
|
||||||
size_t second_byte = ( ( i & ( SECOND_BYTE_MASK << DistanceToOne( CHARS_AT_A_TIME ) ) | j );
|
size_t second_byte = ( ( i & ( SECOND_BYTE_MASK << DistanceToOne( CHARS_AT_A_TIME ) ) | j );
|
||||||
ASSERT( second_byte <= 0xFF );
|
TEST( second_byte <= 0xFF );
|
||||||
|
|
||||||
s[ 2 * j ] = NonZeroChar( (char)first_byte );
|
s[ 2 * j ] = NonZeroChar( (char)first_byte );
|
||||||
s[ ( 2 * j ) + 1 ] = NonZeroChar( (char)second_byte );
|
s[ ( 2 * j ) + 1 ] = NonZeroChar( (char)second_byte );
|
||||||
|
|
|
@ -128,11 +128,11 @@ void TestCrypto()
|
||||||
cRSAPublicKey* pPublic2;
|
cRSAPublicKey* pPublic2;
|
||||||
cRSAPrivateKey* pPrivate2;
|
cRSAPrivateKey* pPrivate2;
|
||||||
|
|
||||||
ASSERT(pPublic->GetWriteLen() < BUFSIZE);
|
TEST(pPublic->GetWriteLen() < BUFSIZE);
|
||||||
pPublic->Write(buf);
|
pPublic->Write(buf);
|
||||||
pPublic2 = new cRSAPublicKey(buf);
|
pPublic2 = new cRSAPublicKey(buf);
|
||||||
|
|
||||||
ASSERT(pPrivate->GetWriteLen() < BUFSIZE);
|
TEST(pPrivate->GetWriteLen() < BUFSIZE);
|
||||||
pPrivate->Write(buf);
|
pPrivate->Write(buf);
|
||||||
pPrivate2 = new cRSAPrivateKey(buf);
|
pPrivate2 = new cRSAPrivateKey(buf);
|
||||||
|
|
||||||
|
@ -298,11 +298,11 @@ void TestCrypto()
|
||||||
cElGamalSigPublicKey* pPublic2;
|
cElGamalSigPublicKey* pPublic2;
|
||||||
cElGamalSigPrivateKey* pPrivate2;
|
cElGamalSigPrivateKey* pPrivate2;
|
||||||
|
|
||||||
ASSERT(pPublic->GetWriteLen() < BUFSIZE);
|
TEST(pPublic->GetWriteLen() < BUFSIZE);
|
||||||
pPublic->Write(buf);
|
pPublic->Write(buf);
|
||||||
pPublic2 = new cElGamalSigPublicKey(buf);
|
pPublic2 = new cElGamalSigPublicKey(buf);
|
||||||
|
|
||||||
ASSERT(pPrivate->GetWriteLen() < BUFSIZE);
|
TEST(pPrivate->GetWriteLen() < BUFSIZE);
|
||||||
pPrivate->Write(buf);
|
pPrivate->Write(buf);
|
||||||
pPrivate2 = new cElGamalSigPrivateKey(buf);
|
pPrivate2 = new cElGamalSigPrivateKey(buf);
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ static void util_TestUnprintable( const TSTRING& strCUnprintable )
|
||||||
TSTRING strOut = strEncoded;
|
TSTRING strOut = strEncoded;
|
||||||
e.Decode( strOut );
|
e.Decode( strOut );
|
||||||
|
|
||||||
ASSERT( strOut == strCUnprintable );
|
TEST( strOut == strCUnprintable );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -186,8 +186,8 @@ void TestUnconvertable()
|
||||||
ch = 0x ## n; \
|
ch = 0x ## n; \
|
||||||
str = ch; \
|
str = ch; \
|
||||||
e.Encode( str ); \
|
e.Encode( str ); \
|
||||||
// ct.tolower( str.begin(), str.end() ); \
|
ct.tolower( str.begin(), str.end() ); \
|
||||||
ASSERT( str == _T("\\x") _T( #n ) _T("x") );
|
TEST( str == _T("\\x") _T( #n ) _T("x") );
|
||||||
|
|
||||||
TSS_UNCONVERTABLE_TEST( fefe );
|
TSS_UNCONVERTABLE_TEST( fefe );
|
||||||
TSS_UNCONVERTABLE_TEST( 1234 );
|
TSS_UNCONVERTABLE_TEST( 1234 );
|
||||||
|
@ -215,8 +215,8 @@ void TestUnprintable()
|
||||||
ch = 0x ## n; \
|
ch = 0x ## n; \
|
||||||
str = ch; \
|
str = ch; \
|
||||||
e.Encode( str ); \
|
e.Encode( str ); \
|
||||||
// ct.tolower( str.begin(), str.end() ); \
|
ct.tolower( str.begin(), str.end() ); \
|
||||||
ASSERT( str == _T("\\x") _T( #n ) _T("x") );
|
TEST( str == _T("\\x") _T( #n ) _T("x") );
|
||||||
|
|
||||||
TSS_UNPRINTABLE_TEST( 000a );
|
TSS_UNPRINTABLE_TEST( 000a );
|
||||||
TSS_UNPRINTABLE_TEST( 000d );
|
TSS_UNPRINTABLE_TEST( 000d );
|
||||||
|
@ -233,11 +233,11 @@ void TestQuoteAndBackSlash()
|
||||||
|
|
||||||
str = _T("\\");
|
str = _T("\\");
|
||||||
e.Encode( str );
|
e.Encode( str );
|
||||||
ASSERT( str == _T("\\\\") );
|
TEST( str == _T("\\\\") );
|
||||||
|
|
||||||
str = _T("\"");
|
str = _T("\"");
|
||||||
e.Encode( str );
|
e.Encode( str );
|
||||||
ASSERT( str == _T("\\\"") );
|
TEST( str == _T("\\\"") );
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:BAM -- try multibyte now.....
|
// TODO:BAM -- try multibyte now.....
|
||||||
|
@ -325,7 +325,7 @@ void TestDisplayEncoderBasic()
|
||||||
catch( eError& e )
|
catch( eError& e )
|
||||||
{
|
{
|
||||||
cErrorReporter::PrintErrorMsg( e );
|
cErrorReporter::PrintErrorMsg( e );
|
||||||
ASSERT(false);
|
TEST(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ void TestFCOCompare()
|
||||||
cFSDataSourceIter ds2;
|
cFSDataSourceIter ds2;
|
||||||
ds2.SeekToFCO(cFCOName(FILE_NAME), false);
|
ds2.SeekToFCO(cFCOName(FILE_NAME), false);
|
||||||
iFCO* pFCO2 = ds2.CreateFCO();
|
iFCO* pFCO2 = ds2.CreateFCO();
|
||||||
ASSERT(pFCO2);
|
TEST(pFCO2);
|
||||||
pFCO2->AcceptVisitor(&propCalc);
|
pFCO2->AcceptVisitor(&propCalc);
|
||||||
d.TraceDebug("Second FCO's properties:\n");
|
d.TraceDebug("Second FCO's properties:\n");
|
||||||
PrintProps(pFCO2);
|
PrintProps(pFCO2);
|
||||||
|
|
|
@ -35,5 +35,5 @@
|
||||||
|
|
||||||
void TestFCODatabaseFile()
|
void TestFCODatabaseFile()
|
||||||
{
|
{
|
||||||
|
//TODO - actually test something here
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,8 @@ static bool init (cFCOPropVector &testV)
|
||||||
return true;
|
return true;
|
||||||
} //end init
|
} //end init
|
||||||
|
|
||||||
|
|
||||||
|
#if 0 // TODO: rework this so it doesn't need user interaction
|
||||||
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d)
|
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d)
|
||||||
{
|
{
|
||||||
int var1 = 0 , var2 = 64, var3 = 2;
|
int var1 = 0 , var2 = 64, var3 = 2;
|
||||||
|
@ -191,6 +193,7 @@ static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d)
|
||||||
out &= local; //and-ing of results.
|
out &= local; //and-ing of results.
|
||||||
return out;
|
return out;
|
||||||
}//end addRemove
|
}//end addRemove
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool objManip (cFCOPropVector &testV, cDebug& d)
|
static bool objManip (cFCOPropVector &testV, cDebug& d)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include "core/errorbucketimpl.h"
|
#include "core/errorbucketimpl.h"
|
||||||
#include "fco/fcospecattr.h"
|
#include "fco/fcospecattr.h"
|
||||||
#include "fco/fcospechelper.h"
|
#include "fco/fcospechelper.h"
|
||||||
|
#include "fs/fs.h"
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
// we use this instead of TraceContents() so we can test the report iterators.
|
// we use this instead of TraceContents() so we can test the report iterators.
|
||||||
|
@ -62,7 +63,7 @@ static void TraceReport(const cFCOReport& r, cDebug& d)
|
||||||
for(specIter.SeekBegin(); ! specIter.Done(); specIter.Next(), ++specCount)
|
for(specIter.SeekBegin(); ! specIter.Done(); specIter.Next(), ++specCount)
|
||||||
{
|
{
|
||||||
d.TraceDebug(">>> Spec [%d]:\n", specCount);
|
d.TraceDebug(">>> Spec [%d]:\n", specCount);
|
||||||
ASSERT(specIter.GetSpec());
|
TEST(specIter.GetSpec());
|
||||||
specIter.GetSpec()->TraceContents();
|
specIter.GetSpec()->TraceContents();
|
||||||
specIter.GetAttr()->TraceContents();
|
specIter.GetAttr()->TraceContents();
|
||||||
specIter.GetErrorQueue()->TraceContents();
|
specIter.GetErrorQueue()->TraceContents();
|
||||||
|
@ -88,86 +89,97 @@ static void TraceReport(const cFCOReport& r, cDebug& d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: This doesn't actually TEST() anything right now, & will only fail if something throws
|
|
||||||
void TestFCOReport()
|
void TestFCOReport()
|
||||||
{
|
{
|
||||||
cDebug d("TestFCOReport");
|
cDebug d("TestFCOReport");
|
||||||
|
|
||||||
|
try
|
||||||
cFCOSpecImpl* pSpec = new cFCOSpecImpl(_T("/etc"), NULL, new cFCOSpecStopPointSet);
|
|
||||||
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
|
||||||
cFSObject* addedFCO = new cFSObject(cFCOName(_T("/etc/added_file")));
|
|
||||||
cFSObject* removedFCO = new cFSObject(cFCOName(_T("/etc/removed_file")));
|
|
||||||
cFSObject* changedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
|
||||||
cFSObject* oldChangedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
|
||||||
cFSObject* newChangedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
|
||||||
cFCOPropVector changedPropVector;
|
|
||||||
|
|
||||||
//Calculate the time taken to generate the test report:
|
|
||||||
time_t* dummy_arg = NULL;
|
|
||||||
time_t time_finish;
|
|
||||||
//time_t time_begin = time(dummy_arg);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
cFCOReport report;
|
cFCOSpecImpl* pSpec = new cFCOSpecImpl(_T("/etc"), NULL, new cFCOSpecStopPointSet);
|
||||||
|
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
||||||
|
cFSObject* addedFCO = new cFSObject(cFCOName(_T("/etc/added_file")));
|
||||||
|
cFSObject* removedFCO = new cFSObject(cFCOName(_T("/etc/removed_file")));
|
||||||
|
cFSObject* changedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
||||||
|
cFSObject* oldChangedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
||||||
|
cFSObject* newChangedFCO = new cFSObject(cFCOName(_T("/etc/changed_file")));
|
||||||
|
cFCOPropVector changedPropVector;
|
||||||
|
|
||||||
changedPropVector.AddItem(cFSPropSet::PROP_SIZE);
|
//Calculate the time taken to generate the test report:
|
||||||
pSpec->SetStartPoint(cFCOName(_T("/etc")));
|
time_t* dummy_arg = NULL;
|
||||||
pAttr->SetName(_T("/etc"));
|
time_t time_finish;
|
||||||
pAttr->SetSeverity(53);
|
//time_t time_begin = time(dummy_arg);
|
||||||
|
|
||||||
report.AddSpec(0x00020001, pSpec, pAttr); // TODO:bam - change these
|
|
||||||
cFCOReportSpecIter it(report, 0x00020001); // to use cFS::Genre
|
|
||||||
it.GetAddedSet()->Insert(addedFCO);
|
|
||||||
it.GetRemovedSet()->Insert(removedFCO);
|
|
||||||
report.AddChangedFCO(it, oldChangedFCO, newChangedFCO, changedPropVector);
|
|
||||||
|
|
||||||
//Store the time taken to generate the test report:
|
|
||||||
time_finish = time(dummy_arg);
|
|
||||||
//report.SetCreationTime( (int64)difftime(time_finish, time_begin));
|
|
||||||
//d.TraceDebug("Report calculation time = %I64i seconds.\n", report.GetCreationTime());
|
|
||||||
|
|
||||||
d.TraceDebug("Before serializing report:\n");
|
|
||||||
TraceReport(report, d);
|
|
||||||
{
|
{
|
||||||
cFileArchive outFile;
|
cFCOReport report;
|
||||||
outFile.OpenReadWrite(_T("tmp.twr"));
|
|
||||||
cSerializerImpl outSer(outFile, cSerializerImpl::S_WRITE);
|
|
||||||
|
|
||||||
outSer.Init();
|
changedPropVector.AddItem(cFSPropSet::PROP_SIZE);
|
||||||
outSer.WriteObject(&report);
|
pSpec->SetStartPoint(cFCOName(_T("/etc")));
|
||||||
outSer.Finit();
|
pAttr->SetName(_T("/etc"));
|
||||||
|
pAttr->SetSeverity(53);
|
||||||
|
|
||||||
outFile.Close();
|
report.AddSpec(cFS::GenreID(), pSpec, pAttr);
|
||||||
|
cFCOReportSpecIter it(report, cFS::GenreID());
|
||||||
|
it.GetAddedSet()->Insert(addedFCO);
|
||||||
|
it.GetRemovedSet()->Insert(removedFCO);
|
||||||
|
report.AddChangedFCO(it, oldChangedFCO, newChangedFCO, changedPropVector);
|
||||||
|
|
||||||
cFileArchive inFile;
|
//Store the time taken to generate the test report:
|
||||||
inFile.OpenRead(_T("tmp.twr"));
|
time_finish = time(dummy_arg);
|
||||||
cSerializerImpl inSer(inFile, cSerializerImpl::S_READ);
|
//report.SetCreationTime( (int64)difftime(time_finish, time_begin));
|
||||||
|
//d.TraceDebug("Report calculation time = %I64i seconds.\n", report.GetCreationTime());
|
||||||
|
|
||||||
cFCOReport inReport;
|
d.TraceDebug("Before serializing report:\n");
|
||||||
|
TraceReport(report, d);
|
||||||
|
{
|
||||||
|
cFileArchive outFile;
|
||||||
|
outFile.OpenReadWrite(_T("tmp.twr"));
|
||||||
|
cSerializerImpl outSer(outFile, cSerializerImpl::S_WRITE);
|
||||||
|
|
||||||
inSer.Init();
|
outSer.Init();
|
||||||
inSer.ReadObject(&inReport);
|
outSer.WriteObject(&report);
|
||||||
inSer.Finit();
|
outSer.Finit();
|
||||||
|
|
||||||
d.TraceDebug("Read in serialized report:\n");
|
outFile.Close();
|
||||||
TraceReport(inReport, d);
|
|
||||||
|
cFileArchive inFile;
|
||||||
|
inFile.OpenRead(_T("tmp.twr"));
|
||||||
|
cSerializerImpl inSer(inFile, cSerializerImpl::S_READ);
|
||||||
|
|
||||||
|
cFCOReport inReport;
|
||||||
|
|
||||||
|
inSer.Init();
|
||||||
|
inSer.ReadObject(&inReport);
|
||||||
|
inSer.Finit();
|
||||||
|
|
||||||
|
d.TraceDebug("Read in serialized report:\n");
|
||||||
|
TraceReport(inReport, d);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO -- test cFCOReportSpecIter::Remove()
|
||||||
|
// TODO -- test cFCOReportChangeIter::Remove()
|
||||||
|
d.TraceDebug("*** We still need to test Remove() for the two iterator classes!\n");
|
||||||
|
|
||||||
|
pSpec->Release();
|
||||||
|
pAttr->Release();
|
||||||
|
addedFCO->Release();
|
||||||
|
removedFCO->Release();
|
||||||
|
changedFCO->Release();
|
||||||
|
oldChangedFCO->Release();
|
||||||
|
newChangedFCO->Release();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
catch(const eError& e)
|
||||||
// TODO -- test cFCOReportSpecIter::Remove()
|
{
|
||||||
// TODO -- test cFCOReportChangeIter::Remove()
|
TCERR << std::endl << e.GetMsg() << std::endl;
|
||||||
d.TraceDebug("*** We still need to test Remove() for the two iterator classes!\n");
|
TEST(false);
|
||||||
|
}
|
||||||
pSpec->Release();
|
catch(...)
|
||||||
pAttr->Release();
|
{
|
||||||
addedFCO->Release();
|
TEST(false);
|
||||||
removedFCO->Release();
|
}
|
||||||
changedFCO->Release();
|
|
||||||
oldChangedFCO->Release();
|
|
||||||
newChangedFCO->Release();
|
|
||||||
|
|
||||||
d.TraceDebug("Leaving...\n");
|
d.TraceDebug("Leaving...\n");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "twtest/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
|
||||||
static void TraceSpecAttr(const cFCOSpecAttr* pAttr, cDebug d)
|
static void TraceSpecAttr(const cFCOSpecAttr* pAttr, cDebug d)
|
||||||
{
|
{
|
||||||
|
@ -50,39 +51,52 @@ static void TraceSpecAttr(const cFCOSpecAttr* pAttr, cDebug d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: This doesn't actually TEST() anything right now, & will only fail if something throws
|
|
||||||
void TestFCOSpecAttr()
|
void TestFCOSpecAttr()
|
||||||
{
|
{
|
||||||
cDebug d("TestFCOSpecAttr");
|
cDebug d("TestFCOSpecAttr");
|
||||||
d.TraceDebug("Entering\n");
|
|
||||||
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
try
|
||||||
|
{
|
||||||
|
d.TraceDebug("Entering\n");
|
||||||
|
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
||||||
|
|
||||||
pAttr->SetName (_T("My Name")); d.TraceDebug("Setting Name = My Name\n");
|
pAttr->SetName (_T("My Name")); d.TraceDebug("Setting Name = My Name\n");
|
||||||
pAttr->SetSeverity (53); d.TraceDebug("Setting Severity = 53\n");
|
pAttr->SetSeverity (53); d.TraceDebug("Setting Severity = 53\n");
|
||||||
pAttr->AddEmail (_T("dog@bark.com")); d.TraceDebug("Adding email = dog@bark.com\n");
|
pAttr->AddEmail (_T("dog@bark.com")); d.TraceDebug("Adding email = dog@bark.com\n");
|
||||||
pAttr->AddEmail (_T("cow@moo.com")); d.TraceDebug("Adding email = cow@moo.com\n");
|
pAttr->AddEmail (_T("cow@moo.com")); d.TraceDebug("Adding email = cow@moo.com\n");
|
||||||
pAttr->AddEmail (_T("cat@meow.com")); d.TraceDebug("Adding email = cat@meow.com\n");
|
pAttr->AddEmail (_T("cat@meow.com")); d.TraceDebug("Adding email = cat@meow.com\n");
|
||||||
|
|
||||||
// trace contents...
|
// trace contents...
|
||||||
TraceSpecAttr(pAttr, d);
|
TraceSpecAttr(pAttr, d);
|
||||||
|
|
||||||
// test serialization...
|
// test serialization...
|
||||||
d.TraceDebug("Testing Serialization; next output should be the same as the previous\n");
|
d.TraceDebug("Testing Serialization; next output should be the same as the previous\n");
|
||||||
cMemoryArchive a;
|
cMemoryArchive a;
|
||||||
cSerializerImpl s(a, cSerializerImpl::S_WRITE);
|
cSerializerImpl s(a, cSerializerImpl::S_WRITE);
|
||||||
s.Init();
|
s.Init();
|
||||||
pAttr->Write(&s);
|
pAttr->Write(&s);
|
||||||
s.Finit();
|
s.Finit();
|
||||||
a.Seek(0, cBidirArchive::BEGINNING);
|
a.Seek(0, cBidirArchive::BEGINNING);
|
||||||
cFCOSpecAttr* pNew = new cFCOSpecAttr;
|
cFCOSpecAttr* pNew = new cFCOSpecAttr;
|
||||||
cSerializerImpl s2(a, cSerializerImpl::S_READ);
|
cSerializerImpl s2(a, cSerializerImpl::S_READ);
|
||||||
s2.Init();
|
s2.Init();
|
||||||
pNew->Read(&s2);
|
pNew->Read(&s2);
|
||||||
s2.Finit();
|
s2.Finit();
|
||||||
|
|
||||||
// trace contents...
|
// trace contents...
|
||||||
TraceSpecAttr(pNew, d);
|
TraceSpecAttr(pNew, d);
|
||||||
|
|
||||||
pNew->Release();
|
pNew->Release();
|
||||||
pAttr->Release();
|
pAttr->Release();
|
||||||
|
}
|
||||||
|
catch(const eError& e)
|
||||||
|
{
|
||||||
|
TCERR << std::endl << e.GetMsg() << std::endl;
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,44 +37,57 @@
|
||||||
#include "twtest/test.h"
|
#include "twtest/test.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
//TODO: This doesn't actually TEST() anything right now, & will only fail if something throws
|
|
||||||
void TestFile()
|
void TestFile()
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TSTRING fileName = TEMP_DIR;
|
||||||
|
fileName += _T("/file_test.bin");
|
||||||
|
|
||||||
TSTRING fileName = TEMP_DIR;
|
//Create a temporary file for testing:
|
||||||
fileName += _T("/file_test.bin");
|
FILE* testStream;
|
||||||
|
testStream = _tfopen( fileName.c_str(), _T("w+b"));
|
||||||
|
TEST(testStream);
|
||||||
|
|
||||||
|
TSTRING testString( _T("This is a test") );
|
||||||
|
int iTestStringLength = testString.length();
|
||||||
|
|
||||||
//Create a temporary file for testing:
|
//Write some data to the stream...
|
||||||
FILE* testStream;
|
fwrite( testString.c_str(), sizeof(TCHAR), iTestStringLength, testStream );
|
||||||
testStream = _tfopen( fileName.c_str(), _T("w+b"));
|
fclose( testStream );
|
||||||
TSTRING testString( _T("This is a test") );
|
|
||||||
int iTestStringLength = testString.length();
|
|
||||||
|
|
||||||
//Write some data to the stream...
|
//Open the file again, for reading only this time.
|
||||||
fwrite( testString.c_str(), sizeof(TCHAR), iTestStringLength, testStream );
|
testStream = _tfopen( fileName.c_str(), _T("rb") );
|
||||||
fclose( testStream );
|
TEST(testStream);
|
||||||
|
|
||||||
|
cFile fTempFile;
|
||||||
|
//Try attaching one of our file objects to the stream.
|
||||||
|
//TODO: fTempFile.AttachRead( testStream );
|
||||||
|
|
||||||
//Open the file again, for reading only this time.
|
//Try reading something from the file object
|
||||||
testStream = _tfopen( fileName.c_str(), _T("rb") );
|
TCHAR buffer[40];
|
||||||
|
TCHAR buffer2[40];
|
||||||
|
|
||||||
cFile fTempFile;
|
fTempFile.Read( buffer, sizeof(TCHAR) * iTestStringLength );
|
||||||
//Try attaching one of our file objects to the stream.
|
fTempFile.Close();
|
||||||
//TODO: fTempFile.AttachRead( testStream );
|
|
||||||
|
|
||||||
//Try reading something from the file object
|
testStream = _tfopen( fileName.c_str(), _T("a+b") );
|
||||||
TCHAR buffer[40];
|
TEST(testStream);
|
||||||
TCHAR buffer2[40];
|
//TODO: fTempFile.AttachReadWrite( testStream );
|
||||||
|
|
||||||
fTempFile.Read( buffer, sizeof(TCHAR) * iTestStringLength );
|
|
||||||
fTempFile.Close();
|
|
||||||
|
|
||||||
testStream = _tfopen( fileName.c_str(), _T("a+b") );
|
|
||||||
//TODO: fTempFile.AttachReadWrite( testStream );
|
|
||||||
|
|
||||||
//Now try writing something to the stream.
|
|
||||||
fTempFile.Write( testString.c_str(), sizeof(TCHAR) * iTestStringLength );
|
|
||||||
fTempFile.Rewind();
|
|
||||||
fTempFile.Read( buffer2, sizeof(TCHAR) * iTestStringLength * 2 );
|
|
||||||
|
|
||||||
|
//Now try writing something to the stream.
|
||||||
|
fTempFile.Write( testString.c_str(), sizeof(TCHAR) * iTestStringLength );
|
||||||
|
fTempFile.Rewind();
|
||||||
|
fTempFile.Read( buffer2, sizeof(TCHAR) * iTestStringLength * 2 );
|
||||||
|
}
|
||||||
|
catch(const eError& e)
|
||||||
|
{
|
||||||
|
TCERR << std::endl << e.GetMsg() << std::endl;
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ void TestFSPropCalc()
|
||||||
// get the fco but none of its children...
|
// get the fco but none of its children...
|
||||||
ds.SeekToFCO(cFCOName(foo_bin), false);
|
ds.SeekToFCO(cFCOName(foo_bin), false);
|
||||||
iFCO* pFCO = ds.CreateFCO();
|
iFCO* pFCO = ds.CreateFCO();
|
||||||
ASSERT(pFCO);
|
TEST(pFCO);
|
||||||
|
|
||||||
// create the calculator and set some properties to calculate...
|
// create the calculator and set some properties to calculate...
|
||||||
cFSPropCalc propCalc;
|
cFSPropCalc propCalc;
|
||||||
|
|
|
@ -34,13 +34,14 @@
|
||||||
#include "fco/stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fco/fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
//#include "fs/fsdatasource.h"
|
#include "fs/fsdatasourceiter.h"
|
||||||
#include "fco/iterproxy.h"
|
#include "fco/iterproxy.h"
|
||||||
#include "core/error.h"
|
#include "core/error.h"
|
||||||
#include "twtest/test.h"
|
#include "twtest/test.h"
|
||||||
#include "fco/fcospechelper.h"
|
#include "fco/fcospechelper.h"
|
||||||
#include "core/fsservices.h"
|
#include "core/fsservices.h"
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// PrintFCOTree -- recursively prints an fco's name and all of it's children's
|
// PrintFCOTree -- recursively prints an fco's name and all of it's children's
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -69,43 +70,35 @@ void TestFCOSpecImpl()
|
||||||
cDebug d("TestFCOSpecImpl");
|
cDebug d("TestFCOSpecImpl");
|
||||||
d.TraceDebug("Entering...\n");
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
//*********************
|
cFSDataSourceIter dataSrc;
|
||||||
//
|
|
||||||
// TODO -- As of tripwire 2.1, this needs to be updated!
|
|
||||||
// 28 Jan 99 mdb
|
|
||||||
//
|
|
||||||
//*********************
|
|
||||||
ASSERT( false );
|
|
||||||
/*
|
|
||||||
cFSDataSource dataSrc;
|
|
||||||
iFSServices* pFSS = iFSServices::GetInstance();
|
|
||||||
|
|
||||||
|
|
||||||
// test AllChildStopPoint fcos...
|
// test AllChildStopPoint fcos...
|
||||||
d.TraceDebug("Now testing a spec whose start point is the only thing it maps to (%s)\n", TEMP_DIR);
|
d.TraceDebug("Now testing a spec whose start point is the only thing it maps to (%s)\n", TEMP_DIR);
|
||||||
cFCOSpecImpl* pSpec2 = new cFCOSpecImpl(TEMP_DIR, &dataSrc, new cFCOSpecNoChildren);
|
cFCOSpecImpl* pSpec2 = new cFCOSpecImpl(TEMP_DIR, &dataSrc, new cFCOSpecNoChildren);
|
||||||
pSpec2->SetStartPoint(cFCOName(TEMP_DIR));
|
pSpec2->SetStartPoint(cFCOName(TEMP_DIR));
|
||||||
iFCO* pFCO = pSpec2->CreateFCO(pSpec2->GetStartPoint(), iFCODataSource::CHILDREN_ALL);
|
dataSrc.SeekToFCO(pSpec2->GetStartPoint(), false);
|
||||||
PrintFCOTree(pFCO, d, 0);
|
iFCO* pFCO = dataSrc.CreateFCO();
|
||||||
|
TEST(pFCO);
|
||||||
|
//PrintFCOTree(pFCO, d, 0);
|
||||||
pFCO->Release();
|
pFCO->Release();
|
||||||
|
|
||||||
// create an FSSpec and set up some start and stop points...
|
// create an FSSpec and set up some start and stop points...
|
||||||
cFCOSpecStopPointSet* pSet = new cFCOSpecStopPointSet;
|
cFCOSpecStopPointSet* pSet = new cFCOSpecStopPointSet;
|
||||||
cFCOSpecImpl* pSpec = new cFCOSpecImpl(_T("Test FSSpec"), &dataSrc, pSet);
|
cFCOSpecImpl* pSpec = new cFCOSpecImpl(_T("Test FSSpec"), &dataSrc, pSet);
|
||||||
pSpec->SetStartPoint(cFCOName(_T("d:/code")));
|
pSpec->SetStartPoint(cFCOName(_T("/etc")));
|
||||||
pSet->Add(cFCOName(_T("d:/code/open gl")));
|
pSet->Add(cFCOName(_T("/etc/open gl")));
|
||||||
pSet->Add(cFCOName(_T("d:/code/pclient")));
|
pSet->Add(cFCOName(_T("/etc/pclient")));
|
||||||
|
|
||||||
// create all the fcos...
|
// create all the fcos...
|
||||||
pFCO = pSpec->CreateFCO(pSpec->GetStartPoint(), iFCODataSource::CHILDREN_ALL);
|
cFSDataSourceIter dataSrc2;
|
||||||
ASSERT(pFCO);
|
dataSrc2.SeekToFCO(pSpec->GetStartPoint(), false);
|
||||||
PrintFCOTree(pFCO, d, 0);
|
iFCO* pFCO2 = dataSrc2.CreateFCO();
|
||||||
pFCO->Release();
|
TEST(pFCO2);
|
||||||
|
//PrintFCOTree(pFCO, d, 0);
|
||||||
|
pFCO2->Release();
|
||||||
|
|
||||||
// TODO -- test Clone(), copy ctor, operator=
|
// TODO -- test Clone(), copy ctor, operator=
|
||||||
|
|
||||||
pSpec->Release();
|
pSpec->Release();
|
||||||
return;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,38 +36,26 @@
|
||||||
#include "fco/stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fco/genreswitcher.h"
|
#include "fco/genreswitcher.h"
|
||||||
#include "twtest/test.h"
|
#include "twtest/test.h"
|
||||||
|
#include "fs/fs.h"
|
||||||
|
|
||||||
#ifdef _CPPRTTI
|
|
||||||
#include "fs/fsfactory.h"
|
#include "fs/fsfactory.h"
|
||||||
#include "ntfs/ntfsfactory.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void TestGenreSwitcher()
|
void TestGenreSwitcher()
|
||||||
{
|
{
|
||||||
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
|
||||||
#if 0
|
|
||||||
cDebug d("TestGenreSwitcher");
|
cDebug d("TestGenreSwitcher");
|
||||||
d.TraceDebug("Entering...\n");
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
// normally we use the cGenreSwitcher::GetInstance() interface
|
cGenreSwitcher* genreSwitcher = cGenreSwitcher::GetInstance();
|
||||||
// to get access the class singleton. But for testing purposes
|
|
||||||
// we will put have one reside on the stack.
|
|
||||||
cGenreSwitcher genreSwitcher;
|
|
||||||
|
|
||||||
TEST(genreSwitcher.CurrentGenre() == cGenre::GENRE_INVALID);
|
TEST(genreSwitcher->CurrentGenre() == cFS::GenreID());
|
||||||
|
|
||||||
|
// can't switch to invalid genre
|
||||||
|
//genreSwitcher->SelectGenre(cGenre::GENRE_INVALID);
|
||||||
|
//TEST(genreSwitcher->CurrentGenre() == cGenre::GENRE_INVALID);
|
||||||
|
|
||||||
genreSwitcher.SelectGenre(cGenre::FS);
|
genreSwitcher->SelectGenre(cFS::GenreID());
|
||||||
TEST(genreSwitcher.CurrentGenre() == cGenre::FS);
|
TEST(genreSwitcher->CurrentGenre() == cFS::GenreID());
|
||||||
#ifdef _CPPRTTI
|
|
||||||
TEST(typeid(*iTWFactory::GetInstance()) == typeid(cFSFactory));
|
TEST(typeid(*iTWFactory::GetInstance()) == typeid(cFSFactory));
|
||||||
#endif
|
|
||||||
|
|
||||||
genreSwitcher.SelectGenre(cGenre::NTFS);
|
|
||||||
TEST(genreSwitcher.CurrentGenre() == cGenre::NTFS);
|
|
||||||
#ifdef _CPPRTTI
|
|
||||||
TEST(typeid(*iTWFactory::GetInstance()) == typeid(cNTFSFactory));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
d.TraceDebug("All tests passed.\n");
|
d.TraceDebug("All tests passed.\n");
|
||||||
#endif //#if 0
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,12 +73,15 @@ static void GetNoun( TSTRING& noun )
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
void TestHierDatabaseInteractive()
|
void TestHierDatabaseInteractive()
|
||||||
{
|
{
|
||||||
|
TCERR << std::endl << "TestHierDatabaseInteractive needs to be redesigned (& renamed) to not require user interaction" << std::endl;
|
||||||
|
|
||||||
|
#if 0
|
||||||
cDebug d( "TestHierDatabaseInteractive" );
|
cDebug d( "TestHierDatabaseInteractive" );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
cHierDatabase db;
|
cHierDatabase db;
|
||||||
//db.Open( _T("c:/tmp/tw.hdb"), 5, true);
|
//db.Open( _T("c:/tmp/tw.hdb"), 5, true);
|
||||||
db.Open( _T("c:/tmp/tw.db"), 5, false);
|
db.Open( _T("tw.db"), 5, false);
|
||||||
cHierDatabase::iterator iter(&db);
|
cHierDatabase::iterator iter(&db);
|
||||||
|
|
||||||
while( true )
|
while( true )
|
||||||
|
@ -346,5 +349,5 @@ void TestHierDatabaseInteractive()
|
||||||
d.TraceError( "Exception caught: %d %s\n", e.GetID(), e.GetMsg().c_str() );
|
d.TraceError( "Exception caught: %d %s\n", e.GetID(), e.GetMsg().c_str() );
|
||||||
TEST( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,8 +70,8 @@ void TestKeyFile()
|
||||||
{
|
{
|
||||||
cElGamalSig elGamal(*keyfile.GetPublicKey());
|
cElGamalSig elGamal(*keyfile.GetPublicKey());
|
||||||
|
|
||||||
ASSERT(elGamal.GetBlockSizePlain() < 9000);
|
TEST(elGamal.GetBlockSizePlain() < 9000);
|
||||||
ASSERT(elGamal.GetBlockSizeCipher() < 9000);
|
TEST(elGamal.GetBlockSizeCipher() < 9000);
|
||||||
std::string s = "haybaby";
|
std::string s = "haybaby";
|
||||||
cPrivateKeyProxy key;
|
cPrivateKeyProxy key;
|
||||||
TEST(key.AquireKey(keyfile, (int8*)s.data(), 7));
|
TEST(key.AquireKey(keyfile, (int8*)s.data(), 7));
|
||||||
|
|
|
@ -203,15 +203,15 @@ void TestAlignment()
|
||||||
void TestSizes()
|
void TestSizes()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
ASSERT( CanBeRepresentedAs( char(), char() ) );
|
TEST( CanBeRepresentedAs( char(), char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( char(), unsigned char() ) );
|
TEST( CanBeRepresentedAs( char(), unsigned char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( unsigned char(), char() ) );
|
TEST( CanBeRepresentedAs( unsigned char(), char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( unsigned char(), unsigned char() ) );
|
TEST( CanBeRepresentedAs( unsigned char(), unsigned char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( signed char(), char() ) );
|
TEST( CanBeRepresentedAs( signed char(), char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( char(), signed char() ) );
|
TEST( CanBeRepresentedAs( char(), signed char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( signed char(), signed char() ) );
|
TEST( CanBeRepresentedAs( signed char(), signed char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( signed char(), unsigned char() ) );
|
TEST( CanBeRepresentedAs( signed char(), unsigned char() ) );
|
||||||
ASSERT( CanBeRepresentedAs( char(), signed char() ) );
|
TEST( CanBeRepresentedAs( char(), signed char() ) );
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ void TestRefCountObj()
|
||||||
|
|
||||||
db.TraceAlways("Entering...\n");
|
db.TraceAlways("Entering...\n");
|
||||||
|
|
||||||
// Note the following test of Reference counted objects containing
|
// Note the following test of Reference counted objects containing
|
||||||
// copies of themselves failed. Perhaps someday we will upgrade the
|
// copies of themselves failed. Perhaps someday we will upgrade the
|
||||||
// reference counting interface to allow this type of structure.
|
// reference counting interface to allow this type of structure.
|
||||||
/*
|
/*
|
||||||
|
@ -157,11 +157,12 @@ void TestRefCountObj()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//These fields only exist in debug builds, so we can't use TEST() here.
|
||||||
ASSERT(cRefCountObj::objectCounter == 0);
|
ASSERT(cRefCountObj::objectCounter == 0);
|
||||||
ASSERT(cRefCountObj::referenceCounter == 0);
|
ASSERT(cRefCountObj::referenceCounter == 0);
|
||||||
|
|
||||||
db.TraceAlways("Done...\n");
|
db.TraceAlways("Done...\n");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,13 +71,11 @@ void TestFCOSpec();
|
||||||
void TestFCOPropVector();
|
void TestFCOPropVector();
|
||||||
void TestFileHeader();
|
void TestFileHeader();
|
||||||
void TestFSPropSet();
|
void TestFSPropSet();
|
||||||
void TestFSDataSource();
|
|
||||||
void TestFCOSpecImpl();
|
void TestFCOSpecImpl();
|
||||||
void TestFSPropCalc();
|
void TestFSPropCalc();
|
||||||
void TestFCOPropImpl();
|
void TestFCOPropImpl();
|
||||||
void TestFCOCompare();
|
void TestFCOCompare();
|
||||||
//void TestTripwire();
|
//void TestTripwire();
|
||||||
void TestFCOSetUtil();
|
|
||||||
void TestWin32FSServices();
|
void TestWin32FSServices();
|
||||||
void TestFCOSpecList();
|
void TestFCOSpecList();
|
||||||
void TestFCOReport();
|
void TestFCOReport();
|
||||||
|
@ -88,7 +86,6 @@ void TestRefCountObj();
|
||||||
void TestSignature();
|
void TestSignature();
|
||||||
void TestSerRefCountObj();
|
void TestSerRefCountObj();
|
||||||
void TestUnixFSServices();
|
void TestUnixFSServices();
|
||||||
//void TestFCODatabase();
|
|
||||||
void TestError();
|
void TestError();
|
||||||
void TestDebug();
|
void TestDebug();
|
||||||
void TestFcoSpecUtil();
|
void TestFcoSpecUtil();
|
||||||
|
@ -96,7 +93,7 @@ void TestTypes();
|
||||||
void TestTCHAR();
|
void TestTCHAR();
|
||||||
void TestErrorBucketImpl();
|
void TestErrorBucketImpl();
|
||||||
void TestHashTable();
|
void TestHashTable();
|
||||||
//void TestTextReportViewer();
|
void TestTextReportViewer();
|
||||||
void TestFCONameTbl();
|
void TestFCONameTbl();
|
||||||
void TestConfigFile();
|
void TestConfigFile();
|
||||||
|
|
||||||
|
@ -108,16 +105,14 @@ void TestCryptoArchive();
|
||||||
void TestFCOSpecAttr();
|
void TestFCOSpecAttr();
|
||||||
void TestCmdLineParser();
|
void TestCmdLineParser();
|
||||||
void TestTaskTimer();
|
void TestTaskTimer();
|
||||||
//void TestObjectPool();
|
|
||||||
void TestKeyFile();
|
void TestKeyFile();
|
||||||
void TestFCOSetCached();
|
|
||||||
void TestTWUtil();
|
void TestTWUtil();
|
||||||
void TestFSPropDisplayer();
|
void TestFSPropDisplayer();
|
||||||
void TestFSPropDisplayer();
|
void TestFSPropDisplayer();
|
||||||
void TestGenre();
|
void TestGenre();
|
||||||
void TestFSDataSourceIter();
|
void TestFSDataSourceIter();
|
||||||
void TestGenerateDb();
|
void TestGenerateDb();
|
||||||
//void TestHierDatabaseInteractive();
|
void TestHierDatabaseInteractive();
|
||||||
void TestGenreSwitcher();
|
void TestGenreSwitcher();
|
||||||
void TestDbDataSource();
|
void TestDbDataSource();
|
||||||
void TestGenreSpecList();
|
void TestGenreSpecList();
|
||||||
|
@ -125,12 +120,11 @@ void TestIntegrityCheck();
|
||||||
void TestFCODatabaseFile();
|
void TestFCODatabaseFile();
|
||||||
void TestWchar16();
|
void TestWchar16();
|
||||||
void TestStringEncoder();
|
void TestStringEncoder();
|
||||||
//void TestDisplayEncoder();
|
|
||||||
void TestGrowHeap();
|
void TestGrowHeap();
|
||||||
void TestPlatform();
|
void TestPlatform();
|
||||||
//void TestBlockFile();
|
void TestBlockFile();
|
||||||
//void TestBlockRecordArray();
|
void TestBlockRecordArray();
|
||||||
//void TestHierDatabaseInteractive();
|
|
||||||
void TestTWLocale();
|
void TestTWLocale();
|
||||||
void TestFileUtil();
|
void TestFileUtil();
|
||||||
void TestFCONameTranslator();
|
void TestFCONameTranslator();
|
||||||
|
@ -158,10 +152,12 @@ void Usage()
|
||||||
_T("(runs test id's 1, 2, 3, and 12)\n\n");
|
_T("(runs test id's 1, 2, 3, and 12)\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
const int MAX_TEST_ID = 100;
|
const int MAX_TEST_ID = 88;
|
||||||
|
|
||||||
static void Test(int testID)
|
static void Test(int testID)
|
||||||
{
|
{
|
||||||
|
TCERR << std::endl << "=== Running test ID #" << testID << " ===" << std::endl;
|
||||||
|
|
||||||
switch (testID)
|
switch (testID)
|
||||||
{
|
{
|
||||||
case 1: TestArchive(); break;
|
case 1: TestArchive(); break;
|
||||||
|
@ -172,37 +168,36 @@ static void Test(int testID)
|
||||||
case 6: TestError(); break;
|
case 6: TestError(); break;
|
||||||
case 7: TestErrorBucketImpl(); break;
|
case 7: TestErrorBucketImpl(); break;
|
||||||
case 8: TestFCOCompare(); break;
|
case 8: TestFCOCompare(); break;
|
||||||
//case 9: TestFCODatabase(); break;
|
|
||||||
//case 11: TestFCOErrorQueue(); break;
|
|
||||||
case 12: TestFCOName(); break;
|
case 12: TestFCOName(); break;
|
||||||
case 13: TestFCONameTbl(); break;
|
case 13: TestFCONameTbl(); break;
|
||||||
case 14: TestFCOPropVector(); break;
|
case 14: TestFCOPropVector(); break;
|
||||||
case 15: TestFCOPropImpl(); break;
|
case 15: TestFCOPropImpl(); break;
|
||||||
case 16: TestFCOReport(); break;
|
case 16: TestFCOReport(); break;
|
||||||
//case 17: TestFCOSetCached(); break;
|
|
||||||
case 18: TestFCOSetImpl(); break;
|
case 18: TestFCOSetImpl(); break;
|
||||||
//case 19: TestFCOSetUtil(); break;
|
|
||||||
case 20: TestFCOSpecAttr(); break;
|
case 20: TestFCOSpecAttr(); break;
|
||||||
case 21: TestFCOSpecHelper(); break;
|
case 21: TestFCOSpecHelper(); break;
|
||||||
case 22: TestFCOSpecList(); break;
|
case 22: TestFCOSpecList(); break;
|
||||||
case 23: TestFcoSpecUtil(); break;
|
case 23: TestFcoSpecUtil(); break;
|
||||||
case 24: TestFileHeader(); break;
|
case 24: TestFileHeader(); break;
|
||||||
//case 25: TestFSDataSource(); break;
|
|
||||||
case 26: TestFSPropSet(); break;
|
case 26: TestFSPropSet(); break;
|
||||||
case 27: TestFSPropCalc(); break;
|
case 27: TestFSPropCalc(); break;
|
||||||
case 28: TestFCOSpecImpl(); break;
|
case 28: TestFCOSpecImpl(); break;
|
||||||
case 29: TestHashTable(); break;
|
case 29: TestHashTable(); break;
|
||||||
// case 30: TestObjectPool(); break;
|
|
||||||
case 31: TestRefCountObj(); break;
|
case 31: TestRefCountObj(); break;
|
||||||
case 32: TestSerializerImpl(); break;
|
case 32: TestSerializerImpl(); break;
|
||||||
case 33: TestSerRefCountObj(); break;
|
case 33: TestSerRefCountObj(); break;
|
||||||
case 34: TestSignature(); break;
|
case 34: TestSignature(); break;
|
||||||
case 35: TestTaskTimer(); break;
|
case 35: TestTaskTimer(); break;
|
||||||
//case 36: TestTripwire(); break;
|
//case 36: TestTripwire(); break;
|
||||||
//case 37: TestTextReportViewer(); break;
|
case 37: TestTextReportViewer(); break;
|
||||||
case 39: TestSerRefCountObj(); break;
|
case 39: TestSerRefCountObj(); break;
|
||||||
case 40: TestError(); break;
|
case 40: TestError(); break;
|
||||||
//case 41: TestFCODatabase(); break;
|
case 41: TestFCODatabaseFile(); break;
|
||||||
case 42: TestHashTable(); break;
|
case 42: TestHashTable(); break;
|
||||||
case 43: TestTCHAR(); break;
|
case 43: TestTCHAR(); break;
|
||||||
case 44: TestUnixFSServices(); break;
|
case 44: TestUnixFSServices(); break;
|
||||||
|
@ -214,19 +209,19 @@ static void Test(int testID)
|
||||||
case 52: TestGenre(); break;
|
case 52: TestGenre(); break;
|
||||||
case 53: TestFSDataSourceIter(); break;
|
case 53: TestFSDataSourceIter(); break;
|
||||||
//case 54: TestGenerateDb(); break;
|
//case 54: TestGenerateDb(); break;
|
||||||
//case 55: TestHierDatabaseInteractive(); break;
|
case 55: TestHierDatabaseInteractive(); break;
|
||||||
case 56: TestGenreSwitcher(); break;
|
case 56: TestGenreSwitcher(); break;
|
||||||
case 57: TestDbDataSource(); break;
|
case 57: TestDbDataSource(); break;
|
||||||
case 58: TestGenreSpecList(); break;
|
case 58: TestGenreSpecList(); break;
|
||||||
//case 59: TestIntegrityCheck(); break;
|
//case 59: TestIntegrityCheck(); break;
|
||||||
|
|
||||||
case 65: TestWchar16(); break;
|
case 65: TestWchar16(); break;
|
||||||
case 66: TestStringEncoder(); break;
|
case 66: TestStringEncoder(); break;
|
||||||
//case 67: TestDisplayEncoder(); break;
|
|
||||||
case 69: TestGrowHeap(); break;
|
case 69: TestGrowHeap(); break;
|
||||||
case 70: TestPlatform(); break;
|
case 70: TestPlatform(); break;
|
||||||
//case 71: TestBlockFile(); break;
|
case 71: TestBlockFile(); break;
|
||||||
//case 72: TestBlockRecordArray(); break;
|
case 72: TestBlockRecordArray(); break;
|
||||||
//case 73: TestHierDatabaseInteractive(); break;
|
|
||||||
case 74: TestFileUtil(); break;
|
case 74: TestFileUtil(); break;
|
||||||
case 75: TestTWLocale(); break;
|
case 75: TestTWLocale(); break;
|
||||||
case 76: TestFCONameTranslator(); break;
|
case 76: TestFCONameTranslator(); break;
|
||||||
|
@ -244,6 +239,8 @@ static void Test(int testID)
|
||||||
case 87: TestCharUtilBasic(); break;
|
case 87: TestCharUtilBasic(); break;
|
||||||
case 88: TestConfigFile2(); break;
|
case 88: TestConfigFile2(); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TCERR << std::endl << "=== test ID #" << testID << " completed ===" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "tw/stdtw.h"
|
#include "tw/stdtw.h"
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "tw/fcoreport.h"
|
#include "tw/fcoreport.h"
|
||||||
#include "fco/fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
#include "tw/fcoreportutil.h"
|
#include "tw/fcoreportutil.h"
|
||||||
#include "tw/headerinfo.h"
|
#include "tw/headerinfo.h"
|
||||||
|
|
||||||
#ifdef FIXED_TRV_TEST_SUITE
|
//#ifdef FIXED_TRV_TEST_SUITE
|
||||||
|
|
||||||
void MakeFile( TSTRING& fcoNameMakeMe );
|
void MakeFile( TSTRING& fcoNameMakeMe );
|
||||||
void MakeDir( const TCHAR* const lpszDirName );
|
void MakeDir( const TCHAR* const lpszDirName );
|
||||||
|
@ -80,7 +81,7 @@ static void TraceReport(const cFCOReport& r, cDebug& d)
|
||||||
for(specIter.SeekBegin(); ! specIter.Done(); specIter.Next(), ct++)
|
for(specIter.SeekBegin(); ! specIter.Done(); specIter.Next(), ct++)
|
||||||
{
|
{
|
||||||
d.TraceDebug(">>> Spec [%d]:\n", ct);
|
d.TraceDebug(">>> Spec [%d]:\n", ct);
|
||||||
ASSERT(specIter.GetSpec());
|
TEST(specIter.GetSpec());
|
||||||
specIter.GetSpec()->TraceContents();
|
specIter.GetSpec()->TraceContents();
|
||||||
specIter.GetErrorQueue()->TraceContents();
|
specIter.GetErrorQueue()->TraceContents();
|
||||||
|
|
||||||
|
@ -105,8 +106,30 @@ static void TraceReport(const cFCOReport& r, cDebug& d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
//
|
||||||
|
// basic functionality
|
||||||
|
//
|
||||||
|
void DisplayReportAndHaveUserUpdateIt( const TSTRING& edName, ReportingLevel level = FULL_REPORT ); //throw (eFSServices, eTextReportViewer, eInternal);
|
||||||
|
// outputs the given report to a temp file, opens an editor, has
|
||||||
|
// the user view changes to the database, and, by selecting FCO entries,
|
||||||
|
// chooses which changes to write to the database. Unchecked entries
|
||||||
|
// are removed from the report
|
||||||
|
// edName is the name of the editor to use to update the report
|
||||||
|
|
||||||
|
virtual void PrintTextReport( const TSTRING& strFilename, ReportingLevel level = FULL_REPORT ); //throw (eTextReportViewer);
|
||||||
|
// if strFilename is "-", will print to TCOUT
|
||||||
|
virtual void PrintTextReport( TOSTREAM& ostr, ReportingLevel level = FULL_REPORT ); //throw (eTextReportViewer);
|
||||||
|
// prints the report to the specified ostream
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TestTextReportViewer()
|
void TestTextReportViewer()
|
||||||
{
|
{
|
||||||
|
TCERR << std::endl << "TestTextReportViewer needs to be cleaned up & fixed, currently disabled" << std::endl;
|
||||||
|
|
||||||
|
#if 0
|
||||||
cFCOReport report;
|
cFCOReport report;
|
||||||
cFCOReportGenreIter genreIter(report);
|
cFCOReportGenreIter genreIter(report);
|
||||||
cFCOReportSpecIter specIter(genreIter);
|
cFCOReportSpecIter specIter(genreIter);
|
||||||
|
@ -119,7 +142,7 @@ void TestTextReportViewer()
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance();
|
iFSServices* pFSServices = iFSServices::GetInstance();
|
||||||
ASSERT( pFSServices );
|
TEST( pFSServices );
|
||||||
|
|
||||||
TSTRING fcoNameTempDir;
|
TSTRING fcoNameTempDir;
|
||||||
pFSServices->GetTempDirName( fcoNameTempDir );
|
pFSServices->GetTempDirName( fcoNameTempDir );
|
||||||
|
@ -127,9 +150,9 @@ void TestTextReportViewer()
|
||||||
fcoNameSpec1 = fcoNameTempDir += _T("SPEC1/");
|
fcoNameSpec1 = fcoNameTempDir += _T("SPEC1/");
|
||||||
fcoNameSpec2 = fcoNameTempDir += _T("SPEC2/");
|
fcoNameSpec2 = fcoNameTempDir += _T("SPEC2/");
|
||||||
|
|
||||||
pFSServices->Mkdir( fcoNameTempDir );
|
mkdir( fcoNameTempDir.c_str(), 0777 );
|
||||||
pFSServices->Mkdir( fcoNameSpec1.AsString() );
|
mkdir( fcoNameSpec1.AsString().c_str(), 0777 );
|
||||||
pFSServices->Mkdir( fcoNameSpec2.AsString() );
|
mkdir( fcoNameSpec2.AsString().c_str(), 0777 );
|
||||||
|
|
||||||
fcoNameTempFile = fcoNameTempDir += _T("twtempXXXXXX");
|
fcoNameTempFile = fcoNameTempDir += _T("twtempXXXXXX");
|
||||||
pFSServices->MakeTempFilename( fcoNameTempFile );
|
pFSServices->MakeTempFilename( fcoNameTempFile );
|
||||||
|
@ -137,12 +160,12 @@ void TestTextReportViewer()
|
||||||
catch(eFSServices& /* e */)
|
catch(eFSServices& /* e */)
|
||||||
{
|
{
|
||||||
// TODO: properly handle error
|
// TODO: properly handle error
|
||||||
ASSERT( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
// need two prop calcs because.....
|
// need two prop calcs because.....
|
||||||
// if cFSPropCalc::VisitFSObject succeeds, cFSPropCalc stores the FCO in
|
// if cFSPropCalc::VisitFSObject succeeds, cFSPropCalc stores the FCO in
|
||||||
// an internal set (why, I don't know), and the cFCOSet ASSERTs that the same
|
// an internal set (why, I don't know), and the cFCOSet TESTs that the same
|
||||||
// FCO isn't inserted more than once. But since we visit changed FCOs twice
|
// FCO isn't inserted more than once. But since we visit changed FCOs twice
|
||||||
// in this test routine, we need two calcs. Make sense? Oh, well.
|
// in this test routine, we need two calcs. Make sense? Oh, well.
|
||||||
cFSPropCalc* pPropCalc = new cFSPropCalc;
|
cFSPropCalc* pPropCalc = new cFSPropCalc;
|
||||||
|
@ -153,7 +176,7 @@ void TestTextReportViewer()
|
||||||
cFCOSpecImpl* pSpec = new cFCOSpecImpl( fcoNameSpec1.AsString(), NULL, pStopPts);
|
cFCOSpecImpl* pSpec = new cFCOSpecImpl( fcoNameSpec1.AsString(), NULL, pStopPts);
|
||||||
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
cFCOSpecAttr* pAttr = new cFCOSpecAttr;
|
||||||
|
|
||||||
|
|
||||||
cFCOPropVector v;
|
cFCOPropVector v;
|
||||||
for( int i = 0; i < 32; i++ )
|
for( int i = 0; i < 32; i++ )
|
||||||
v.AddItem( i );
|
v.AddItem( i );
|
||||||
|
@ -161,7 +184,6 @@ void TestTextReportViewer()
|
||||||
pPropCalc->SetPropVector(v);
|
pPropCalc->SetPropVector(v);
|
||||||
pPropCalc2->SetPropVector(v);
|
pPropCalc2->SetPropVector(v);
|
||||||
|
|
||||||
|
|
||||||
TSTRING fcoNameMakeMe;
|
TSTRING fcoNameMakeMe;
|
||||||
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/added_fileXXXXXX");
|
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/added_fileXXXXXX");
|
||||||
MakeFile( fcoNameMakeMe );
|
MakeFile( fcoNameMakeMe );
|
||||||
|
@ -172,9 +194,10 @@ void TestTextReportViewer()
|
||||||
// MakeTempFile can't handle strings with escaped quotes, so we'll have to do this ourselves
|
// MakeTempFile can't handle strings with escaped quotes, so we'll have to do this ourselves
|
||||||
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/\"quoted\\_and_backslashed_file1\"");
|
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/\"quoted\\_and_backslashed_file1\"");
|
||||||
//TOFSTREAM file1( fcoNameMakeMe.c_str() );
|
//TOFSTREAM file1( fcoNameMakeMe.c_str() );
|
||||||
//ASSERT( file1 );
|
//TEST( file1 );
|
||||||
//file1.close();
|
//file1.close();
|
||||||
|
|
||||||
|
|
||||||
cFSObject* addedFCO2 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
cFSObject* addedFCO2 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
||||||
//pPropCalc->VisitFSObject( *addedFCO2 );
|
//pPropCalc->VisitFSObject( *addedFCO2 );
|
||||||
|
|
||||||
|
@ -182,7 +205,7 @@ void TestTextReportViewer()
|
||||||
// MakeTempFile can't handle strings with escaped quotes, so we'll have to do this ourselves
|
// MakeTempFile can't handle strings with escaped quotes, so we'll have to do this ourselves
|
||||||
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/quoted_file\"2\"XXXXXX");
|
fcoNameMakeMe = fcoNameSpec1.AsString() + _T("/quoted_file\"2\"XXXXXX");
|
||||||
//TOFSTREAM file2( fcoNameMakeMe.c_str() );
|
//TOFSTREAM file2( fcoNameMakeMe.c_str() );
|
||||||
//ASSERT( file2 );
|
//TEST( file2 );
|
||||||
//file2.close();
|
//file2.close();
|
||||||
|
|
||||||
cFSObject* addedFCO3 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
cFSObject* addedFCO3 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
||||||
|
@ -199,6 +222,7 @@ void TestTextReportViewer()
|
||||||
MakeFile( fcoNameMakeMe );
|
MakeFile( fcoNameMakeMe );
|
||||||
cFSObject* removedFCO2 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
cFSObject* removedFCO2 = new cFSObject( cFCOName(fcoNameMakeMe) );
|
||||||
pPropCalc->VisitFSObject( *removedFCO2 );
|
pPropCalc->VisitFSObject( *removedFCO2 );
|
||||||
|
|
||||||
|
|
||||||
pSpec->SetStartPoint( fcoNameSpec1 );
|
pSpec->SetStartPoint( fcoNameSpec1 );
|
||||||
pAttr->SetName( fcoNameSpec1.AsString() );
|
pAttr->SetName( fcoNameSpec1.AsString() );
|
||||||
|
@ -207,7 +231,9 @@ void TestTextReportViewer()
|
||||||
report.AddSpec(0x00020001, pSpec, pAttr, &specIter); // TODO:bam - use cFS::Genre
|
report.AddSpec(0x00020001, pSpec, pAttr, &specIter); // TODO:bam - use cFS::Genre
|
||||||
pAttr->Release();
|
pAttr->Release();
|
||||||
|
|
||||||
|
TEST(specIter.GetAddedSet());
|
||||||
|
TEST(specIter.GetRemovedSet());
|
||||||
|
|
||||||
specIter.GetAddedSet()->Insert(addedFCO);
|
specIter.GetAddedSet()->Insert(addedFCO);
|
||||||
specIter.GetAddedSet()->Insert(addedFCO2);
|
specIter.GetAddedSet()->Insert(addedFCO2);
|
||||||
specIter.GetAddedSet()->Insert(addedFCO3);
|
specIter.GetAddedSet()->Insert(addedFCO3);
|
||||||
|
@ -234,6 +260,7 @@ void TestTextReportViewer()
|
||||||
changedPropVector1.AddItem(cFSPropSet::PROP_UID);
|
changedPropVector1.AddItem(cFSPropSet::PROP_UID);
|
||||||
report.AddChangedFCO(specIter, oldChangedFCO, newChangedFCO, changedPropVector1);
|
report.AddChangedFCO(specIter, oldChangedFCO, newChangedFCO, changedPropVector1);
|
||||||
|
|
||||||
|
|
||||||
// make changed FCO2
|
// make changed FCO2
|
||||||
cFCOPropVector changedPropVector2;
|
cFCOPropVector changedPropVector2;
|
||||||
|
|
||||||
|
@ -280,7 +307,7 @@ void TestTextReportViewer()
|
||||||
specIter.GetAddedSet()->Insert(addedFCO5);
|
specIter.GetAddedSet()->Insert(addedFCO5);
|
||||||
specIter.GetRemovedSet()->Insert(removedFCO5);
|
specIter.GetRemovedSet()->Insert(removedFCO5);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// make changed FCO3
|
// make changed FCO3
|
||||||
cFCOPropVector changedPropVector3;
|
cFCOPropVector changedPropVector3;
|
||||||
|
@ -321,14 +348,13 @@ void TestTextReportViewer()
|
||||||
specIter.Next();
|
specIter.Next();
|
||||||
//specIter.GetErrorQueue()->AddError(2, "this is an \"/etc2\" spec error",NULL);
|
//specIter.GetErrorQueue()->AddError(2, "this is an \"/etc2\" spec error",NULL);
|
||||||
|
|
||||||
|
|
||||||
d.TraceDebug(_T("\n======================================================\nStart PrintTextReport...\n======================================================\n\n\n"));
|
d.TraceDebug(_T("\n======================================================\nStart PrintTextReport...\n======================================================\n\n\n"));
|
||||||
|
|
||||||
TSTRING tstrEmpty( _T("") );
|
TSTRING tstrEmpty( _T("") );
|
||||||
cFCOReportHeader rhi;
|
cFCOReportHeader rhi;
|
||||||
cFCOReportUtil::FinalizeReport( report );
|
cFCOReportUtil::FinalizeReport( report );
|
||||||
cTextReportViewer trv;
|
cTextReportViewer trv(rhi, report);
|
||||||
trv.DisplayReportAndHaveUserUpdateIt( rhi, report, _T("") );
|
trv.DisplayReportAndHaveUserUpdateIt( _T("") );
|
||||||
|
|
||||||
// test writing of USID
|
// test writing of USID
|
||||||
cFileArchive outFile;
|
cFileArchive outFile;
|
||||||
|
@ -354,20 +380,20 @@ void TestTextReportViewer()
|
||||||
|
|
||||||
d.TraceDebug("Read in serialized report:\n");
|
d.TraceDebug("Read in serialized report:\n");
|
||||||
//TraceReport(inReport, d);
|
//TraceReport(inReport, d);
|
||||||
trv.PrintTextReport( rhi, inReport, TSTRING( TEMP_DIR _T( "/test2.txt" ) ) );
|
trv.PrintTextReport(TSTRING( TEMP_DIR _T( "/test2.txt" ) ) );
|
||||||
|
|
||||||
//TODO: this does not work any more
|
//TODO: this does not work any more
|
||||||
//trv.LaunchEditorOnFile( TSTRING( TEMP_DIR _T("/test2.txt") ), _T("") );
|
//trv.LaunchEditorOnFile( TSTRING( TEMP_DIR _T("/test2.txt") ), _T("") );
|
||||||
|
|
||||||
|
|
||||||
// look at results
|
// look at results
|
||||||
trv.PrintTextReport( rhi, report, fcoNameTempFile );
|
trv.PrintTextReport(fcoNameTempFile );
|
||||||
//TODO: this does not work any more
|
//TODO: this does not work any more
|
||||||
//cTextReportViewer::LaunchEditorOnFile( fcoNameTempFile, _T("") );
|
//cTextReportViewer::LaunchEditorOnFile( fcoNameTempFile, _T("") );
|
||||||
|
|
||||||
|
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance();
|
iFSServices* pFSServices = iFSServices::GetInstance();
|
||||||
ASSERT( pFSServices );
|
TEST( pFSServices );
|
||||||
pFSServices->FileDelete( addedFCO->GetName().AsString() );
|
pFSServices->FileDelete( addedFCO->GetName().AsString() );
|
||||||
pFSServices->FileDelete( addedFCO2->GetName().AsString() );
|
pFSServices->FileDelete( addedFCO2->GetName().AsString() );
|
||||||
pFSServices->FileDelete( addedFCO3->GetName().AsString() );
|
pFSServices->FileDelete( addedFCO3->GetName().AsString() );
|
||||||
|
@ -382,8 +408,8 @@ void TestTextReportViewer()
|
||||||
pFSServices->FileDelete( fcoNameTempFile );
|
pFSServices->FileDelete( fcoNameTempFile );
|
||||||
|
|
||||||
// don't remove TEMP_DIR since other people may be using it
|
// don't remove TEMP_DIR since other people may be using it
|
||||||
pFSServices->Rmdir( fcoNameSpec1.AsString() );
|
rmdir( fcoNameSpec1.AsString().c_str() );
|
||||||
pFSServices->Rmdir( fcoNameSpec2.AsString() );
|
rmdir( fcoNameSpec2.AsString().c_str() );
|
||||||
|
|
||||||
pSpec->Release();
|
pSpec->Release();
|
||||||
pSpec2->Release();
|
pSpec2->Release();
|
||||||
|
@ -404,7 +430,8 @@ void TestTextReportViewer()
|
||||||
newChangedFCO3->Release();
|
newChangedFCO3->Release();
|
||||||
oldChangedFCO4->Release();
|
oldChangedFCO4->Release();
|
||||||
newChangedFCO4->Release();
|
newChangedFCO4->Release();
|
||||||
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,50 +439,40 @@ void MakeFile( TSTRING& strNameMakeMe )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance(); ASSERT( pFSServices );
|
iFSServices* pFSServices = iFSServices::GetInstance(); TEST( pFSServices );
|
||||||
pFSServices->MakeTempFilename( strNameMakeMe );
|
pFSServices->MakeTempFilename( strNameMakeMe );
|
||||||
|
|
||||||
std::string strA;
|
std::string strA;
|
||||||
for( TSTRING::iterator i = strNameMakeMe.begin(); i != strNameMakeMe.end(); ++i )
|
for( TSTRING::iterator i = strNameMakeMe.begin(); i != strNameMakeMe.end(); ++i )
|
||||||
{
|
{
|
||||||
char ach[6];
|
char ach[6];
|
||||||
ASSERT( MB_CUR_MAX <= 6 );
|
TEST( MB_CUR_MAX <= 6 );
|
||||||
|
|
||||||
int n = wctomb( ach, *i );
|
int n = wctomb( ach, *i );
|
||||||
ASSERT( n != -1 );
|
TEST( n != -1 );
|
||||||
|
|
||||||
for( int j = 0; j < n; j++ )
|
for( int j = 0; j < n; j++ )
|
||||||
strA += ach[j];
|
strA += ach[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
TOFSTREAM file( strA.c_str() );
|
TOFSTREAM file( strA.c_str() );
|
||||||
ASSERT( file );
|
TEST( file );
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
catch( eFSServices e )
|
catch( eFSServices e )
|
||||||
{
|
{
|
||||||
ASSERT( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
catch( ... )
|
catch( ... )
|
||||||
{
|
{
|
||||||
ASSERT( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDir( const TCHAR* const lpszDirName )
|
void MakeDir( const TCHAR* const lpszDirName )
|
||||||
{
|
{
|
||||||
try
|
TEST(0 == mkdir(lpszDirName, 0777 ))
|
||||||
{
|
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance();
|
|
||||||
TSTRING newdir(lpszDirName);
|
|
||||||
|
|
||||||
pFSServices->Mkdir( newdir );
|
|
||||||
}
|
|
||||||
catch( eFSServices e )
|
|
||||||
{
|
|
||||||
ASSERT( false );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //FIXED_TRV_TEST_SUITE
|
//#endif //FIXED_TRV_TEST_SUITE
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ void TestHex();
|
||||||
try \
|
try \
|
||||||
{ \
|
{ \
|
||||||
x; \
|
x; \
|
||||||
ASSERT( false ); \
|
TEST( false ); \
|
||||||
} catch( error& ) {}
|
} catch( error& ) {}
|
||||||
|
|
||||||
void TestTWLocale()
|
void TestTWLocale()
|
||||||
|
@ -80,21 +80,21 @@ void TestAtoi()
|
||||||
//
|
//
|
||||||
cTWLocale::InitGlobalLocale();
|
cTWLocale::InitGlobalLocale();
|
||||||
n = cTWLocale::FormatNumber( str );
|
n = cTWLocale::FormatNumber( str );
|
||||||
ASSERT( n == 123456 );
|
TEST( n == 123456 );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try formatting with "" locale
|
// Try formatting with "" locale
|
||||||
//
|
//
|
||||||
std::locale::global( std::locale("") );
|
std::locale::global( std::locale("") );
|
||||||
n = cTWLocale::FormatNumber( str );
|
n = cTWLocale::FormatNumber( str );
|
||||||
ASSERT( n == 123456 );
|
TEST( n == 123456 );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try formatting with "C" locale
|
// Try formatting with "C" locale
|
||||||
//
|
//
|
||||||
std::locale::global( std::locale("") );
|
std::locale::global( std::locale("") );
|
||||||
n = cTWLocale::FormatNumber( str );
|
n = cTWLocale::FormatNumber( str );
|
||||||
ASSERT( n == 123456 );
|
TEST( n == 123456 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestItoa()
|
void TestItoa()
|
||||||
|
@ -147,7 +147,7 @@ void TestRoundtrip()
|
||||||
strOut = cTWLocale::FormatNumber( cTWLocale::FormatNumber( strIn ), strOut );
|
strOut = cTWLocale::FormatNumber( cTWLocale::FormatNumber( strIn ), strOut );
|
||||||
// don't know if string will be the same due to possible changes in formatting from locale
|
// don't know if string will be the same due to possible changes in formatting from locale
|
||||||
// ASSERT( strOut == strIn ); <---- can't do this ^^^
|
// ASSERT( strOut == strIn ); <---- can't do this ^^^
|
||||||
ASSERT( 123456 == cTWLocale::FormatNumber( strOut ) );
|
TEST( 123456 == cTWLocale::FormatNumber( strOut ) );
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -156,7 +156,7 @@ void TestRoundtrip()
|
||||||
int32 nIn = 654321;
|
int32 nIn = 654321;
|
||||||
int32 nOut;
|
int32 nOut;
|
||||||
nOut = cTWLocale::FormatNumber( cTWLocale::FormatNumber( nIn, strIn ) );
|
nOut = cTWLocale::FormatNumber( cTWLocale::FormatNumber( nIn, strIn ) );
|
||||||
ASSERT( nOut == nIn );
|
TEST( nOut == nIn );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ void TestFlags()
|
||||||
//
|
//
|
||||||
TSTRING str = _T("FF");
|
TSTRING str = _T("FF");
|
||||||
int n = cTWLocale::FormatNumber( str, std::ios_base::hex );
|
int n = cTWLocale::FormatNumber( str, std::ios_base::hex );
|
||||||
ASSERT( n == 0xFF );
|
TEST( n == 0xFF );
|
||||||
|
|
||||||
//
|
//
|
||||||
// bad number for dec
|
// bad number for dec
|
||||||
|
@ -184,21 +184,21 @@ void TestFlags()
|
||||||
//
|
//
|
||||||
TSTRING strOct = _T("0712");
|
TSTRING strOct = _T("0712");
|
||||||
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
||||||
ASSERT( n == 0712 );
|
TEST( n == 0712 );
|
||||||
|
|
||||||
//
|
//
|
||||||
// oct again
|
// oct again
|
||||||
//
|
//
|
||||||
strOct = _T("00712");
|
strOct = _T("00712");
|
||||||
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
||||||
ASSERT( n == 0712 );
|
TEST( n == 0712 );
|
||||||
|
|
||||||
//
|
//
|
||||||
// oct again again
|
// oct again again
|
||||||
//
|
//
|
||||||
strOct = _T("712");
|
strOct = _T("712");
|
||||||
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
n = cTWLocale::FormatNumber( strOct, std::ios_base::oct );
|
||||||
ASSERT( n == 0712 );
|
TEST( n == 0712 );
|
||||||
|
|
||||||
//
|
//
|
||||||
// try bad oct
|
// try bad oct
|
||||||
|
@ -212,16 +212,16 @@ void TestHex()
|
||||||
TSTRING str;
|
TSTRING str;
|
||||||
|
|
||||||
str = cTWLocale::FormatNumberAsHex( 0x1234 );
|
str = cTWLocale::FormatNumberAsHex( 0x1234 );
|
||||||
ASSERT( str == _T("1234") );
|
TEST( str == _T("1234") );
|
||||||
|
|
||||||
str = cTWLocale::FormatNumberAsHex( 16 );
|
str = cTWLocale::FormatNumberAsHex( 16 );
|
||||||
ASSERT( str == _T("10") );
|
TEST( str == _T("10") );
|
||||||
|
|
||||||
str = cTWLocale::FormatNumberAsHex( 0x12344321 );
|
str = cTWLocale::FormatNumberAsHex( 0x12344321 );
|
||||||
ASSERT( str == _T("12344321") );
|
TEST( str == _T("12344321") );
|
||||||
|
|
||||||
str = cTWLocale::FormatNumberAsHex( 0xFFFFFFFF );
|
str = cTWLocale::FormatNumberAsHex( 0xFFFFFFFF );
|
||||||
ASSERT( str == _T("FFFFFFFF") || str == _T("ffffffff") );
|
TEST( str == _T("FFFFFFFF") || str == _T("ffffffff") );
|
||||||
}
|
}
|
||||||
#endif//DOESNTWORK
|
#endif//DOESNTWORK
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "tw/stdtw.h"
|
#include "tw/stdtw.h"
|
||||||
#include "tw/twutil.h"
|
#include "tw/twutil.h"
|
||||||
|
#include "util/fileutil.h"
|
||||||
#include "twtest/test.h"
|
#include "twtest/test.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
@ -45,8 +46,6 @@ std::string WideToNarrow( const TSTRING& strWide );
|
||||||
|
|
||||||
void TestTWUtil()
|
void TestTWUtil()
|
||||||
{
|
{
|
||||||
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
|
||||||
#if 0
|
|
||||||
// TODO: we should test more than the file exists stuff, but that
|
// TODO: we should test more than the file exists stuff, but that
|
||||||
// is all I need to do for right now.
|
// is all I need to do for right now.
|
||||||
cDebug d("TestTWUtil");
|
cDebug d("TestTWUtil");
|
||||||
|
@ -57,7 +56,7 @@ void TestTWUtil()
|
||||||
d.TraceAlways("Testing FileExists() and FileWritable()\n");
|
d.TraceAlways("Testing FileExists() and FileWritable()\n");
|
||||||
|
|
||||||
// assuming the current dir is writable, this test should succeed
|
// assuming the current dir is writable, this test should succeed
|
||||||
TEST(cTWUtil::FileWritable(_T("afilethatdoesnotexist.tmp")) == true);
|
TEST(cFileUtil::FileWritable(_T("afilethatdoesnotexist.tmp")) == true);
|
||||||
|
|
||||||
TSTRING tmpDir = TEMP_DIR;
|
TSTRING tmpDir = TEMP_DIR;
|
||||||
tmpDir += _T("/fileexistdir");
|
tmpDir += _T("/fileexistdir");
|
||||||
|
@ -65,43 +64,42 @@ void TestTWUtil()
|
||||||
tmpFN += _T("/fileexiststest.tmp");
|
tmpFN += _T("/fileexiststest.tmp");
|
||||||
|
|
||||||
// make a subdir in the TEMP_DIR
|
// make a subdir in the TEMP_DIR
|
||||||
_tmkdir(tmpDir.c_str(), 0700);
|
mkdir(tmpDir.c_str(), 0700);
|
||||||
_tchmod(tmpDir.c_str(), 0700);
|
chmod(tmpDir.c_str(), 0700);
|
||||||
|
|
||||||
// make sure file is not there
|
// make sure file is not there
|
||||||
_tchmod(tmpFN.c_str(), 0777);
|
chmod(tmpFN.c_str(), 0777);
|
||||||
_tunlink(tmpFN.c_str());
|
unlink(tmpFN.c_str());
|
||||||
|
|
||||||
// make sure exists tests false, writable is true
|
// make sure exists tests false, writable is true
|
||||||
// and checking writable should not create the file
|
// and checking writable should not create the file
|
||||||
TEST(cTWUtil::FileExists(tmpFN) == false);
|
TEST(cFileUtil::FileExists(tmpFN) == false);
|
||||||
TEST(cTWUtil::FileWritable(tmpFN) == true)
|
TEST(cFileUtil::FileWritable(tmpFN) == true)
|
||||||
TEST(cTWUtil::FileExists(tmpFN) == false);
|
TEST(cFileUtil::FileExists(tmpFN) == false);
|
||||||
|
|
||||||
// make the dir read only and make sure write tests false
|
// make the dir read only and make sure write tests false
|
||||||
// windows fails this test, perhaps because I am an administrator?
|
// windows fails this test, perhaps because I am an administrator?
|
||||||
_tchmod(tmpDir.c_str(), 0500);
|
chmod(tmpDir.c_str(), 0500);
|
||||||
TEST(cTWUtil::FileWritable(tmpFN) == false);
|
TEST(cFileUtil::FileWritable(tmpFN) == false);
|
||||||
_tchmod(tmpDir.c_str(), 0700);
|
chmod(tmpDir.c_str(), 0700);
|
||||||
|
|
||||||
// create the file
|
// create the file
|
||||||
{
|
{
|
||||||
std::ofstream ostr(WideToNarrow(tmpFN).c_str());
|
std::ofstream ostr(WideToNarrow(tmpFN).c_str());
|
||||||
ostr << "Hey there.\n";
|
ostr << "Hey there.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// test a read only file
|
// test a read only file
|
||||||
_tchmod(tmpFN.c_str(), 0400);
|
chmod(tmpFN.c_str(), 0400);
|
||||||
TEST(cTWUtil::FileWritable(tmpFN) == false);
|
TEST(cFileUtil::FileWritable(tmpFN) == false);
|
||||||
|
|
||||||
// test a writable file
|
// test a writable file
|
||||||
_tchmod(tmpFN.c_str(), 0666);
|
chmod(tmpFN.c_str(), 0666);
|
||||||
TEST(cTWUtil::FileWritable(tmpFN) == true);
|
TEST(cFileUtil::FileWritable(tmpFN) == true);
|
||||||
|
|
||||||
// delete the test file and dir
|
// delete the test file and dir
|
||||||
_tunlink(tmpFN.c_str());
|
unlink(tmpFN.c_str());
|
||||||
_tunlink(tmpDir.c_str());
|
unlink(tmpDir.c_str());
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string WideToNarrow( const TSTRING& strWide )
|
std::string WideToNarrow( const TSTRING& strWide )
|
||||||
|
|
Loading…
Reference in New Issue