]> granicus.if.org Git - php/commitdiff
New tests
authorChristopher Jones <sixd@php.net>
Thu, 30 Aug 2007 17:33:00 +0000 (17:33 +0000)
committerChristopher Jones <sixd@php.net>
Thu, 30 Aug 2007 17:33:00 +0000 (17:33 +0000)
ext/oci8/tests/rowid_bind.phpt [new file with mode: 0644]
ext/oci8/tests/xmltype_01.phpt [new file with mode: 0644]

diff --git a/ext/oci8/tests/rowid_bind.phpt b/ext/oci8/tests/rowid_bind.phpt
new file mode 100644 (file)
index 0000000..f15d8f8
--- /dev/null
@@ -0,0 +1,86 @@
+--TEST--
+Test ROWID bind
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require(dirname(__FILE__)."/connect.inc");
+
+function do_query($c)
+{
+       $s = oci_parse($c, 'select address from rid_tab order by id');
+       $id = 1;
+       oci_execute($s, OCI_DEFAULT);
+       while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) {
+               var_dump($row);
+       }
+}
+
+$stmts = array(
+       "drop table rid_tab",
+       "create table rid_tab (id number, address varchar2(40))",
+       "insert into rid_tab (id, address) values (1, 'original text #1')",
+       "insert into rid_tab (id, address) values (2, 'original text #2')"
+);
+
+foreach ($stmts as $q) {
+       $s = oci_parse($c, $q);
+       @oci_execute($s);
+}
+
+echo "Initial Data\n";
+do_query($c);
+
+$s = oci_parse($c, 'select rowid, address from rid_tab where id = :l_bv for update');
+$id = 1;
+oci_bind_by_name($s, ':l_bv', $id);
+oci_execute($s, OCI_DEFAULT);
+$row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS);
+
+$rid = $row['ROWID'];
+$addr = $row['ADDRESS'];
+
+$addr = 'Some new text';
+
+// Save changes
+$s = oci_parse($c,'update rid_tab set address = :a_bv where rowid = :r_bv');
+oci_bind_by_name($s, ':r_bv', $rid, -1, OCI_B_ROWID);
+oci_bind_by_name($s, ':a_bv', $addr);
+oci_execute($s);
+
+echo "Verify Change\n";
+do_query($c);
+
+// Cleanup
+
+$stmts = array("drop table rid_tab");
+
+foreach ($stmts as $q) {
+       $s = oci_parse($c, $q);
+       @oci_execute($s);
+}
+
+echo "Done\n";
+
+?>
+--EXPECT--
+Initial Data
+array(1) {
+  ["ADDRESS"]=>
+  string(16) "original text #1"
+}
+array(1) {
+  ["ADDRESS"]=>
+  string(16) "original text #2"
+}
+Verify Change
+array(1) {
+  ["ADDRESS"]=>
+  string(13) "Some new text"
+}
+array(1) {
+  ["ADDRESS"]=>
+  string(16) "original text #2"
+}
+Done
diff --git a/ext/oci8/tests/xmltype_01.phpt b/ext/oci8/tests/xmltype_01.phpt
new file mode 100644 (file)
index 0000000..25dc2cf
--- /dev/null
@@ -0,0 +1,120 @@
+--TEST--
+Basic XMLType test
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require(dirname(__FILE__)."/connect.inc");
+
+// Initialization
+
+$stmts = array(
+       "drop table xtt",
+       "create table xtt
+                  (xt_id number, xt_spec xmltype)
+                  xmltype xt_spec store as clob",
+       "insert into xtt (xt_id, xt_spec) values
+         (1,
+          xmltype('<?xml version=\"1.0\"?>
+               <Xt>
+                 <XtId>1</XtId>
+                 <Size>Big</Size>
+                 <Area>12345</Area>
+                 <Hardness>20</Hardness>
+                 <Lip>Curved</Lip>
+                 <Color>Red</Color>
+                 <Nice>N</Nice>
+                 <Compact>Tiny</Compact>
+                 <Material>Steel</Material>
+               </Xt>'))"
+);
+
+foreach ($stmts as $q) {
+       $s = oci_parse($c, $q);
+       $r = @oci_execute($s);
+       if (!$r) {
+               $m = oci_error($s);
+               if ($m['code'] != 942) {  // table or view doesn't exist
+                       echo $m['message'], "\n";
+               }
+       }
+}
+
+function do_query($c)
+{
+       $s = oci_parse($c, 'select XMLType.getClobVal(xt_spec)
+                                       from xtt where xt_id = 1');
+       oci_execute($s);
+       $row = oci_fetch_row($s);       
+       $data = $row[0]->load();
+       var_dump($data);
+       return($data);
+}
+
+// Check
+echo "Initial Data\n";
+$data = do_query($c);
+
+// Manipulate the data using SimpleXML
+$sx = simplexml_load_string($data);
+$sx->Hardness = $sx->Hardness - 1;
+$sx->Nice = 'Y';
+
+// Insert changes using a temporary CLOB
+$s = oci_parse($c, 'update xtt
+                                       set xt_spec = XMLType(:clob)
+                                       where xt_id = 1');
+$lob = oci_new_descriptor($c, OCI_D_LOB);      
+oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
+$lob->writeTemporary($sx->asXml()); 
+oci_execute($s);       
+$lob->close();
+
+// Verify
+echo "Verify\n";
+$data = do_query($c);
+
+// Cleanup
+
+$stmts = array(
+       "drop table xtt",
+);
+
+foreach ($stmts as $q) {
+       $s = oci_parse($c, $q);
+       @oci_execute($s);
+}
+
+echo "Done\n";
+
+?>
+--EXPECT--
+Initial Data
+string(250) "<?xml version="1.0"?>
+               <Xt>
+                 <XtId>1</XtId>
+                 <Size>Big</Size>
+                 <Area>12345</Area>
+                 <Hardness>20</Hardness>
+                 <Lip>Curved</Lip>
+                 <Color>Red</Color>
+                 <Nice>N</Nice>
+                 <Compact>Tiny</Compact>
+                 <Material>Steel</Material>
+               </Xt>"
+Verify
+string(249) "<?xml version="1.0"?>
+<Xt>
+                 <XtId>1</XtId>
+                 <Size>Big</Size>
+                 <Area>12345</Area>
+                 <Hardness>19</Hardness>
+                 <Lip>Curved</Lip>
+                 <Color>Red</Color>
+                 <Nice>Y</Nice>
+                 <Compact>Tiny</Compact>
+                 <Material>Steel</Material>
+               </Xt>
+"
+Done