summaryrefslogtreecommitdiff
path: root/ext/oci8/tests
diff options
context:
space:
mode:
authorLior Kaplan <kaplanlior@gmail.com>2014-02-14 22:39:19 +0200
committerLior Kaplan <kaplanlior@gmail.com>2014-02-14 22:39:19 +0200
commitd67160a566757f858e5883201e518230f5221c6b (patch)
tree24f894d317e2f58e2d5372f39a1d53fa30885751 /ext/oci8/tests
parent575107aad92a460051e02de029067359083542b9 (diff)
downloadphp-d67160a566757f858e5883201e518230f5221c6b.tar.gz
Imported Upstream version 5.6.0~alpha2+dfsgupstream/5.6.0_alpha2+dfsg
Diffstat (limited to 'ext/oci8/tests')
-rw-r--r--ext/oci8/tests/bind_boolean_1.phpt138
-rw-r--r--ext/oci8/tests/error_bind_2.phpt63
-rw-r--r--ext/oci8/tests/error_bind_3.phpt48
3 files changed, 249 insertions, 0 deletions
diff --git a/ext/oci8/tests/bind_boolean_1.phpt b/ext/oci8/tests/bind_boolean_1.phpt
new file mode 100644
index 000000000..49ac03c88
--- /dev/null
+++ b/ext/oci8/tests/bind_boolean_1.phpt
@@ -0,0 +1,138 @@
+--TEST--
+Basic PL/SQL "BOOLEAN" (SQLT_BOL) bind test
+--SKIPIF--
+<?php
+if (!extension_loaded('oci8')) die ("skip no oci8 extension");
+require(dirname(__FILE__).'/connect.inc');
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
+if (!(isset($matches[0]) && $matches[1] >= 12)) {
+ die("skip expected output only valid when using Oracle Database 12c or greater");
+}
+preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
+if (!(isset($matches[0]) && $matches[0] >= 12)) {
+ die("skip works only with Oracle 12c or greater version of Oracle client libraries");
+}
+?>
+--FILE--
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+// Run Test
+
+echo "Test 1\n";
+
+$sql = "begin
+ :output1 := true;
+ :output2 := false;
+ end;";
+
+$s = oci_parse($c, $sql);
+oci_bind_by_name($s, ':output1', $output1, -1, OCI_B_BOL);
+oci_bind_by_name($s, ':output2', $output2, -1, OCI_B_BOL);
+oci_execute($s);
+var_dump($output1);
+var_dump($output2);
+
+echo "Test 2\n";
+
+$b = "abc"; // bind var type will change
+$sql = "begin :b := true; end;";
+$s = oci_parse($c, $sql);
+oci_bind_by_name($s, ':b', $b, -1, OCI_B_BOL);
+oci_execute($s);
+var_dump($b);
+
+
+echo "Test 3\n";
+
+$sql =
+ "begin
+ if (:input < 10) then
+ :output := true;
+ else
+ :output := false;
+ end if;
+end;";
+$s = oci_parse($c, $sql);
+oci_bind_by_name($s, ':output', $output, -1, OCI_B_BOL);
+for ($input = 5; $input < 15; ++$input) {
+ oci_bind_by_name($s, ':input', $input);
+ oci_execute($s);
+ var_dump($output);
+}
+
+echo "Test 4\n";
+
+$sql =
+"begin
+ if (mod(:userid,2) = 0) then
+ :b := true;
+ else
+ :b := false;
+ end if;
+end;";
+$s = oci_parse($c, $sql);
+oci_bind_by_name($s, ':b', $b, -1, OCI_B_BOL);
+for ($userid = 1; $userid <= 10; ++$userid) {
+ oci_bind_by_name($s, ':userid', $userid, -1, SQLT_INT);
+ oci_execute($s);
+ var_dump($b);
+}
+
+echo "Test 5\n";
+
+$sql =
+"declare
+ l boolean;
+begin
+ l := :b1;
+ :b1 := :b2;
+ :b2 := l;
+end;";
+$s = oci_parse($c, $sql);
+$b1 = true;
+$b2 = false;
+var_dump($b1, $b2);
+oci_bind_by_name($s, ':b1', $b1, -1, OCI_B_BOL);
+oci_bind_by_name($s, ':b2', $b2, -1, OCI_B_BOL);
+oci_execute($s);
+var_dump($b1, $b2);
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Test 1
+bool(true)
+bool(false)
+Test 2
+bool(true)
+Test 3
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+Test 4
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+Test 5
+bool(true)
+bool(false)
+bool(false)
+bool(true)
+===DONE===
diff --git a/ext/oci8/tests/error_bind_2.phpt b/ext/oci8/tests/error_bind_2.phpt
new file mode 100644
index 000000000..642716887
--- /dev/null
+++ b/ext/oci8/tests/error_bind_2.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Test some more oci_bind_by_name error conditions
+--SKIPIF--
+<?php
+if (!extension_loaded('oci8')) die ("skip no oci8 extension");
+$target_dbs = array('oracledb' => true, 'timesten' => true); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
+if (!(isset($matches[0]) && $matches[1] >= 12)) {
+ die("skip expected output only valid when using Oracle Database 12c or greater");
+}
+preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
+if (!(isset($matches[0]) && $matches[0] >= 12)) {
+ die("skip works only with Oracle 12c or greater version of Oracle client libraries");
+}
+?>
+--FILE--
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+// Initialization
+
+$stmtarray = array(
+ "drop table error_bind_2_tab",
+ "create table error_bind_2_tab(name varchar(10))"
+);
+oci8_test_sql_execute($c, $stmtarray);
+
+echo "Test 1 - SQLT_BOL\n";
+
+unset($name);
+$stmt = oci_parse($c, "insert into error_bind_2_tab values (:name)");
+oci_bind_by_name($stmt, ":name", $name, -1, SQLT_BOL);
+$name=$c;
+var_dump(oci_execute($stmt));
+
+echo "Test 2 - SQLT_BOL\n";
+
+unset($name);
+$stmt = oci_parse($c, "insert into error_bind_2_tab values (:name)");
+$name=$c;
+oci_bind_by_name($stmt, ":name", $name, -1, SQLT_BOL);
+
+// Clean up
+
+$stmtarray = array(
+ "drop table error_bind_2_tab",
+);
+oci8_test_sql_execute($c, $stmtarray);
+
+echo "Done\n";
+
+?>
+--EXPECTF--
+Test 1 - SQLT_BOL
+
+Warning: oci_execute(): Invalid variable used for bind in %s on line %d
+bool(false)
+Test 2 - SQLT_BOL
+
+Warning: oci_bind_by_name(): Invalid variable used for bind in %s on line %d
+Done
diff --git a/ext/oci8/tests/error_bind_3.phpt b/ext/oci8/tests/error_bind_3.phpt
new file mode 100644
index 000000000..7522dfe60
--- /dev/null
+++ b/ext/oci8/tests/error_bind_3.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test some more oci_bind_by_name error conditions
+--SKIPIF--
+<?php
+if (!extension_loaded('oci8')) die ("skip no oci8 extension");
+$target_dbs = array('oracledb' => true, 'timesten' => true); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
+if (!(isset($matches[0]) && $matches[1] >= 12)) {
+ die("skip expected output only valid when using Oracle Database 12c or greater");
+}
+preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
+if (!(isset($matches[0]) && $matches[0] >= 12)) {
+ die("skip works only with Oracle 12c or greater version of Oracle client libraries");
+}
+?>
+--FILE--
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+$sql = "begin
+ :output1 := 99;
+ :output2 := 'abc';
+ end;";
+
+$s = oci_parse($c, $sql);
+oci_bind_by_name($s, ':output1', $output1, -1, OCI_B_BOL);
+oci_bind_by_name($s, ':output2', $output2, -1, OCI_B_BOL);
+oci_execute($s);
+var_dump($output1);
+var_dump($output2);
+
+echo "Done\n";
+
+?>
+--EXPECTF--
+Warning: oci_execute(): ORA-06550: line %d, column %d:
+PLS-00382: %s
+ORA-06550: line %d, column %d:
+PL/SQL: %s
+ORA-06550: line %d, column %d:
+PLS-00382: %s
+ORA-06550: line %d, column %d:
+PL/SQL: %s in %s on line %d
+bool(false)
+bool(false)
+Done