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 >
C/C++ Source or Header  |  2000-06-05  |  4KB  |  145 lines

  1. //
  2. //  $Id: DatabaseTest.cc,v 1.2 2000/06/04 23:23:48 sergey Exp $
  3. //
  4.  
  5. #include <Pilot.h>
  6. #include <stdio.h>
  7. #include "../Test.h"
  8. #include "DB/Database.h"
  9. #include "DB/GenericRecord.h"
  10. #include "Util/Error.h"
  11.  
  12.  
  13. namespace DB
  14. {
  15.     class NullErrorHandler: public Util::ErrorHandler
  16.     {
  17.     public:
  18.         virtual void reportError(bool fatal, const char* message) {}
  19.     };
  20.  
  21.     //--------------------------------------------------------------------------
  22.  
  23.     class DatabaseTest: public Test
  24.     {
  25.     public:
  26.         virtual const char* name() const { return "DatabaseTest"; }
  27.  
  28.         virtual void runTest()
  29.         {
  30.             NullErrorHandler nullErrorHandler;
  31.             Util::ErrorHandler& oldErrorHandler = Util::Error::errorHandler();
  32.             Util::Error::setErrorHandler(nullErrorHandler);
  33.  
  34.             testNullDatabase();
  35.             testDatabase();
  36.  
  37.             testDatabaseNullRecord();
  38.             testDatabaseRecord();
  39.  
  40.             Util::Error::setErrorHandler(oldErrorHandler);
  41.         }
  42.  
  43.         void testNullDatabase()
  44.         {
  45.             Database db;
  46.             testAssert(!db.isOpened());
  47.             testAssert(db.recordCount() == 0);
  48.  
  49.             db.close();
  50.             testAssert(!db.isOpened());
  51.  
  52.             testAssert(!db.open(0, "qwerty", dmModeReadOnly));
  53.             testAssert(!db.isOpened());
  54.         }
  55.  
  56.         void testDatabase()
  57.         {
  58.             Database db;
  59.  
  60.             testAssert(db.open(0, "AddressDB", dmModeReadOnly));
  61.             testAssert(db.isOpened());
  62.             if (db.recordCount() == 0)
  63.             {
  64.                 testAssertComment(false, "AddressDB is empty!");
  65.                 return;
  66.             }
  67.  
  68.             db.close();
  69.             testAssert(!db.isOpened());
  70.  
  71.             testAssert(db.open(0, "AddressDB", dmModeReadOnly));
  72.         }
  73.  
  74.  
  75.         void testDatabaseNullRecord()
  76.         {
  77.             GenericRecord rec1;
  78.             testAssert(rec1.data() == 0 && rec1.size() == 0 && rec1.index() == -1);
  79.  
  80.             testAssert(!rec1.restore(0, 0));
  81.             testAssert(rec1.data() == 0 && rec1.size() == 0 && rec1.index() == -1);
  82.  
  83.             GenericRecord rec2;
  84.             rec2 = rec1;
  85.             testAssert(rec2.data() == 0 && rec2.size() == 0 && rec2.index() == -1);
  86.  
  87.             GenericRecord rec3(rec2);
  88.             testAssert(rec3.data() == 0 && rec3.size() == 0 && rec3.index() == -1);
  89.         }
  90.  
  91.  
  92.         void testDatabaseRecord()
  93.         {
  94.             Database db;
  95.             testAssert(db.open(0, "AddressDB", dmModeReadOnly));
  96.  
  97.             if (db.recordCount() == 0)
  98.             {
  99.                 testAssertComment(false, "AddressDB is empty!");
  100.                 return;
  101.             }
  102.  
  103.             //***
  104.  
  105.             testAssert(db.isRecord(0));
  106.             testAssert(db.isRecord(db.recordCount()-1));
  107.             testAssert(!db.isRecord(-1));
  108.  
  109.             testAssert(!db.isDeletedRecord(-1));
  110.             testAssert(!db.isDeletedRecord(0));     // assumed that first recors is active
  111.  
  112.             //***
  113.  
  114.             GenericRecord rec1;
  115.             testAssert(!db.readRecord(-1, rec1));
  116.  
  117.             //***
  118.  
  119.             testAssert(db.readRecord(0, rec1));
  120.             testAssert(rec1.data() != 0 && rec1.size() > 0 && rec1.index() == 0);
  121.  
  122.             //***
  123.  
  124.             GenericRecord rec2 = rec1;
  125.             testAssert(rec2.index() == rec1.index());
  126.  
  127.             //***
  128.  
  129.             rec1 = GenericRecord();
  130.             testAssert(rec1.index() == -1);
  131.  
  132.             //***
  133.  
  134.             testAssert(db.readRecord(0, rec1));
  135.             testAssert(rec1.data() != 0 && rec1.size() > 0 && rec1.index() == 0);
  136.         }
  137.     };
  138. }
  139.  
  140. Test& GetDatabaseTest()
  141. {
  142.     static DB::DatabaseTest test;
  143.     return test;
  144. }
  145.