diff options
Diffstat (limited to 'ext/interbase/tests/006.phpt')
-rw-r--r-- | ext/interbase/tests/006.phpt | 301 |
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 + |