home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 Mobile
/
Chip_Mobile_2001.iso
/
palm
/
business
/
printcar
/
printcar.exe
/
tests
/
DB
/
DatabaseTest.cc
< prev
next >
Wrap
C/C++ Source or Header
|
2000-06-05
|
4KB
|
145 lines
//
// $Id: DatabaseTest.cc,v 1.2 2000/06/04 23:23:48 sergey Exp $
//
#include <Pilot.h>
#include <stdio.h>
#include "../Test.h"
#include "DB/Database.h"
#include "DB/GenericRecord.h"
#include "Util/Error.h"
namespace DB
{
class NullErrorHandler: public Util::ErrorHandler
{
public:
virtual void reportError(bool fatal, const char* message) {}
};
//--------------------------------------------------------------------------
class DatabaseTest: public Test
{
public:
virtual const char* name() const { return "DatabaseTest"; }
virtual void runTest()
{
NullErrorHandler nullErrorHandler;
Util::ErrorHandler& oldErrorHandler = Util::Error::errorHandler();
Util::Error::setErrorHandler(nullErrorHandler);
testNullDatabase();
testDatabase();
testDatabaseNullRecord();
testDatabaseRecord();
Util::Error::setErrorHandler(oldErrorHandler);
}
void testNullDatabase()
{
Database db;
testAssert(!db.isOpened());
testAssert(db.recordCount() == 0);
db.close();
testAssert(!db.isOpened());
testAssert(!db.open(0, "qwerty", dmModeReadOnly));
testAssert(!db.isOpened());
}
void testDatabase()
{
Database db;
testAssert(db.open(0, "AddressDB", dmModeReadOnly));
testAssert(db.isOpened());
if (db.recordCount() == 0)
{
testAssertComment(false, "AddressDB is empty!");
return;
}
db.close();
testAssert(!db.isOpened());
testAssert(db.open(0, "AddressDB", dmModeReadOnly));
}
void testDatabaseNullRecord()
{
GenericRecord rec1;
testAssert(rec1.data() == 0 && rec1.size() == 0 && rec1.index() == -1);
testAssert(!rec1.restore(0, 0));
testAssert(rec1.data() == 0 && rec1.size() == 0 && rec1.index() == -1);
GenericRecord rec2;
rec2 = rec1;
testAssert(rec2.data() == 0 && rec2.size() == 0 && rec2.index() == -1);
GenericRecord rec3(rec2);
testAssert(rec3.data() == 0 && rec3.size() == 0 && rec3.index() == -1);
}
void testDatabaseRecord()
{
Database db;
testAssert(db.open(0, "AddressDB", dmModeReadOnly));
if (db.recordCount() == 0)
{
testAssertComment(false, "AddressDB is empty!");
return;
}
//***
testAssert(db.isRecord(0));
testAssert(db.isRecord(db.recordCount()-1));
testAssert(!db.isRecord(-1));
testAssert(!db.isDeletedRecord(-1));
testAssert(!db.isDeletedRecord(0)); // assumed that first recors is active
//***
GenericRecord rec1;
testAssert(!db.readRecord(-1, rec1));
//***
testAssert(db.readRecord(0, rec1));
testAssert(rec1.data() != 0 && rec1.size() > 0 && rec1.index() == 0);
//***
GenericRecord rec2 = rec1;
testAssert(rec2.index() == rec1.index());
//***
rec1 = GenericRecord();
testAssert(rec1.index() == -1);
//***
testAssert(db.readRecord(0, rec1));
testAssert(rec1.data() != 0 && rec1.size() > 0 && rec1.index() == 0);
}
};
}
Test& GetDatabaseTest()
{
static DB::DatabaseTest test;
return test;
}