summaryrefslogtreecommitdiff
path: root/ext/interbase/tests
diff options
context:
space:
mode:
Diffstat (limited to 'ext/interbase/tests')
-rw-r--r--ext/interbase/tests/001.phpt34
-rw-r--r--ext/interbase/tests/002.phpt35
-rw-r--r--ext/interbase/tests/003.phpt93
-rw-r--r--ext/interbase/tests/004.phpt179
-rw-r--r--ext/interbase/tests/005.phpt275
-rw-r--r--ext/interbase/tests/006.phpt227
-rwxr-xr-xext/interbase/tests/extension1
-rwxr-xr-xext/interbase/tests/interbase.inc77
8 files changed, 921 insertions, 0 deletions
diff --git a/ext/interbase/tests/001.phpt b/ext/interbase/tests/001.phpt
new file mode 100644
index 0000000000..79263d6f5c
--- /dev/null
+++ b/ext/interbase/tests/001.phpt
@@ -0,0 +1,34 @@
+--TEST--
+InterBase: create test database
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ $test_base = "ibase_test.tmp";
+ $name = tempnam("","CREATEDB");
+ $ftmp = fopen($name,"w");
+ if (is_file($test_base))
+ fwrite($ftmp,
+ "connect \"$test_base\";
+ drop database;\n"
+ );
+ fwrite($ftmp,
+ "create database \"$test_base\";
+ create table test1 (
+ i integer,
+ c varchar(100)
+ );
+ commit;
+ insert into test1(i, c) values(1, 'test table created with isql');
+ exit;\n"
+ );
+ fclose($ftmp);
+ exec("isql -i $name 2>&1");
+ unlink($name);
+?>
+--EXPECT--
+
diff --git a/ext/interbase/tests/002.phpt b/ext/interbase/tests/002.phpt
new file mode 100644
index 0000000000..6ea1b498ba
--- /dev/null
+++ b/ext/interbase/tests/002.phpt
@@ -0,0 +1,35 @@
+--TEST--
+InterBase: connect, close and pconnect
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ require("interbase/interbase.inc");
+
+ $test_base = "ibase_test.tmp";
+
+ ibase_connect($test_base);
+ out_table("test1");
+ ibase_close();
+
+ $con = ibase_connect($test_base);
+ $pcon1 = ibase_pconnect($test_base);
+ $pcon2 = ibase_pconnect($test_base);
+ ibase_close($con);
+ ibase_close($pcon1);
+
+ out_table("test1");
+
+ ibase_close($pcon2);
+?>
+--EXPECT--
+--- test1 ---
+1 test table created with isql
+---
+--- test1 ---
+1 test table created with isql
+---
diff --git a/ext/interbase/tests/003.phpt b/ext/interbase/tests/003.phpt
new file mode 100644
index 0000000000..5398b52850
--- /dev/null
+++ b/ext/interbase/tests/003.phpt
@@ -0,0 +1,93 @@
+--TEST--
+InterBase: misc sql types (may take a while)
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ require("interbase/interbase.inc");
+
+ $test_base = "ibase_test.tmp";
+
+ ibase_connect($test_base);
+
+ ibase_query(
+ "create table test3 (
+ iter integer,
+ v_char char(1000),
+ v_date date,
+ 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_commit();
+
+ /* if timefmt is not supported, suppress error here*/
+ @ibase_timefmt("%m/%d/%Y %H:%M:%S");
+
+ for($iter = 0; $iter < 10; $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 test3 (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 test3 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";
+ }
+ ibase_free_result($sel);
+ }/* for($iter)*/
+
+ ibase_close();
+ echo "end of test\n";
+?>
+--EXPECT--
+
+end of test
+
+
diff --git a/ext/interbase/tests/004.phpt b/ext/interbase/tests/004.phpt
new file mode 100644
index 0000000000..04df7ae991
--- /dev/null
+++ b/ext/interbase/tests/004.phpt
@@ -0,0 +1,179 @@
+--TEST--
+InterBase: BLOB test
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ require("interbase/interbase.inc");
+
+ $test_base = "ibase_test.tmp";
+
+ ibase_connect($test_base);
+
+ ibase_query(
+ "create table test4 (
+ v_integer integer,
+ v_blob blob)");
+ ibase_commit();
+
+ /* create 10k blob file */
+ $blob_str = rand_binstr(10*1024);
+
+ $name = tempnam("","blob.tmp");
+ $name = "blob.tmp";
+ $ftmp = fopen($name,"w");
+ fwrite($ftmp,$blob_str);
+ fclose($ftmp);
+
+ echo "import blob 1\n";
+ $ftmp = fopen($name,"r");
+ $bl_s = ibase_blob_import($ftmp);
+ ibase_query("insert into test4 (v_integer, v_blob) values (1, ?)", $bl_s);
+
+ echo "test blob 1\n";
+ $q = ibase_query("select v_blob from test4 where v_integer = 1");
+ $row = ibase_fetch_object($q);
+ $bl_h = ibase_blob_open($row->V_BLOB);
+
+ while($piece = ibase_blob_get($bl_h, rand() % 1024))
+ $blob .= $piece;
+ if($blob != $blob_str)
+ echo " BLOB 1 fail\n";
+ ibase_blob_close($bl_h);
+ ibase_free_result($q);
+ unset($blob);
+
+ echo "create blob 2\n";
+
+ $bl_h = ibase_blob_create();
+ $ftmp = fopen($name,"r");
+ while($piece = fread($ftmp, rand() % 1024)){
+ ibase_blob_add($bl_h, $piece);
+ }
+ fclose($ftmp);
+ $bl_s = ibase_blob_close($bl_h);
+ ibase_query("insert into test4 (v_integer, v_blob) values (2, ?)", $bl_s);
+
+ echo "test blob 2\n";
+
+ $q = ibase_query("select v_blob from test4 where v_integer = 2");
+ $row = ibase_fetch_object($q);
+ $bl_h = ibase_blob_open($row->V_BLOB);
+ while($piece = ibase_blob_get($bl_h, rand() % 1024))
+ $blob .= $piece;
+ if($blob != $blob_str)
+ echo " BLOB 2 fail\n";
+ ibase_blob_close($bl_h);
+ ibase_free_result($q);
+ unset($blob);
+
+
+ echo "create blob 3\n";
+
+ $bl_h = ibase_blob_create();
+
+ ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n");
+ ibase_blob_add($bl_h, "| PHP HTML Embedded Scripting Language Version 3.0 |\n");
+ ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n");
+ ibase_blob_add($bl_h, "| Copyright (c) 1997-2000 PHP Development Team (See Credits file) |\n");
+ ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n");
+ ibase_blob_add($bl_h, "| This program is free software; you can redistribute it and/or modify |\n");
+ ibase_blob_add($bl_h, "| it under the terms of one of the following licenses: |\n");
+ ibase_blob_add($bl_h, "| |\n");
+ ibase_blob_add($bl_h, "| A) the GNU General Public License as published by the Free Software |\n");
+ ibase_blob_add($bl_h, "| Foundation; either version 2 of the License, or (at your option) |\n");
+ ibase_blob_add($bl_h, "| any later version. |\n");
+ ibase_blob_add($bl_h, "| |\n");
+ ibase_blob_add($bl_h, "| B) the PHP License as published by the PHP Development Team and |\n");
+ ibase_blob_add($bl_h, "| included in the distribution in the file: LICENSE |\n");
+ ibase_blob_add($bl_h, "| |\n");
+ ibase_blob_add($bl_h, "| This program is distributed in the hope that it will be useful, |\n");
+ ibase_blob_add($bl_h, "| but WITHOUT ANY WARRANTY; without even the implied warranty of |\n");
+ ibase_blob_add($bl_h, "| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |\n");
+ ibase_blob_add($bl_h, "| GNU General Public License for more details. |\n");
+ ibase_blob_add($bl_h, "| |\n");
+ ibase_blob_add($bl_h, "| You should have received a copy of both licenses referred to here. |\n");
+ ibase_blob_add($bl_h, "| If you did not, or have any questions about PHP licensing, please |\n");
+ ibase_blob_add($bl_h, "| contact core@php.net. |\n");
+ ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n");
+ $bl_s = ibase_blob_close($bl_h);
+ ibase_query("insert into test4 (v_integer, v_blob) values (3, ?)", $bl_s);
+
+ echo "echo blob 3\n";
+
+ $q = ibase_query("select v_blob from test4 where v_integer = 3");
+ $row = ibase_fetch_object($q);
+ ibase_blob_echo($row->V_BLOB);
+ ibase_free_result($q);
+
+ echo "fetch blob 3\n";
+ $q = ibase_query("select v_blob from test4 where v_integer = 3");
+ $row = ibase_fetch_object($q,IBASE_TEXT);
+ echo $row->V_BLOB;
+ ibase_free_result($q);
+
+ ibase_close();
+ unlink($name);
+ echo "end of test\n";
+?>
+--EXPECT--
+import blob 1
+test blob 1
+create blob 2
+test blob 2
+create blob 3
+echo blob 3
++----------------------------------------------------------------------+
+| PHP HTML Embedded Scripting Language Version 3.0 |
++----------------------------------------------------------------------+
+| Copyright (c) 1997-2000 PHP Development Team (See Credits file) |
++----------------------------------------------------------------------+
+| This program is free software; you can redistribute it and/or modify |
+| it under the terms of one of the following licenses: |
+| |
+| A) the GNU General Public License as published by the Free Software |
+| Foundation; either version 2 of the License, or (at your option) |
+| any later version. |
+| |
+| B) the PHP License as published by the PHP Development Team and |
+| included in the distribution in the file: LICENSE |
+| |
+| This program is distributed in the hope that it will be useful, |
+| but WITHOUT ANY WARRANTY; without even the implied warranty of |
+| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+| GNU General Public License for more details. |
+| |
+| You should have received a copy of both licenses referred to here. |
+| If you did not, or have any questions about PHP licensing, please |
+| contact core@php.net. |
++----------------------------------------------------------------------+
+fetch blob 3
++----------------------------------------------------------------------+
+| PHP HTML Embedded Scripting Language Version 3.0 |
++----------------------------------------------------------------------+
+| Copyright (c) 1997-2000 PHP Development Team (See Credits file) |
++----------------------------------------------------------------------+
+| This program is free software; you can redistribute it and/or modify |
+| it under the terms of one of the following licenses: |
+| |
+| A) the GNU General Public License as published by the Free Software |
+| Foundation; either version 2 of the License, or (at your option) |
+| any later version. |
+| |
+| B) the PHP License as published by the PHP Development Team and |
+| included in the distribution in the file: LICENSE |
+| |
+| This program is distributed in the hope that it will be useful, |
+| but WITHOUT ANY WARRANTY; without even the implied warranty of |
+| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+| GNU General Public License for more details. |
+| |
+| You should have received a copy of both licenses referred to here. |
+| If you did not, or have any questions about PHP licensing, please |
+| contact core@php.net. |
++----------------------------------------------------------------------+
+end of test
diff --git a/ext/interbase/tests/005.phpt b/ext/interbase/tests/005.phpt
new file mode 100644
index 0000000000..5cf77667e0
--- /dev/null
+++ b/ext/interbase/tests/005.phpt
@@ -0,0 +1,275 @@
+--TEST--
+InterBase: transactions
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ require("interbase/interbase.inc");
+
+ $test_base = "ibase_test.tmp";
+
+ ibase_connect($test_base);
+
+ @ibase_query("create table test5 (i integer)");
+ @ibase_query("delete from test5");
+ ibase_close();
+
+
+ echo "default transaction:\n";
+
+/*
+Difference between default and other transactions:
+default commited when you call ibase_close().
+Other transaction doing rollback.
+
+If you not open default transaction with
+ibase_trans, default transaction open
+when you call ibase_query(), ibase_prepare(),
+ibase_blob_create(), ibase_blob_import() first time.
+*/
+
+/*
+simple default transaction test without ibase_trans()
+*/
+
+ ibase_connect($test_base);
+
+ echo "empty table\n";
+
+ /* out_table call ibase_query()
+ and ibase_query() start default transaction */
+ out_table("test5");
+
+ /* in default transaction context */
+ ibase_query("insert into test5 (i) values (1)");
+
+ echo "one row\n";
+ out_table("test5");
+
+ ibase_rollback(); /* default rolled */
+
+ echo "after rollback table empty again\n";
+ out_table("test5"); /* started new default transaction */
+
+ ibase_query("insert into test5 (i) values (2)");
+
+ ibase_close(); /* commit here! */
+
+ ibase_connect($test_base);
+
+ echo "one row\n";
+ out_table("test5");
+ ibase_close();
+
+/*
+default transaction on default link
+First open transaction on link will be default.
+$tr_def_l1 may be ommited. All queryes without link and trans
+parameters run in this context
+*/
+
+ $link_def = ibase_connect($test_base);
+
+ $tr_def_l1 = ibase_trans(IBASE_READ); /* here transaction start */
+
+ /* all default */
+ $res = ibase_query("select * from test5");
+
+ echo "one row\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ /* specify transaction context... */
+ $res = ibase_query($tr_def_l1, "select * from test5");
+
+ echo "one row... again.\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ /* specify default transaction on link */
+ $res = ibase_query($link_def, "select * from test5");
+
+ echo "one row.\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_rollback($link_def); /* just for example */
+
+ ibase_close();
+
+/*
+three transaction on default link
+*/
+ ibase_connect($test_base);
+
+ $tr_1 = ibase_trans(); /* this default transaction also */
+ $tr_2 = ibase_trans(IBASE_READ);
+ $tr_3 = ibase_trans(IBASE_READ+IBASE_COMMITED);
+
+ $res = ibase_query("select * from test5");
+
+ echo "one row\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ /* insert in first transaction context... */
+ /* as default */
+ ibase_query("insert into test5 (i) values (3)");
+ /* specify context */
+ ibase_query($tr_1, "insert into test5 (i) values (4)");
+
+ $res = ibase_query("select * from test5");
+
+ echo "three rows\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ $res = ibase_query($tr_1, "select * from test5");
+
+ echo "three rows again\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_commit($tr_1);
+
+ $res = ibase_query($tr_2, "select * from test5");
+
+ echo "one row in second transaction\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ $res = ibase_query($tr_3, "select * from test5");
+
+ echo "three rows in third transaction\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_close();
+
+/*
+transactions on second link
+*/
+ $link_1 = ibase_pconnect($test_base);
+ $link_2 = ibase_pconnect($test_base);
+
+ $tr_1 = ibase_trans($link_2, IBASE_DEFAULT); /* this default transaction also */
+ $tr_2 = ibase_trans($link_2, IBASE_COMMITED);
+
+ $res = ibase_query($tr_1, "select * from test5");
+
+ echo "three rows\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_query($tr_1, "insert into test5 (i) values (5)");
+
+ $res = ibase_query($tr_1, "select * from test5");
+
+ echo "four rows\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_commit($tr_1);
+
+ $res = ibase_query($tr_2, "select * from test5");
+
+ echo "four rows again\n";
+ out_result($res,"test5");
+
+ ibase_free_result($res);
+
+ ibase_close($link_1);
+ ibase_close($link_2);
+
+ echo "end of test\n";
+?>
+--EXPECT--
+default transaction:
+empty table
+--- test5 ---
+---
+one row
+--- test5 ---
+1
+---
+after rollback table empty again
+--- test5 ---
+---
+one row
+--- test5 ---
+2
+---
+one row
+--- test5 ---
+2
+---
+one row... again.
+--- test5 ---
+2
+---
+one row.
+--- test5 ---
+2
+---
+one row
+--- test5 ---
+2
+---
+three rows
+--- test5 ---
+2
+3
+4
+---
+three rows again
+--- test5 ---
+2
+3
+4
+---
+one row in second transaction
+--- test5 ---
+2
+---
+three rows in third transaction
+--- test5 ---
+2
+3
+4
+---
+three rows
+--- test5 ---
+2
+3
+4
+---
+four rows
+--- test5 ---
+2
+3
+4
+5
+---
+four rows again
+--- test5 ---
+2
+3
+4
+5
+---
+end of test
+
diff --git a/ext/interbase/tests/006.phpt b/ext/interbase/tests/006.phpt
new file mode 100644
index 0000000000..bad07e3315
--- /dev/null
+++ b/ext/interbase/tests/006.phpt
@@ -0,0 +1,227 @@
+--TEST--
+InterBase: binding (may take a while)
+--SKIPIF--
+<?php if (!extension_loaded("interbase")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?
+/* $Id$ */
+
+ require("interbase/interbase.inc");
+
+ $test_base = "ibase_test.tmp";
+
+ ibase_connect($test_base);
+
+ ibase_query(
+ "create table test6 (
+ iter integer,
+ v_char char(1000),
+ v_date date,
+ 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_commit();
+
+ /* if timefmt not supported, hide error */
+ @ibase_timefmt("%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";
+ }
+ ibase_free_result($sel);
+ }/* for($iter)*/
+
+ echo "select\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);
+
+ /* 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_date',$v_decimal, $v_integer,
+ $v_numeric, $v_smallint, '$v_varchar')");
+
+ /* test all types */
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_char = ?", $v_char)))
+ echo "CHAR fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_date = ?", $v_date)))
+ echo "DATE fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_decimal = ?", $v_decimal)))
+ echo "DECIMAL fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_integer = ?", $v_integer)))
+ echo "INTEGER fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_numeric = ?", $v_numeric)))
+ echo "NUMERIC fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_smallint = ?", $v_smallint)))
+ echo "SMALLINT fail\n";
+ ibase_free_result($sel);
+ if(!($sel = ibase_query(
+ "select iter from test6 where v_varchar = ?", $v_varchar)))
+ 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.5);
+ out_result($res, "test6");
+ ibase_free_result($res);
+
+ ibase_free_query($query);
+ 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
+---
+end of test
+
diff --git a/ext/interbase/tests/extension b/ext/interbase/tests/extension
new file mode 100755
index 0000000000..3b561c46a9
--- /dev/null
+++ b/ext/interbase/tests/extension
@@ -0,0 +1 @@
+InterBase
diff --git a/ext/interbase/tests/interbase.inc b/ext/interbase/tests/interbase.inc
new file mode 100755
index 0000000000..f261cb01b5
--- /dev/null
+++ b/ext/interbase/tests/interbase.inc
@@ -0,0 +1,77 @@
+<?
+/* $Id$ */
+/* used in tests */
+
+srand((double)microtime()*1000000);
+
+function out_table($table_name)
+{
+ echo "--- $table_name ---\n";
+ $res = ibase_query("select * from $table_name");
+ $f = ibase_num_fields($res);
+ while ($r = ibase_fetch_row($res)){
+ for($i = 0; $i < $f; $i++)
+ echo "$r[$i]\t";
+ echo "\n";
+ }
+ ibase_free_result($res);
+ echo "---\n";
+}
+
+function out_result($result, $table_name = "")
+{
+ echo "--- $table_name ---\n";
+ $f = ibase_num_fields($result);
+ while ($r = ibase_fetch_row($result)){
+ for($i = 0; $i < $f; $i++)
+ echo "$r[$i]\t";
+ echo "\n";
+ }
+ echo "---\n";
+}
+
+/* M/D/Y H:M:S */
+function rand_datetime()
+{
+ return sprintf("%02d/%02d/%4d %02d:%02d:%02d",
+ rand()%12+1, rand()%28+1, rand()%100+1910,
+ rand()%24, rand()%60, rand()%60);
+}
+
+/* random binary string */
+function rand_binstr($max_len)
+{
+ $len = rand() % $max_len;
+ $s = "";
+ while($len--)
+ $s .= sprintf("%c", rand() % 256);
+ return $s;
+}
+
+function rand_str($max_len)
+{
+ $len = rand() % $max_len;
+ $s = "";
+ while($len--)
+ $s .= sprintf("%c", rand() % 26 + 65);;
+ return $s;
+}
+
+function rand_number($len , $prec = -1, $sign = 1)
+{
+ if($prec == -1){
+ $n = substr(rand() . rand(), 0, rand() % $len + 1);
+ if(strlen($n) < $len)
+ $n .= "." . substr(rand(), 0, rand() % ($len - strlen($n)) + 1);
+ }elseif ($prec == 0){
+ $n = substr(rand() . rand(), 0, rand() % $len + 1);
+ }else{
+ $n = substr(rand() . rand(), 0, rand() % ($len - $prec) + 1);
+ $n .= "." . substr(rand(), 0, $prec);
+ }
+ if($sign && (rand() % 3 == 0))
+ $n = "-" .$n;
+ return $n;
+}
+
+?> \ No newline at end of file