]> granicus.if.org Git - php/commitdiff
Test array handling
authorArd Biesheuvel <abies@php.net>
Fri, 5 Sep 2003 13:08:41 +0000 (13:08 +0000)
committerArd Biesheuvel <abies@php.net>
Fri, 5 Sep 2003 13:08:41 +0000 (13:08 +0000)
ext/interbase/tests/007.phpt [new file with mode: 0644]

diff --git a/ext/interbase/tests/007.phpt b/ext/interbase/tests/007.phpt
new file mode 100644 (file)
index 0000000..54e0121
--- /dev/null
@@ -0,0 +1,185 @@
+--TEST--
+InterBase: array handling
+--SKIPIF--
+<?php include("skipif.inc"); ?>
+--POST--
+--GET--
+--FILE--
+<?php
+
+       require("interbase.inc");
+       
+       ibase_connect($test_base);
+       
+       ibase_query(
+               "create table test7 (
+                       iter            integer,
+                       v_multi         integer[10,10,10],
+                       v_char          char(100)[10],
+                       v_date      timestamp[10],
+                       v_decimal   decimal(18,3)[10],
+                       v_double        double precision[10],
+                       v_float     float[10],
+                       v_integer   integer[10],
+                       v_numeric   numeric(9,2)[10],
+                       v_smallint  smallint[10],
+                       v_varchar   varchar(1000)[10]
+                       )");
+       ibase_commit();
+
+       /* if timefmt not supported, hide error */
+       @ibase_timefmt("%m/%d/%Y %H:%M:%S");
+
+       echo "insert\n";
+       
+       for ($i = 1; $i <= 10; ++$i) {
+               for ($j = 1; $j <= 10; ++$j) {
+                       for ($k = 1; $k <= 10; ++$k) {
+                               $v_multi[$i][$j][$k] = $i * $j * $k;
+                       }
+               }
+       }
+                               
+       for($iter = 0; $iter < 3; $iter++) {
+
+               /* prepare data  */
+               $v_char = array();
+               $v_date = array();
+               $v_decimal = array();
+               $v_double  = array();
+               $v_float = array();
+               $v_integer = array();
+               $v_numeric = array();
+               $v_smallint = array();
+               $v_varchar = array();
+
+               for ($i = 1; $i <= 10; ++$i) {
+                       $v_char[$i] = rand_str(100);
+                       $v_date[$i] = rand_datetime();
+                       $v_decimal[$i] = rand_number(18,3);
+                       $v_double[$i]  = rand_number(20);
+                       $v_float[$i]   = rand_number(7);
+                       $v_integer[$i] = rand_number(9,0);
+                       $v_numeric[$i] = rand_number(9,2);
+                       $v_smallint[$i] = rand_number(5) % 32767;
+                       $v_varchar[$i] = rand_str(1000);
+               }
+               
+               ibase_query("insert into test7
+                       (iter,v_multi,v_char,v_date,v_decimal,v_double,v_float,
+                       v_integer,v_numeric,v_smallint,v_varchar)
+                       values (?,?,?,?,?,?,?,?,?,?,?)",
+                       $iter, $v_multi, $v_char, $v_date, $v_decimal, $v_double, $v_float,
+                       $v_integer, $v_numeric, $v_smallint, $v_varchar);
+               $sel = ibase_query("select * from test7 where iter = $iter");
+
+               $row = ibase_fetch_object($sel,IBASE_FETCH_ARRAYS);
+               for ($i = 1; $i <= 10; ++$i) {
+                       
+                       if(strncmp($row->V_CHAR[$i],$v_char[$i],strlen($v_char[$i])) != 0) {
+                               echo " CHAR[$i] fail:\n";
+                               echo " in:  ".$v_char[$i]."\n";
+                               echo " out: ".$row->V_CHAR[$i]."\n";
+                       }
+                       if($row->V_DATE[$i] != $v_date[$i]) {
+                               echo " DATE[$i] fail\n";
+                               echo " in:  ".$v_date[$i]."\n";
+                               echo " out: ".$row->V_DATE[$i]."\n";
+                       }
+                       if($row->V_DECIMAL[$i] != $v_decimal[$i]) {
+                               echo " DECIMAL[$i] fail\n";
+                               echo " in:  ".$v_decimal[$i]."\n";
+                               echo " out: ".$row->V_DECIMAL[$i]."\n";
+                       }
+                       if(abs($row->V_DOUBLE[$i] - $v_double[$i]) > abs($v_double[$i] / 1E15)) {
+                               echo " DOUBLE[$i] fail\n";
+                               echo " in:  ".$v_double[$i]."\n";
+                               echo " out: ".$row->V_DOUBLE[$i]."\n";
+                       }
+                       if(abs($row->V_FLOAT[$i] - $v_float[$i]) > abs($v_float[$i] / 1E7)) {
+                               echo " FLOAT[$i] fail\n";
+                               echo " in:  ".$v_float[$i]."\n";
+                               echo " out: ".$row->V_FLOAT[$i]."\n";
+                       }
+                       if($row->V_INTEGER[$i] != $v_integer[$i]) {
+                               echo " INTEGER[$i] fail\n";
+                               echo " in:  ".$v_integer[$i]."\n";
+                               echo " out: ".$row->V_INTEGER[$i]."\n";
+                       }
+                       if ($row->V_NUMERIC[$i] != $v_numeric[$i]) {
+                               echo " NUMERIC[$i] fail\n";
+                               echo " in:  ".$v_numeric[$i]."\n";
+                               echo " out: ".$row->V_NUMERIC[$i]."\n";
+                       }
+                       if ($row->V_SMALLINT[$i] != $v_smallint[$i]) {
+                               echo " SMALLINT[$i] fail\n";
+                               echo " in:  ".$v_smallint[$i]."\n";
+                               echo " out: ".$row->V_SMALLINT[$i]."\n";
+                       }
+                       if ($row->V_VARCHAR[$i] != $v_varchar[$i]) {
+                               echo " VARCHAR[$i] fail:\n";
+                               echo " in:  ".$v_varchar[$i]."\n";
+                               echo " out: ".$row->V_VARCHAR[$i]."\n";
+                       }
+               }
+               ibase_free_result($sel);
+       }/* for($iter) */
+
+       echo "select\n";
+       
+       $sel = ibase_query("SELECT v_multi[5,5,5],v_multi[10,10,10] FROM test7 WHERE iter = 0");
+       print_r(ibase_fetch_row($sel));
+       ibase_free_result($sel);
+
+       for($iter = 1; $iter <= 3; $iter++) {
+
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_char[$iter] LIKE ?", $v_char[$iter]."%")) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "CHAR fail\n";
+               }
+               ibase_free_result($sel);
+
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_date[$iter] = ?", $v_date[$iter])) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "DATE fail\n";
+               }
+               ibase_free_result($sel);
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_decimal[$iter] = ?", $v_decimal[$iter])) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "DECIMAL fail\n";
+               }
+               ibase_free_result($sel);
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_integer[$iter] = ?", $v_integer[$iter])) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "INTEGER fail\n";
+               }
+               ibase_free_result($sel);
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_numeric[$iter] = ?", $v_numeric[$iter])) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "NUMERIC fail\n";
+               }
+               ibase_free_result($sel);
+               if(!($sel = ibase_query(
+                       "select iter from test7 where v_smallint[$iter] = ?", $v_smallint[$iter])) ||
+                       !ibase_fetch_row($sel)) {
+                       echo "SMALLINT fail\n";
+               }
+               ibase_free_result($sel);
+       }
+       ibase_close();
+       echo "end of test\n";
+?>
+--EXPECT--
+insert
+select
+Array
+(
+    [0] => 125
+    [1] => 1000
+)
+end of test