\n".$Msg;
}
function DieTrace($Msg){
die("
\n".$Msg);
}
define('ADODB_ASSOC_CASE',0);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$db = ADONewConnection("mssqlnative"); // create a connection
$db->Connect('127.0.0.1','adodb','natsoft','northwind') or die('Fail');
//==========================
// This code tests GenId
//==========================
function TestGenID() {
global $db;
$PrevDebug=$db->debug; $db->debug=false; // Hide debug if present as Drop can cause errors
$db->Execute("drop sequence MySequence1;
drop sequence MySequence2;
drop sequence MySequence3;
drop table MySequence1Emul;
drop table MySequence2Emul;
drop table MySequence3Emul;
");
$db->debug=$PrevDebug; // Restore debug Initial State
$ID1a=$db->GenID("MySequence1");
$ID2a=$db->GenID("MySequence2");
$ID1b=$db->GenID("MySequence1");
$ID2b=$db->GenID("MySequence2");
Trace("ID1a=$ID1a,ID1b=$ID1b, ID2a=$ID2a,ID2b=$ID2b");
if(intval($ID1a)+1!==intval($ID1b)) DieTrace(sprintf("ERROR : Second value obtains by MySequence1 should be %d but is %d",$ID1a+1,$ID1b));
$db->CreateSequence("MySequence3",100);
$ID2b=$db->GenID("MySequence3");
if(intval($ID2b)!==100) DieTrace(sprintf("ERROR : Value from MySequence3 should be 100 but is %d",$ID2b));
$db->mssql_version=10; // Force to simulate Pre 2012 (without sequence) behavior
$ID1a=$db->GenID("MySequence1Emul");
$ID2a=$db->GenID("MySequence2Emul");
$ID1b=$db->GenID("MySequence1Emul");
$ID2b=$db->GenID("MySequence2Emul");
echo "ID1a=$ID1a,ID1b=$ID1b, ID2a=$ID2a,ID2b=$ID2b
\n";
if(intval($ID1a+1)!==intval($ID1b)) DieTrace(sprintf("ERROR : Second value obtains by MySequence1Emul should be %d but is %d",$ID1a+1,$ID1b));
$db->CreateSequence("MySequence3Emul",100);
$ID2b=$db->GenID("MySequence3Emul");
if(intval($ID2b)!==100) DieTrace(sprintf("ERROR : Value from MySequence3Emul should be 100 but is %d",$ID2b));
} //TestGenID()
//==========================
// This code tests SQLDate
//==========================
function TestSQLDate()
{
global $db;
$res = $db->GetRow("select testdate,"
. $db->SQLDate("d/m/Y", "testdate") . " FR4,"
. $db->SQLDate("d/m/y", "testdate") . " FR4b,"
. $db->SQLDate("d/m/Y", "NULL") . " nullFR4,"
. $db->SQLDate("m/d/Y", "testdate") . " US4,"
. $db->SQLDate("m/d/y", "testdate") . " US4b,"
. $db->SQLDate("m-d-Y", "testdate") . " USD4,"
. $db->SQLDate("m-d-y", "testdate") . " USD4b,"
. $db->SQLDate("Y.m.d", "testdate") . " ANSI4,"
. $db->SQLDate("d.m.Y", "testdate") . " GE4,"
. $db->SQLDate("d.m.y", "testdate") . " GE4b,"
. $db->SQLDate("d-m-Y", "testdate") . " IT4,"
. $db->SQLDate("d-m-y", "testdate") . " IT4b,"
. $db->SQLDate("Y/m/d", "testdate") . " Japan4,"
. $db->SQLDate("y/m/d", "testdate") . " Japan4b,"
. $db->SQLDate("H:i:s", "testdate") . " timeonly,"
. $db->SQLDate("d m Y", "testdate") . " Space4," // Is done by former method
. $db->SQLDate("d m Y", "NULL") . " nullSpace4,"
. $db->SQLDate("m-d-Y", "testdatesmall") . " nowUSdash4,"
. "null from (select convert(datetime,'2016-12-17 18:55:30.590' ,121) testdate,
convert(datetime,'2016-01-01 18:55:30.590' ,121) testdatesmall,null nulldate) q "
);
$TestRes=array(
"fr4"=>"17/12/2016",
"fr4b"=>"17/12/2016",
"nullfr4"=>null,
"us4"=>"12/17/2016",
"us4b"=>"12/17/2016",
"ansi4"=>"2016.12.17",
"ge4"=>"17.12.2016",
"ge4b"=>"17.12.2016",
"it4"=>"17-12-2016",
"it4b"=>"17-12-2016",
"japan4"=>"2016/12/17",
"japan4b"=>"2016/12/17",
"space4"=>"17 12 2016",
"nullspace4"=>null,
"timeonly"=>"18:55:30",
);
var_dump($res);
foreach($TestRes as $k=>$v)
if($v!==$res[$k])
DieTrace(sprintf("ERROR : Expected for '%s' is '%s', but got '%s'",$k,$v,$res[$k]));
} //TestSQLDate()
//==========================
// This code is the tests RUNNER
//==========================
$db->debug=true;
// $ToTest Contains * or the name of the test function to RUN
$ToTest="*";
//$ToTest="TestSQLDate";
// Here the generic test runner, will launch all functions of the current file beginning by "test", should not be changed use $ToTest
$functions = get_defined_functions();
$functions = $functions['user'];
foreach( $functions as $f) {
$refFunc = new ReflectionFunction($f);
if(($refFunc->getFileName()==__FILE__)&&(substr($f,0,4)=='test'))
if(($ToTest=='*')||(strtolower($ToTest)==$f))
{
Trace("-------- Launch Test : $f ------------------");
$f();
}
}
Trace("=========== End of tests Without Error. ===================");