new tests from autonomous

This commit is contained in:
yitam 2017-06-01 17:51:37 -07:00
parent 35523c52db
commit a789e0864b
8 changed files with 335 additions and 0 deletions

View file

@ -0,0 +1,46 @@
--TEST--
Fetch array using a scrollable buffered cursor with connection CharacterSet utf-8
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = ConnectUTF8();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#exAsciiTest';
$query = "CREATE TABLE $tableName (ID CHAR(10))";
$stmt = sqlsrv_query($conn, $query);
// Insert data
$query = "INSERT INTO $tableName VALUES ('Aå_Ð×Æ×Ø_B')"; // Ð×Æ×Ø
$stmt = sqlsrv_query($conn, $query) ?: die(print_r( sqlsrv_errors(), true));
// Fetch data
$query = "SELECT * FROM $tableName";
// $stmt = sqlsrv_query($conn, $query)
$stmt = sqlsrv_query($conn, $query, [], array("Scrollable"=>"buffered"));
if( $stmt === false)
die( print_r(sqlsrv_errors(), true));
// Fetch
$row = sqlsrv_fetch_array($stmt);
var_dump($row);
// Close connection
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
print "Done"
?>
--EXPECT--
array(2) {
[0]=>
string(16) "Aå_Ð×Æ×Ø_B"
["ID"]=>
string(16) "Aå_Ð×Æ×Ø_B"
}
Done

View file

@ -0,0 +1,23 @@
--TEST--
False connection with LoginTimeout option
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
$serverName = "WRONG_SERVER_NAME";
$t0 = round(microtime(true));
$conn = sqlsrv_connect( $serverName , array("LoginTimeout" => 8));
$t1 = round(microtime(true));
echo "Connection attempt time: " . ($t1 - $t0) . " [sec]\n";
print "Done";
?>
--EXPECTREGEX--
Connection attempt time: [7-9] \[sec\]
Done

View file

@ -0,0 +1,35 @@
--TEST--
Connection option APP unicode
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$appName = "APP_PoP_";
$appName = $appName . str_repeat("银河系",1);
$conn = Connect(array("APP"=>$appName, "CharacterSet"=>"utf-8"));
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Query and print out
$sql = "select APP_NAME()";
$stmt = sqlsrv_query($conn, $sql);
if( !$stmt ) { die( print_r( sqlsrv_errors(), true)); }
// Fetch the data
while( sqlsrv_fetch($stmt) ) {
echo sqlsrv_get_field($stmt, 0)."\n";
}
// Close connection
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
print "Done";
?>
--EXPECT--
APP_PoP_银河系
Done

View file

@ -0,0 +1,47 @@
--TEST--
Character data type with non-ASCII characters
--DESCRIPTION--
For read/write non-ASCII characters on Windows and Linux the buffer
size may be different, 1 byte on Windows if 1252 code page
and 2 bytes on Linux if UTF-8 is used.
Example: the string Ð×Æ×Ø is 10 bytes on Linux, 5 bytes on Windows.
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = ConnectUTF8();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#srv_019test';
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName (c1 CHAR(5))");
if( $stmt === false ) { die( print_r( sqlsrv_errors(), true )); }
sqlsrv_free_stmt( $stmt);
// Insert data
$sql = "INSERT INTO $tableName VALUES ('I+PHP'),('Ð×Æ×Ø')";
$stmt = sqlsrv_query($conn, $sql);
sqlsrv_free_stmt( $stmt);
// Query and print out
$sql = "SELECT c1 FROM $tableName";
$stmt = sqlsrv_query( $conn, $sql );
if( !$stmt ) { die( print_r( sqlsrv_errors(), true)); }
// Fetch the data
while( sqlsrv_fetch($stmt) ) {
echo sqlsrv_get_field($stmt, 0)."\n";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
print "Done";
?>
--EXPECT--
I+PHP
Ð×Æ×Ø
Done

View file

@ -0,0 +1,46 @@
--TEST--
Query non-ascii strings: sqlsrv_fetch_array
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = Connect();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#srv_020test';
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName (FirstName VARCHAR(10), LastName NVARCHAR(20), Age INT)");
if( $stmt === false ) { die( print_r( sqlsrv_errors(), true )); }
sqlsrv_free_stmt( $stmt);
// Insert data
$sql = "INSERT INTO $tableName VALUES ('John', 'Doe', 30)";
$stmt = sqlsrv_query( $conn, $sql);
sqlsrv_free_stmt( $stmt);
$sql = "INSERT INTO $tableName VALUES ('Nhoj', N'Eoduard', -3), ('Joe', N' I❤PHP', 2016)";
$stmt = sqlsrv_query($conn, $sql);
sqlsrv_free_stmt( $stmt);
// Query and print out
$sql = "SELECT FirstName, LastName, Age FROM $tableName";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); }
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
printf("%s %s %d\n",$row[0], $row[1], $row[2]);
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
print "Done";
?>
--EXPECT--
John Doe 30
Nhoj Eoduard -3
Joe I❤PHP 2016
Done

View file

@ -0,0 +1,47 @@
--TEST--
Extended ASCII column names: sqlsrv_fetch_array()
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = ConnectUTF8();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#srv_021test';
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName (Cité NVARCHAR(10), Année SMALLINT)");
if( $stmt === false ) { die( print_r( sqlsrv_errors(), true )); }
sqlsrv_free_stmt( $stmt);
// Insert data
$sql1 = "INSERT INTO $tableName VALUES ('Paris', 1911)";
$stmt1 = sqlsrv_query( $conn, $sql1);
sqlsrv_free_stmt( $stmt1);
// Insert more data
$sql2 = "INSERT INTO $tableName VALUES ('London', 2012), ('Berlin', 1990)";
$stmt2 = sqlsrv_query($conn, $sql2);
sqlsrv_free_stmt( $stmt2);
// Query
$sql = "SELECT * FROM $tableName";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); }
// Fetch array
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
printf("%s %d\n",$row[0], $row[1]);
}
// Close connection
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
--EXPECT--
Paris 1911
London 2012
Berlin 1990

View file

@ -0,0 +1,44 @@
--TEST--
Query with extended ASCII column names, sqlsrv_num_fields()
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = ConnectUTF8();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#srv_022test';
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName (Cité NVARCHAR(10), Année SMALLINT)");
if( $stmt === false ) { die( print_r( sqlsrv_errors(), true )); }
sqlsrv_free_stmt( $stmt);
// Insert data
$sql1 = "INSERT INTO $tableName VALUES ('Paris', 1911)";
$stmt1 = sqlsrv_query( $conn, $sql1);
sqlsrv_free_stmt( $stmt1);
// Insert more data
$sql2 = "INSERT INTO $tableName VALUES ('London', 2012), ('Berlin', 1990)";
$stmt2 = sqlsrv_query($conn, $sql2);
sqlsrv_free_stmt( $stmt2);
// Query
$sql = "SELECT * FROM $tableName";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); }
// Get number of fields
echo sqlsrv_num_fields($stmt)."\n";
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
print "Done"
?>
--EXPECT--
2
Done

View file

@ -0,0 +1,47 @@
--TEST--
Insert binary HEX data into nvarchar field then read it back using sqlsrv_get_field()
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once("MsCommon.inc");
// Connect
$conn = Connect();
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
// Create table
$tableName = '#srv_033test';
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName (c1 NVARCHAR(100))");
$input = pack( "H*", '49006427500048005000' ); // I'LOVE_SYMBOL'PHP
$s = sqlsrv_query( $conn, "INSERT INTO $tableName (c1) VALUES (?)",
array(array( $input, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY))
));
if( $s === false ) {
die( print_r( sqlsrv_errors(), true ));
}
$s = sqlsrv_query( $conn, "SELECT * FROM $tableName" );
if( $s === false ) {
die( print_r( sqlsrv_errors(), true ));
}
sqlsrv_fetch( $s );
$utf8 = sqlsrv_get_field( $s, 0, SQLSRV_PHPTYPE_STRING('utf-8') );
echo "\n". $utf8 ."\n";
print_r( sqlsrv_errors() );
sqlsrv_close( $conn );
print "Done";
?>
--EXPECT--
I❤PHP
Done