summaryrefslogtreecommitdiff
path: root/ext/interbase/tests/006.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/interbase/tests/006.phpt')
-rw-r--r--ext/interbase/tests/006.phpt301
1 files changed, 301 insertions, 0 deletions
diff --git a/ext/interbase/tests/006.phpt b/ext/interbase/tests/006.phpt
new file mode 100644
index 0000000..ad6120f
--- /dev/null
+++ b/ext/interbase/tests/006.phpt
@@ -0,0 +1,301 @@
+--TEST--
+InterBase: binding (may take a while)
+--SKIPIF--
+<?php include("skipif.inc"); ?>
+--FILE--
+<?php /* $Id$ */
+
+ require("interbase.inc");
+
+ ibase_connect($test_base);
+
+ ibase_query(
+ "create table test6 (
+ iter integer,
+ v_char char(1000),
+ v_date timestamp,
+ v_decimal decimal(12,3),
+ v_double double precision,
+ v_float float,
+ v_integer integer,
+ v_numeric numeric(4,2),
+ v_smallint smallint,
+ v_varchar varchar(10000)
+ )");
+ ibase_query(
+ "create procedure add1 (arg integer)
+ returns (result integer)
+ as
+ begin
+ result = arg +1;
+ end");
+ ibase_commit();
+
+ /* if timefmt not supported, hide error */
+ ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
+
+ echo "insert\n";
+
+ for($iter = 0; $iter < 3; $iter++) {
+ /* prepare data */
+ $v_char = rand_str(1000);
+ $v_date = rand_datetime();
+ $v_decimal = rand_number(12,3);
+ $v_double = rand_number(20);
+ $v_float = rand_number(7);
+ $v_integer = rand_number(9,0);
+ $v_numeric = rand_number(4,2);
+ $v_smallint = rand_number(5) % 32767;
+ $v_varchar = rand_str(10000);
+
+ ibase_query("insert into test6
+ (iter,v_char,v_date,v_decimal,v_double,v_float,
+ v_integer,v_numeric,v_smallint,v_varchar)
+ values (?,?,?,?,?,?,?,?,?,?)",
+ $iter, $v_char, $v_date, $v_decimal, $v_double, $v_float,
+ $v_integer, $v_numeric, $v_smallint, $v_varchar);
+ $sel = ibase_query("select * from test6 where iter = ?", $iter);
+
+ $row = ibase_fetch_object($sel);
+ if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char) {
+ echo " CHAR fail:\n";
+ echo " in: $v_char\n";
+ echo " out: $row->V_CHAR\n";
+ }
+ if($row->V_DATE != $v_date) {
+ echo " DATE fail\n";
+ echo " in: $v_date\n";
+ echo " out: $row->V_DATE\n";
+ }
+ if($row->V_DECIMAL != $v_decimal) {
+ echo " DECIMAL fail\n";
+ echo " in: $v_decimal\n";
+ echo " out: $row->V_DECIMAL\n";
+ }
+ if(abs($row->V_DOUBLE - $v_double) > abs($v_double / 1E15)) {
+ echo " DOUBLE fail\n";
+ echo " in: $v_double\n";
+ echo " out: $row->V_DOUBLE\n";
+ }
+ if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)) {
+ echo " FLOAT fail\n";
+ echo " in: $v_float\n";
+ echo " out: $row->V_FLOAT\n";
+ }
+ if($row->V_INTEGER != $v_integer) {
+ echo " INTEGER fail\n";
+ echo " in: $v_integer\n";
+ echo " out: $row->V_INTEGER\n";
+ }
+ if ($row->V_NUMERIC != $v_numeric) {
+ echo " NUMERIC fail\n";
+ echo " in: $v_numeric\n";
+ echo " out: $row->V_NUMERIC\n";
+ }
+ if ($row->V_SMALLINT != $v_smallint) {
+ echo " SMALLINT fail\n";
+ echo " in: $v_smallint\n";
+ echo " out: $row->V_SMALLINT\n";
+ }
+ if ($row->V_VARCHAR != $v_varchar) {
+ echo " VARCHAR fail:\n";
+ echo " in: $v_varchar\n";
+ echo " out: $row->V_VARCHAR\n";
+ }
+ ibase_free_result($sel);
+ }/* for($iter)*/
+
+ echo "select\n";
+ for($iter = 0; $iter < 3; $iter++) {
+ /* prepare data */
+ $v_char = rand_str(1000);
+ $v_date = (int)rand_number(10,0,0);
+ $v_decimal = rand_number(12,3);
+ $v_double = rand_number(20);
+ $v_float = rand_number(7);
+ $v_integer = rand_number(9,0);
+ $v_numeric = rand_number(4,2);
+ $v_smallint = rand_number(5) % 32767;
+ $v_varchar = rand_str(10000);
+
+ /* clear table*/
+ ibase_query("delete from test6");
+
+ /* make one record */
+ ibase_query("insert into test6
+ (iter, v_char,v_date,v_decimal,
+ v_integer,v_numeric,v_smallint,v_varchar)
+ values (666, '$v_char',?,$v_decimal, $v_integer,
+ $v_numeric, $v_smallint, '$v_varchar')",$v_date);
+
+ /* test all types */
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_char = ?", $v_char)) ||
+ !ibase_fetch_row($sel)) {
+ echo "CHAR fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_date = ?", $v_date)) ||
+ !ibase_fetch_row($sel)) {
+ echo "DATE fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_decimal = ?", $v_decimal)) ||
+ !ibase_fetch_row($sel)) {
+ echo "DECIMAL fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_integer = ?", $v_integer)) ||
+ !ibase_fetch_row($sel)) {
+ echo "INTEGER fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_numeric = ?", $v_numeric)) ||
+ !ibase_fetch_row($sel)) {
+ echo "NUMERIC fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_smallint = ?", $v_smallint)) ||
+ !ibase_fetch_row($sel)) {
+ echo "SMALLINT fail\n";
+ }
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_varchar = ?", $v_varchar)) ||
+ !ibase_fetch_row($sel)) {
+ echo "VARCHAR fail\n";
+ }
+ ibase_free_result($sel);
+
+ } /*for iter*/
+
+ echo "prepare and exec insert\n";
+
+ /* prepare table */
+ ibase_query("delete from test6");
+
+ /* prepare query */
+ $query = ibase_prepare(
+ "insert into test6 (v_integer) values (?)");
+
+ for($i = 0; $i < 10; $i++) {
+ ibase_execute($query, $i);
+ }
+
+ out_table("test6");
+
+ ibase_free_query($query);
+
+ echo "prepare and exec select\n";
+
+ /* prepare query */
+ $query = ibase_prepare("select * from test6
+ where v_integer between ? and ?");
+
+ $low_border = 2;
+ $high_border = 6;
+
+ $res = ibase_execute($query, $low_border, $high_border);
+ out_result($res, "test6");
+ ibase_free_result($res);
+
+ $low_border = 0;
+ $high_border = 4;
+ $res = ibase_execute($query, $low_border, $high_border);
+ out_result($res, "test6");
+ ibase_free_result($res);
+
+ $res = ibase_execute($query, "5", 7.499);
+ out_result($res, "test6");
+ ibase_free_result($res);
+
+ ibase_free_query($query);
+
+ /* test execute procedure */
+ $query = ibase_prepare("execute procedure add1(?)");
+ $res = array();
+ for ($i = 0; $i < 10; $i++) {
+ $res[] = ibase_execute($query,$i);
+ }
+ ibase_free_query($query);
+ foreach ($res as $r) {
+ out_result($r, "proc add1");
+ ibase_free_result($r);
+ }
+
+ ibase_close();
+ echo "end of test\n";
+?>
+--EXPECT--
+insert
+select
+prepare and exec insert
+--- test6 ---
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+---
+prepare and exec select
+--- test6 ---
+ 2
+ 3
+ 4
+ 5
+ 6
+---
+--- test6 ---
+ 0
+ 1
+ 2
+ 3
+ 4
+---
+--- test6 ---
+ 5
+ 6
+ 7
+---
+--- proc add1 ---
+1
+---
+--- proc add1 ---
+2
+---
+--- proc add1 ---
+3
+---
+--- proc add1 ---
+4
+---
+--- proc add1 ---
+5
+---
+--- proc add1 ---
+6
+---
+--- proc add1 ---
+7
+---
+--- proc add1 ---
+8
+---
+--- proc add1 ---
+9
+---
+--- proc add1 ---
+10
+---
+end of test
+