Return to 007.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / interbase / tests |
1.1 misho 1: --TEST--
2: InterBase: array handling
3: --SKIPIF--
4: <?php include("skipif.inc"); ?>
5: --FILE--
1.1.1.2 ! misho 6: <?php /* $Id$ */
1.1 misho 7:
8: require("interbase.inc");
9:
10: ibase_connect($test_base);
11:
12: ibase_query(
13: "create table test7 (
14: iter integer,
15: v_multi integer[10,10,10],
16: v_char char(100)[10],
17: v_date timestamp[10],
18: v_decimal decimal(18,3)[10],
19: v_double double precision[10],
20: v_float float[10],
21: v_integer integer[10],
22: v_numeric numeric(9,2)[10],
23: v_smallint smallint[10],
24: v_varchar varchar(1000)[10]
25: )");
26: ibase_commit();
27:
28: /* if timefmt not supported, hide error */
29: ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
30:
31: echo "insert\n";
32:
33: for ($i = 1; $i <= 10; ++$i) {
34: for ($j = 1; $j <= 10; ++$j) {
35: for ($k = 1; $k <= 10; ++$k) {
36: $v_multi[$i][$j][$k] = $i * $j * $k;
37: }
38: }
39: }
40:
41: for($iter = 0; $iter < 3; $iter++) {
42:
43: /* prepare data */
44: $v_char = array();
45: $v_date = array();
46: $v_decimal = array();
47: $v_double = array();
48: $v_float = array();
49: $v_integer = array();
50: $v_numeric = array();
51: $v_smallint = array();
52: $v_varchar = array();
53:
54: for ($i = 1; $i <= 10; ++$i) {
55: $v_char[$i] = rand_str(100);
56: $v_date[$i] = rand_datetime();
57: $v_decimal[$i] = rand_number(18,3);
58: $v_double[$i] = rand_number(20);
59: $v_float[$i] = rand_number(7);
60: $v_integer[$i] = rand_number(9,0);
61: $v_numeric[$i] = rand_number(9,2);
62: $v_smallint[$i] = rand_number(5) % 32767;
63: $v_varchar[$i] = rand_str(1000);
64: }
65:
66: ibase_query("insert into test7
67: (iter,v_multi,v_char,v_date,v_decimal,v_double,v_float,
68: v_integer,v_numeric,v_smallint,v_varchar)
69: values (?,?,?,?,?,?,?,?,?,?,?)",
70: $iter, $v_multi, $v_char, $v_date, $v_decimal, $v_double, $v_float,
71: $v_integer, $v_numeric, $v_smallint, $v_varchar);
72: $sel = ibase_query("select * from test7 where iter = $iter");
73:
74: $row = ibase_fetch_object($sel,IBASE_FETCH_ARRAYS);
75: for ($i = 1; $i <= 10; ++$i) {
76:
77: if(strncmp($row->V_CHAR[$i],$v_char[$i],strlen($v_char[$i])) != 0) {
78: echo " CHAR[$i] fail:\n";
79: echo " in: ".$v_char[$i]."\n";
80: echo " out: ".$row->V_CHAR[$i]."\n";
81: }
82: if($row->V_DATE[$i] != $v_date[$i]) {
83: echo " DATE[$i] fail\n";
84: echo " in: ".$v_date[$i]."\n";
85: echo " out: ".$row->V_DATE[$i]."\n";
86: }
87: if($row->V_DECIMAL[$i] != $v_decimal[$i]) {
88: echo " DECIMAL[$i] fail\n";
89: echo " in: ".$v_decimal[$i]."\n";
90: echo " out: ".$row->V_DECIMAL[$i]."\n";
91: }
92: if(abs($row->V_DOUBLE[$i] - $v_double[$i]) > abs($v_double[$i] / 1E15)) {
93: echo " DOUBLE[$i] fail\n";
94: echo " in: ".$v_double[$i]."\n";
95: echo " out: ".$row->V_DOUBLE[$i]."\n";
96: }
97: if(abs($row->V_FLOAT[$i] - $v_float[$i]) > abs($v_float[$i] / 1E7)) {
98: echo " FLOAT[$i] fail\n";
99: echo " in: ".$v_float[$i]."\n";
100: echo " out: ".$row->V_FLOAT[$i]."\n";
101: }
102: if($row->V_INTEGER[$i] != $v_integer[$i]) {
103: echo " INTEGER[$i] fail\n";
104: echo " in: ".$v_integer[$i]."\n";
105: echo " out: ".$row->V_INTEGER[$i]."\n";
106: }
107: if ($row->V_NUMERIC[$i] != $v_numeric[$i]) {
108: echo " NUMERIC[$i] fail\n";
109: echo " in: ".$v_numeric[$i]."\n";
110: echo " out: ".$row->V_NUMERIC[$i]."\n";
111: }
112: if ($row->V_SMALLINT[$i] != $v_smallint[$i]) {
113: echo " SMALLINT[$i] fail\n";
114: echo " in: ".$v_smallint[$i]."\n";
115: echo " out: ".$row->V_SMALLINT[$i]."\n";
116: }
117: if ($row->V_VARCHAR[$i] != $v_varchar[$i]) {
118: echo " VARCHAR[$i] fail:\n";
119: echo " in: ".$v_varchar[$i]."\n";
120: echo " out: ".$row->V_VARCHAR[$i]."\n";
121: }
122: }
123: ibase_free_result($sel);
124: }/* for($iter) */
125:
126: echo "select\n";
127:
128: $sel = ibase_query("SELECT v_multi[5,5,5],v_multi[10,10,10] FROM test7 WHERE iter = 0");
129: print_r(ibase_fetch_row($sel));
130: ibase_free_result($sel);
131:
132: for($iter = 1; $iter <= 3; $iter++) {
133:
134: if(!($sel = ibase_query(
135: "select iter from test7 where v_char[$iter] LIKE ?", $v_char[$iter]."%")) ||
136: !ibase_fetch_row($sel)) {
137: echo "CHAR fail\n";
138: }
139: ibase_free_result($sel);
140:
141: if(!($sel = ibase_query(
142: "select iter from test7 where v_date[$iter] = ?", $v_date[$iter])) ||
143: !ibase_fetch_row($sel)) {
144: echo "DATE fail\n";
145: }
146: ibase_free_result($sel);
147: if(!($sel = ibase_query(
148: "select iter from test7 where v_decimal[$iter] = ?", $v_decimal[$iter])) ||
149: !ibase_fetch_row($sel)) {
150: echo "DECIMAL fail\n";
151: }
152: ibase_free_result($sel);
153: if(!($sel = ibase_query(
154: "select iter from test7 where v_integer[$iter] = ?", $v_integer[$iter])) ||
155: !ibase_fetch_row($sel)) {
156: echo "INTEGER fail\n";
157: }
158: ibase_free_result($sel);
159: if(!($sel = ibase_query(
160: "select iter from test7 where v_numeric[$iter] = ?", $v_numeric[$iter])) ||
161: !ibase_fetch_row($sel)) {
162: echo "NUMERIC fail\n";
163: }
164: ibase_free_result($sel);
165: if(!($sel = ibase_query(
166: "select iter from test7 where v_smallint[$iter] = ?", $v_smallint[$iter])) ||
167: !ibase_fetch_row($sel)) {
168: echo "SMALLINT fail\n";
169: }
170: ibase_free_result($sel);
171: }
172: ibase_close();
173: echo "end of test\n";
174: ?>
175: --EXPECT--
176: insert
177: select
178: Array
179: (
180: [0] => 125
181: [1] => 1000
182: )
183: end of test