Location: PHPKode > scripts > dbff > dbff/dbff_tests.php
<?php
/* dbff test suite and simple samples :) / 0.98 jm */
require_once 'dbff.php';

print '<html><body>';
///////////////////////////
 if (file_exists('test')) {
    print '<br>File test exist !!!!! Will not overwrite existing file! delete it manually before test run!';
    exit;
 }
///////////////////////////
$test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'cfld'	   =>array('size'=>40, 'chkNN'=>true,    'chkMinLen'=>15),
 'ifld'	   =>array('size'=>10, 'type'=>'INT',    'chkNN'=>true, 'chkMin'=>9),
 'nfld'	   =>array('size'=>10, 'type'=>'NUMBER', 'chkNN'=>true, 'chkMax'=>999999),
 'lfld'	   =>array('size'=>10, 'type'=>'NUMBER', 'chkLIST'=>array (1,2,3)),
 'em'	   =>array('size'=>50, 'type'=>'EMAIL'),
 'dfld'    =>array('size'=>8,  'type'=>'DATE','default'=>'now'),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME'));

 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->read();
 $d = array ('now',              '20060305',    '20050812',   '23-May-03',
             '5/jan/2007',       '1-aug-2005',  '1-jan-1902', '31-december-2000',
             '11 january 1906',  '6 feb 1992',  '2006-07-22', '2005/03/2',
             '1991-mar-31',      '31-mar-1991', '1991-march-31',
             '25-JAN-2007',      '10.Aug.2005', '23/10/2005', '31-dec-2037',
             '3-Jun-97',         '93-Jun-5',    '20010100',   '1-JAN-2039',
             '32-december-2000',  '1899.dec.22', '19990001',   '32-May-2002' ); /* 20 valid 7 invalid */

 print '<br>String to date conversion tests, 20 valid 7 invalid';
 $i=0;
 while ($x = current($d)) {
   $i++;
   $res =  $db->str2ts($x);
   if (is_null($res)) print "<br>$i) $x  ...... invalid";
   else               print "<br>$i) $x =>".date('Y-M-d H:i:s',$res);
  next($d);
 }

 $d = array ('now',  '20060305192233',  '11-january-1906  12:23:34', '23/10/2005 11:21:31',
             '15-Mar-2001    11:12:03', '5-jan-2007  05:15:01',      '1-aug-2005 1:01:31',
             '12:53 15-Mar-2001',       '11:33:44 11-january-1906',  '31-december-2000 23:23',
             '2006-07-22 12:23:34',     '2005/03/2 11:21:31',        '25-JAN-2007  05:15:01pm',
             '10-Aug-2005 1:01AM',      '12:53 29-feb-2001',         '1999-dec-22 51:21:31',
            '20060305116733',           '20060305252233',            '20060305192299' ); /* 14 val 5 inv */

 print '<br><br>String to datetime conversion tests, 14 valid 5 invalid';
 $i=0;
 while ($x = current($d)) {
   $i++;
   $res =  $db->str2ts($x);
   if (is_null($res)) print "<br>$i) $x  ...... invalid";
   else               print "<br>$i) $x =>".date('Y-M-d H:i:s',$res);
  next($d);
 }

print '<br><br>Validation tests set 1, should all be ok';

 $dr = array ('1 Correct record', 12345,  234.56, 1, 'hide@address.com', '10-aug-2000', '20-sep-2001 12:22:33');
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('2 Ok email test record', 123, 36, NULL, 'hide@address.com', '10-aug-2000', '20-10-2001 12:22:33');
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('3 Ok List test record', 123, 1234, 3, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

print '<br><br>Validation tests set 1, these should fail';

 $dr = array ('10 Missing field record', 234.56, '10-aug-2000', '20-sep-2001 12:22:33');
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('11 Int test record', '12a45',  234.56, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('12 Int test record', 12.45,  234.56, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('13 Number test record', 12345,  '234:56', NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('14 Number test record', 12345,  'a2356', NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('15 char length test record 123456789012345', 123, 36, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('16 err email test record', 123, 36, NULL, 'aabc.com', '10-aug-2000', '20-10-2001 12:22:33');
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('17 min test record', 3, 36, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('18 max test record', 123, 1000000, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('19 minlen test', 123, 1234, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('20 Err List test record', 123, 1234, 5, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 unset($db);

print '<br><br>Validation tests set 2, should be ok';
 $test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'cfld'	   =>array('size'=>40, 'chkNN'=>true,    'chkMinLen'=>15),
 'ifld'	   =>array('size'=>10, 'type'=>'INT',    'chkNN'=>true),
 'nfld'	   =>array('size'=>10, 'type'=>'NUMBER', 'chkNN'=>true),
 'lfld'	   =>array('size'=>10, 'type'=>'NUMBER'),
 'em'	   =>array('size'=>50, 'type'=>'EMAIL'),
 'dfld'    =>array('size'=>8,  'type'=>'DATE','default'=>'now'),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME'));

/*     if (isset($atts['CHKMOD10']) && !chkMod10($atts['CHKMOD10'])) {
       if (isset($atts['CHKFMT']) && sprintf($vrec[$i],$atts['CHKFMT'])<>$vrec[$i]) {
*/
 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->read();

 $dr = array ('30 Int  zero test record', 0,  234.56, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('31 Int  zero test record', '0',  234.56, NULL, NULL, NULL, NULL); // string zero ?? from forms
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('32 Int  zero test record', '0000',  234.56, NULL, NULL, NULL, NULL); // string zero ?? from forms
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('33 Number zero test record', 12345,  0.0, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 print '<br><br>Validation tests set 2, should fail';
 $dr = array ('34 Int  zero test record', '0.0',  234.56, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 $dr = array ('35 Int  zero test record', '0.0000001',  234.56, NULL, NULL, NULL, NULL);
 if ($db->validateRec($dr)) print '<br>Test record '.$dr[0]. ' Passed ok';
 else  print '<br>Test record '.$dr[0]. " did NOT validate: $dbfferr";

 unset($db);
 unset ($dr);

 print '<br><br>Insert tests set 3, should be ok';
 $test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'cfld'	   =>array('size'=>40, 'chkNN'=>true),
 'ifld'	   =>array('size'=>10, 'type'=>'INT',    'chkNN'=>true),
 'nfld'	   =>array('size'=>10, 'type'=>'NUMBER', 'chkNN'=>true),
 'pkfld'   =>array('size'=>10, 'pk'=>'sequence'),
 'em'	   =>array('size'=>50, 'type'=>'EMAIL'),
 'dfld'    =>array('size'=>8,  'type'=>'DATE','default'=>'now'),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME'));

 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->read();

 $tr = array ('This', 1,  2.5, 1, 'hide@address.com', '10-aug-2000', '20-sep-2001 12:22:33');
 print '<br>';
 for ($i=1; $i<12; $i++) {
    $y = 2000+$i;
    $tr[0] = 'Insert record number '.$i;
    $tr[1] += $i;
    $tr[2] +=$i;
    $tr[5] = $i.'-'.$i.'-'.$y;
    if ($db->insert($tr)) print " Insert rec $i ok ";
    else print "<br>Insert rec $i failed $dbfferr";
 }
 
 print "<br>The following tests should be error free";

 $hits = $db->select();
 print "<br>$hits records selected";
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[3] $rec[0] $rec[1] $rec[2] $rec[5]";

 print '<br><br>Select test set 5 date between 31-dec-2002 and 1-jan-2007';
 $hits = $db->select('dfld','31-dec-2002','GT');
 $hits = $db->reselect('dfld','1-jan-2007','LT');
 print "<br>$hits records selected";
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[3] $rec[0] $rec[1] $rec[2] $rec[5]";

 print '<br><br>Update test set 6, set ifld to zero';
 $hits = $db->updateSelected('ifld',0);
 print "<br>$hits records updated";
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[3] $rec[0] $rec[1] $rec[2] $rec[5]";

 print '<br><br>print with field names test set 7, same data as before';
 while ($rec = $db->selectGet()) print "<br>".$rec['T.CFLD'].' '.$rec['T.IFLD'].' '.
      $rec['T.NFLD'].' '.$rec['T.DFLD'];

 print '<br><br>Delete test set 8, print the rest';
 $hits = $db->deleteSelected();
 print "<br>$hits records deleted";
 $hits = $db->select();
 print "<br>$hits records selected";
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[3] $rec[0] $rec[1] $rec[2] $rec[5]";

 if (!empty($db->errstk)) print_r($db->errstk);

 unset($db);

 print '<br><br>Primary/Unique key tests set 9, should fail at duplicate keys and generated dates';
 $test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'cfld'	   =>array('size'=>40, 'chkNN'=>true),
 'ukfld'   =>array('size'=>10, 'type'=>'INT',    'uk'=>true),
 'nfld'	   =>array('size'=>10, 'type'=>'NUMBER', 'chkNN'=>true),
 'pkfld'   =>array('size'=>10, 'type'=>'INT',    'pk'=>true),
 'em'	   =>array('size'=>50, 'type'=>'EMAIL'),
 'dfld'    =>array('size'=>8,  'type'=>'DATE','default'=>'now'),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME'));

 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->read();

 $dr = array ('Pk/uk test', 1,  2.5, 1, 'hide@address.com', '10-aug-2000', '20-sep-2001 12:22:33');
 print '<br>';
 for ($i=1; $i<12; $i++) {
    $y = 2000+$i;
    $dr[0] = 'Insert record number '.$i; $dr[1] += $i; $dr[2] =$i; $dr[3] =$i; $dr[5] = $i.'-'.$i.'-'.$y;
    if ($db->insert($dr)) print " Insert rec $i ok ";
    else print "<br>Insert rec $i failed $dbfferr";
 }
 for ($i=1; $i<20; $i+=2) {
    $y = 2000+$i;
    $dr[0] = 'Insert record number '.$i; $dr[1] = $i+1; $dr[2] +=$i; $dr[3] =$i; $dr[5] = $i.'-'.$i.'-'.$y;
    if ($db->insert($dr)) print " Insert rec $i ok ";
    else print "<br>Insert rec $i failed $dbfferr";
 }
 $hits = $db->select();
 print "<br>$hits records selected";
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[3] $rec[0] $rec[1] $rec[5]";

 unset($db);

 print '<br><br>Write tests 10000 record, test set 10';
 $test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'pkfld'   =>array('size'=>10, 'type'=>'INT',    'pk'=>'sequence'),
 'ukfld'   =>array('size'=>10, 'type'=>'INT',    'uk'=>true),
 'nfld'	   =>array('size'=>16, 'type'=>'NUMBER', 'chkNN'=>true),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME','default'=>'now'));
 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->changelog  = FALSE;

 $dr = array (0,0,0,NULL);
 print '<br>Started: '.$db->str2datetime('now');
 for ($i=1; $i<10000; $i++) {
    $j +=$i;
    $dr[1] = $i; $dr[2] =$j/($i*3);
    if (!$db->insert($dr)) print "<br>Insert rec $i failed $dbfferr";
 }
 if (!$db->commit()) print $dbfferr;

 print ' Written at: '.$db->str2datetime('now');
 if (!empty($db->errstk)) print_r($db->errstk);

 unset($db);

 print '<br><br>Read tests 10000 record, test set 11';
 $test_def = array ( 'TABLE_NAME'=>'T', 'FILE_NAME'=>'test',
 'pkfld'   =>array('size'=>10, 'type'=>'INT',    'pk'=>'sequence'),
 'ukfld'   =>array('size'=>10, 'type'=>'INT',    'uk'=>true),
 'nfld'	   =>array('size'=>16, 'type'=>'NUMBER', 'chkNN'=>true),
 'dtfld'   =>array('size'=>14, 'type'=>'DATETIME','default'=>'now'));

 $db             = new dbff;
 $db->recdef     = $test_def;
 $db->changelog  = FALSE;

 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select();
 print " All  $hits records selected";
 print ' Read at: '.$db->str2datetime('now');

 print "<br>Search records between 1000 and 2000 in fld 2 ";
 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select('ukfld',1000,'ge');
 $hits = $db->reselect('ukfld',2000,'le');
 print " $hits records selected";
 print ' Selected at: '.$db->str2datetime('now');

 print "<br>Search one record 1111 in fld 2 ";
 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select('ukfld',1111);
 print " $hits records selected";
 print ' Selected at: '.$db->str2datetime('now');

 print "<br>Search records >555.6 and < 558.4 in num fld 3 and show sort result";
 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select('nfld',555.6,'gt');
 $hits = $db->reselect('nfld',558.4,'lt');
 print " $hits records selected";
 print ' Selected at: '.$db->str2datetime('now');

 $hits = $db->selectSort('nfld');
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[0] $rec[2]";

 print "<br><br>Update all records one at the time with new datetime in num fld 4";
 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select();
 $ts = time();
 while ($rec = $db->selectGet(FALSE)) {
    $ts -= ($rec[1] * 10);
    $d = date('YmdHis',$ts);
    $newrec = array($rec[0], $rec[1], $rec[2], $d);
    if (!$db->updByRn($db->getSelectedRn(),$newrec)) print "<br>Update failed $dbfferr";
 }
 print ' Updated at: '.$db->str2datetime('now');
 print "<br>Write update";
 $db->commit();
 print ' at: '.$db->str2datetime('now');

 print "<br><br>Search records with dates in jan 1991 and show sort result";
 print '<br>Started: '.$db->str2datetime('now');
 $hits = $db->select('dtfld','1-jan-1991','gt');
 $hits = $db->reselect('dtfld','31-jan-1991','lt');
 print " $hits records selected";
 print ' Selected at: '.$db->str2datetime('now');

 $hits = $db->selectSort('dtfld');
 while ($rec = $db->selectGet(FALSE)) print "<br>$rec[0] $rec[3]";

 if (!empty($db->errstk)) print_r($db->errstk);
 $db->rollback();

 if (file_exists('test')) unlink('test');
 print '<br>End test, check errors<br>';

print '</body></html>';
exit;
?>
Return current item: dbff