summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorlaurent-n <ln@altidev.com>2018-06-11 11:27:23 +0200
committerDamien Regad <dregad@mantisbt.org>2018-06-11 11:27:23 +0200
commit20d6604e04bd04f2d0cc312f32c730c6f82f115c (patch)
treee44133c575f94fce13607950b2be7454c61428c0 /tests
parent1c67572ec40a5151226c82cd2ab8d505646d1a70 (diff)
downloadadodb-20d6604e04bd04f2d0cc312f32c730c6f82f115c.tar.gz
adodb-20d6604e04bd04f2d0cc312f32c730c6f82f115c.tar.bz2
adodb-20d6604e04bd04f2d0cc312f32c730c6f82f115c.zip
mssql: Add Convert on SQLDate Method (#304)
Diffstat (limited to 'tests')
-rw-r--r--tests/test_mssqlnative.php140
1 files changed, 112 insertions, 28 deletions
diff --git a/tests/test_mssqlnative.php b/tests/test_mssqlnative.php
index 2965fea9..756e2447 100644
--- a/tests/test_mssqlnative.php
+++ b/tests/test_mssqlnative.php
@@ -1,47 +1,131 @@
<?php
+error_reporting(E_ALL|E_STRICT);
include('../adodb.inc.php');
+// -------- Internal Trace functions
+function Trace($Msg){
+ echo "<br>\n".$Msg;
+}
+function DieTrace($Msg){
+ die("<br>\n".$Msg);
+}
-/* SQL Script to clean objects created
-drop sequence MySequence1;
+
+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 = ADONewConnection("mssqlnative"); // create a connection
-$db->debug=true;
-$db->Connect('127.0.0.1','adodb','natsoft','northwind') or die('Fail');
+ $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 <br>\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 GenId
+// This code tests SQLDate
//==========================
-$ID1a=$db->GenID("MySequence1");
-$ID2a=$db->GenID("MySequence2");
-$ID1b=$db->GenID("MySequence1");
-$ID2b=$db->GenID("MySequence2");
-echo "ID1a=$ID1a,ID1b=$ID1b, ID2a=$ID2a,ID2b=$ID2b <br>\n";
-if(intval($ID1a)+1!==intval($ID1b)) die(sprintf("ERROR : Second value obtains by MySequence1 should be %d but is %d",$ID1a+1,$ID1b));
+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()
-$db->CreateSequence("MySequence3",100);
-$ID2b=$db->GenID("MySequence3");
-if(intval($ID2b)!==100) die(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 <br>\n";
-if(intval($ID1a+1)!==intval($ID1b)) die(sprintf("ERROR : Second value obtains by MySequence1Emul should be %d but is %d",$ID1a+1,$ID1b));
+//==========================
+// This code is the tests RUNNER
+//==========================
+$db->debug=true;
+// $ToTest Contains * or the name of the test function to RUN
+$ToTest="*";
+//$ToTest="TestSQLDate";
-$db->CreateSequence("MySequence3Emul",100);
-$ID2b=$db->GenID("MySequence3Emul");
-if(intval($ID2b)!==100) die(sprintf("ERROR : Value from MySequence3Emul should be 100 but is %d",$ID2b));
+// 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("<b>-------- Launch Test : $f ------------------</b>");
+ $f();
+ }
+}
-echo "End of tests."; \ No newline at end of file
+Trace("<b>=========== End of tests Without Error. ===================</b>"); \ No newline at end of file