aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/php/char_binary_runme.php
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/php/char_binary_runme.php')
-rw-r--r--Examples/test-suite/php/char_binary_runme.php39
1 files changed, 39 insertions, 0 deletions
diff --git a/Examples/test-suite/php/char_binary_runme.php b/Examples/test-suite/php/char_binary_runme.php
new file mode 100644
index 000000000..87c3fd40a
--- /dev/null
+++ b/Examples/test-suite/php/char_binary_runme.php
@@ -0,0 +1,39 @@
+<?php
+
+require "tests.php";
+
+check::functions(array('new_pchar', 'delete_pchar', 'pchar_getitem', 'pchar_setitem'));
+
+check::classes(array('Test', 'char_binary'));
+
+$t = new Test();
+$str = 'hile';
+check::equal(4, $t->strlen($str), "bad multi-arg typemap");
+check::equal(4, $t->ustrlen($str), "bad multi-arg typemap");
+check::equal(4, $t->strlen("hil\000"), "bad multi-arg typemap");
+check::equal(4, $t->ustrlen("hil\000"), "bad multi-arg typemap");
+
+// creating a raw char*
+$pc = new_pchar(5);
+pchar_setitem($pc, 0, 'h');
+pchar_setitem($pc, 1, 'o');
+pchar_setitem($pc, 2, 'l');
+pchar_setitem($pc, 3, 'a');
+pchar_setitem($pc, 4, 0);
+
+// FIXME: These don't work as we get the stringified pointer object, e.g.
+// "SWIGPointer(0x55dafc88c0a0,owned=0"
+if (0) {
+ check::equal($t->strlen($pc), 4, "bad multi-arg typemap");
+ check::equal($t->ustrlen($pc), 4, "bad multi-arg typemap");
+
+ var_pchar_set($pc);
+ check::equal(var_pchar_get(), "hola", "bad pointer case");
+
+ var_namet_set($pc);
+ check::equal(var_namet_get(), "hola", "bad pointer case");
+}
+
+delete_pchar($pc);
+
+check::done();