diff options
| author | Timm Friebe <thekid@php.net> | 2004-01-24 02:18:13 +0000 |
|---|---|---|
| committer | Timm Friebe <thekid@php.net> | 2004-01-24 02:18:13 +0000 |
| commit | 095e82fe280e371883a385d600d7b5c5665c0739 (patch) | |
| tree | 8972649122ec99c7bd4dda58b3e4e4013e39c502 | |
| parent | 4cb85d4bc17bc2504d71f4a077151aec8d7e0dd2 (diff) | |
| download | php-git-095e82fe280e371883a385d600d7b5c5665c0739.tar.gz | |
- Initial release
| -rw-r--r-- | ext/sybase_ct/tests/bug22403.phpt | 88 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/bug6339.phpt | 24 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/skipif.inc | 8 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test.inc | 84 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_connect.phpt | 19 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_msghandler.phpt | 39 | ||||
| -rw-r--r-- | ext/sybase_ct/tests/test_types.phpt | 76 |
7 files changed, 338 insertions, 0 deletions
diff --git a/ext/sybase_ct/tests/bug22403.phpt b/ext/sybase_ct/tests/bug22403.phpt new file mode 100644 index 0000000000..c9a2186f39 --- /dev/null +++ b/ext/sybase_ct/tests/bug22403.phpt @@ -0,0 +1,88 @@ +--TEST-- +Sybase-CT bug #22403 (crash when executing a stored procedure without parameters) +--SKIPIF-- +<?php require('skipif.inc'); ?> +--FILE-- +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + require('test.inc'); + + $db= sybase_connect_ex(); + sybase_set_message_handler('sybase_msg_handler'); + error_reporting(error_reporting() & !E_NOTICE); // Suppress notices + + // Check if stored procedure already exists + $sp_name= basename(__FILE__, '.php'); + var_dump(sybase_select_db('tempdb', $db)); + if (!sybase_select_single($db, 'select object_id("'.$sp_name.'")')) { + echo "Stored procedure {$sp_name} not found, creating\n"; + var_dump(sybase_query(' + create proc '.$sp_name.' (@param int) + as + begin + select @param + select @param + 1 + return @param + end + ')); + } else { + echo "Stored procedure {$sp_name} found, using\n"; + var_dump(TRUE); + } + + // These don't work + var_dump(sybase_select_ex($db, 'exec '.$sp_name)); + var_dump(sybase_select_ex($db, 'exec '.$sp_name.' "foo"')); + var_dump(sybase_select_ex($db, 'exec does_not_exist')); + + // These do + var_dump(sybase_select_ex($db, 'exec '.$sp_name.' NULL')); + var_dump(sybase_select_ex($db, 'exec '.$sp_name.' 1')); + + // Clean up after ourselves + var_dump(sybase_query('drop proc '.$sp_name)); + + sybase_close($db); +?> +--EXPECTF-- +bool(true) +Stored procedure %s +bool(true) +>>> Query: exec %s +*** Caught Sybase Server Message #201 [Severity 16, state 2] at line 0 + %s +<<< Return: boolean +bool(false) +>>> Query: exec %s "foo" +*** Caught Sybase Server Message #257 [Severity 16, state 1] at line 0 + %s +<<< Return: boolean +bool(false) +>>> Query: exec does_not_exist +*** Caught Sybase Server Message #2812 [Severity 16, state 4] at line 1 + %s +<<< Return: boolean +bool(false) +>>> Query: exec %s NULL +<<< Return: resource +array(1) { + [0]=> + array(1) { + ["computed"]=> + NULL + } +} +>>> Query: exec %s 1 +<<< Return: resource +array(1) { + [0]=> + array(1) { + ["computed"]=> + int(1) + } +} +bool(true) diff --git a/ext/sybase_ct/tests/bug6339.phpt b/ext/sybase_ct/tests/bug6339.phpt new file mode 100644 index 0000000000..3b0a072b4a --- /dev/null +++ b/ext/sybase_ct/tests/bug6339.phpt @@ -0,0 +1,24 @@ +--TEST-- +Sybase-CT bug #6339 (invalid Sybase-link resource) +--SKIPIF-- +<?php require('skipif.inc'); ?> +--FILE-- +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + require('test.inc'); + + // Suppress "Changed database context" warnings + sybase_min_server_severity(11); + sybase_connect(HOST, USER, PASSWORD); + var_dump(sybase_fetch_row(sybase_query('select 1'))); + sybase_close(); +?> +--EXPECTF-- +array(1) { + [0]=> + int(1) +} diff --git a/ext/sybase_ct/tests/skipif.inc b/ext/sybase_ct/tests/skipif.inc new file mode 100644 index 0000000000..8c07f7e61e --- /dev/null +++ b/ext/sybase_ct/tests/skipif.inc @@ -0,0 +1,8 @@ +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + if (!extension_loaded('sybase_ct')) die('Sybase-CT extension not loaded'); +?> diff --git a/ext/sybase_ct/tests/test.inc b/ext/sybase_ct/tests/test.inc new file mode 100644 index 0000000000..1a57bcb877 --- /dev/null +++ b/ext/sybase_ct/tests/test.inc @@ -0,0 +1,84 @@ +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + // Change if needed + define('HOST', 'php3'); + define('USER', 'news'); + define('PASSWORD', 'stuemper'); + + // {{{ bool sybase_msg_handler(int msgnumber, int severity, int state, int line, string text) + // Handles server messages + function sybase_msg_handler($msgnumber, $severity, $state, $line, $text) { + printf( + "*** Caught Sybase Server Message #%d [Severity %d, state %d] at line %d\n '%s'\n", + $msgnumber, + $severity, + $state, + $line, + chop($text) + ); + } + // }}} + + // {{{ public class sybase + class sybase { + + // {{{ public static bool static_handler(int msgnumber, int severity, int state, int line, string text) + // Handles server messages + function static_handler($msgnumber, $severity, $state, $line, $text) { + return sybase_msg_handler($msgnumber, $severity, $state, $line, $text); + } + // }}} + + // {{{ public bool static_handler(int msgnumber, int severity, int state, int line, string text) + // Handles server messages + function handler($msgnumber, $severity, $state, $line, $text) { + return sybase_msg_handler($msgnumber, $severity, $state, $line, $text); + } + // }}} + } + // }}} + + // {{{ void sybase_set_messagehandler_ex(string handler) + // Sets the sybase message handler and dumps the result + function sybase_set_messagehandler_ex($handler) { + var_dump(sybase_set_message_handler($handler)); + } + + // {{{ resource sybase_connect_ex(string charset= NULL, string appname= NULL) + // Connect to the sybase server using the defines HOST, USER and PASSWORD + function sybase_connect_ex($charset= NULL, $appname= NULL) { + sybase_min_server_severity(11); // Suppress "changed database context" + if (!($db= sybase_connect(HOST, USER, PASSWORD, $charset, $appname))) { + die('Connect to '.USER.'@'.HOST.' failed (using password: '.(PASSWORD ? 'yes' : 'no').')'); + } + return $db; + } + // }}} + + // {{{ void sybase_select_ex(resource dbh, string query) + // Returns all fetched rows from an SQL query + function sybase_select_ex($dbh, $query) { + printf(">>> Query: %s\n", $query); + $h= sybase_query($query, $dbh); + printf("<<< Return: %s\n", gettype($h)); + flush(); + if (!is_resource($h)) return $h; + + $return= array(); + while ($row= sybase_fetch_assoc($h)) { + $return[]= $row; + } + return $return; + } + + // {{{ mixed sybase_select_single(resource dbh, string query) + // Fires an SQL query and returns the first value from the first row + function sybase_select_single($dbh, $query) { + return array_shift(sybase_fetch_row(sybase_query($query, $dbh))); + } + // }}} +?> diff --git a/ext/sybase_ct/tests/test_connect.phpt b/ext/sybase_ct/tests/test_connect.phpt new file mode 100644 index 0000000000..e1e3eead38 --- /dev/null +++ b/ext/sybase_ct/tests/test_connect.phpt @@ -0,0 +1,19 @@ +--TEST-- +Sybase-CT connectivity +--SKIPIF-- +<?php require('skipif.inc'); ?> +--FILE-- +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + require('test.inc'); + + $db= sybase_connect_ex(); + var_dump($db); + sybase_close($db); +?> +--EXPECTF-- +resource(%d) of type (sybase-ct link) diff --git a/ext/sybase_ct/tests/test_msghandler.phpt b/ext/sybase_ct/tests/test_msghandler.phpt new file mode 100644 index 0000000000..ca0b63f81b --- /dev/null +++ b/ext/sybase_ct/tests/test_msghandler.phpt @@ -0,0 +1,39 @@ +--TEST-- +Sybase-CT server message handler +--SKIPIF-- +<?php require('skipif.inc'); ?> +--FILE-- +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + require('test.inc'); + + $db= sybase_connect_ex(); + + echo 'Nonexistant: '; sybase_set_messagehandler_ex('function_does_not_exist'); + echo 'Static method: '; sybase_set_messagehandler_ex(array('sybase', 'static_handler')); + echo 'Instance method: '; sybase_set_messagehandler_ex(array(new sybase(), 'handler')); + echo 'Lambda function: '; sybase_set_messagehandler_ex(create_function('', 'return FALSE;')); + echo 'Unset: '; sybase_set_messagehandler_ex(NULL); + echo 'Function: '; sybase_set_messagehandler_ex('sybase_msg_handler'); + + var_dump(sybase_select_ex($db, 'select getdate(NULL)')); + sybase_close($db); +?> +--EXPECTF-- +Nonexistant: +Warning: sybase_set_message_handler(): First argumented is expected to be a valid callback, 'function_does_not_exist' was given in %s/test.inc on line %d +bool(false) +Static method: bool(true) +Instance method: bool(true) +Lambda function: bool(true) +Unset: bool(true) +Function: bool(true) +>>> Query: select getdate(NULL) +*** Caught Sybase Server Message #%d [Severity %d, state %d] at line %d + %s +<<< Return: boolean +bool(false) diff --git a/ext/sybase_ct/tests/test_types.phpt b/ext/sybase_ct/tests/test_types.phpt new file mode 100644 index 0000000000..41757288c5 --- /dev/null +++ b/ext/sybase_ct/tests/test_types.phpt @@ -0,0 +1,76 @@ +--TEST-- +Sybase-CT select and types +--SKIPIF-- +<?php require('skipif.inc'); ?> +--FILE-- +<?php +/* This file is part of PHP test framework for ext/sybase_ct + * + * $Id$ + */ + + require('test.inc'); + + $db= sybase_connect_ex(); + var_dump(sybase_select_ex($db, 'select + 1 as "integer", + -2147483647 as "integer_min", + -2147483648 as "integer_min_exceed", + 2147483647 as "integer_max", + 2147483648 as "integer_max_exceed", + 1.0 as "float", + $22.36 as "money", + "Binford" as "string", + convert(datetime, "2004-01-23") as "date", + NULL as "null", + convert(bit, 1) as "bit", + convert(smalldatetime, "2004-01-23") as "smalldate" + ')); + + sybase_close($db); +?> +--EXPECTF-- +>>> Query: select + 1 as "integer", + -2147483647 as "integer_min", + -2147483648 as "integer_min_exceed", + 2147483647 as "integer_max", + 2147483648 as "integer_max_exceed", + 1.0 as "float", + $22.36 as "money", + "Binford" as "string", + convert(datetime, "2004-01-23") as "date", + NULL as "null", + convert(bit, 1) as "bit", + convert(smalldatetime, "2004-01-23") as "smalldate" + +<<< Return: resource +array(1) { + [0]=> + array(%d) { + ["integer"]=> + int(1) + ["integer_min"]=> + int(-2147483647) + ["integer_min_exceed"]=> + float(-2147483648) + ["integer_max"]=> + int(2147483647) + ["integer_max_exceed"]=> + float(2147483648) + ["float"]=> + float(1) + ["money"]=> + float(22.36) + ["string"]=> + string(7) "Binford" + ["date"]=> + string(19) "Jan 23 2004 12:00AM" + ["null"]=> + NULL + ["bit"]=> + int(1) + ["smalldate"]=> + string(19) "Jan 23 2004 12:00AM" + } +} |
