added tests

This commit is contained in:
Hadis Kakanejadi Fard 2017-05-03 14:44:43 -07:00
parent c5af000e56
commit 4d06de4aaf
2 changed files with 118 additions and 0 deletions

View file

@ -0,0 +1,60 @@
--TEST--
This test verifies that GitHub issue #378 is fixed in pdo_sqlsrv.
--DESCRIPTION--
GitHub issue #378 - output parameters appends garbage info when variable is initialized with different data type
steps to reproduce the issue:
1- create a store procedure with print and output parameter
2- initialize output parameters to a different data type other than the type declared in sp.
3 - call sp.
--FILE--
<?php
require_once("pdo_tools.inc");
require_once("autonomous_setup.php");
$conn = new PDO( "sqlsrv:Server=$serverName; Database = tempdb ", $username, $password);
if (!$conn) {
print_r($conn->errorInfo());
}
//----------------Main---------------------------
$procName = GetTempProcName();
createSP($conn, $procName);
executeSP($conn, $procName);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
executeSP($conn, $procName);
echo "Done";
//-------------------functions-------------------
function createSP($conn, $procName){
$sp_sql="create proc $procName @p1 integer, @p2 integer, @p3 integer output
as
begin
select @p3 = @p1 + @p2
print @p3
end
";
$stmt = $conn->exec($sp_sql);
if ($stmt === false) { print("Failed to create stored procedure"); }
}
function executeSP($conn, $procName){
$expected = 3;
$stmt = $conn->prepare("{call $procName( ?, ?, ? )}");
$stmt->bindParam(1, $v1);
$stmt->bindParam(2, $v2);
$stmt->bindParam(3, $v3, PDO::PARAM_INT, 10);
$v1 = 1;
$v2 = 2;
$v3 = 'str';
$stmt->execute();
if (!$stmt) {
print_r($stmt->errorInfo());
}
if ( $v3 != $expected ) {
print("The expected value is $expected, actual value is $v3\n");
}
}
?>
--EXPECT--
Done

View file

@ -0,0 +1,58 @@
--TEST--
This test verifies that GitHub issue #378 is fixed.
--DESCRIPTION--
GitHub issue #378 - output parameters appends garbage info when variable is initialized with different data type
steps to reproduce the issue:
1- create a store procedure with print and output parameter
2- initialize output parameters to a different data type other than the type declared in sp.
3- set the WarningsReturnAsErrors to true
4 - call sp.
--FILE--
<?php
require_once("tools.inc");
require_once("autonomous_setup.php");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true ));
}
//----------------Main---------------------------
$procName = GetTempProcName();
createSP($conn, $procName);
sqlsrv_configure( 'WarningsReturnAsErrors', true );
executeSP($conn, $procName);
sqlsrv_configure( 'WarningsReturnAsErrors', false );
executeSP($conn, $procName);
echo "Done";
//-------------------functions-------------------
function createSP($conn, $procName){
$sp_sql="create proc $procName @p1 integer, @p2 integer, @p3 integer output
as
begin
select @p3 = @p1 + @p2
print @p3
end
";
$stmt = sqlsrv_query($conn, $sp_sql);
if ($stmt === false) { FatalError("Failed to create stored procedure"); }
}
function executeSP($conn, $procName){
$expected = 3;
$v1 = 1;
$v2 = 2;
$v3 = 'str';
$stmt = sqlsrv_query( $conn, "{call $procName( ?, ?, ? )}", array( $v1, $v2, array( &$v3, SQLSRV_PARAM_OUT )));
if( $stmt === false ) {
print_r( sqlsrv_errors(), true );
}
if ( $v3 != $expected ) {
FatalError("The expected value is $expected, actual value is $v3\n");
}
}
?>
--EXPECT--
Done