summaryrefslogtreecommitdiff
path: root/ext/standard/tests
diff options
context:
space:
mode:
authorandy wharmby <wharmby@php.net>2009-01-19 15:54:45 +0000
committerandy wharmby <wharmby@php.net>2009-01-19 15:54:45 +0000
commitce85cecb55fd48b5f5083079f5326d3a513a9ded (patch)
tree7cc7d33a34f6c49d369a8e04cbccb6a0504091ec /ext/standard/tests
parent8be7bef0a6e50ec5fc34d6ca96f1b77714d51949 (diff)
downloadphp-git-ce85cecb55fd48b5f5083079f5326d3a513a9ded.tar.gz
New strval() tests. Tested on Windows, Linux and Linux 64 bit.
Diffstat (limited to 'ext/standard/tests')
-rw-r--r--ext/standard/tests/strings/strval_basic.phpt77
-rw-r--r--ext/standard/tests/strings/strval_error.phpt51
-rw-r--r--ext/standard/tests/strings/strval_variation1.phpt190
-rw-r--r--ext/standard/tests/strings/strval_variation2.phpt82
4 files changed, 400 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/strval_basic.phpt b/ext/standard/tests/strings/strval_basic.phpt
new file mode 100644
index 0000000000..9d2d1af197
--- /dev/null
+++ b/ext/standard/tests/strings/strval_basic.phpt
@@ -0,0 +1,77 @@
+--TEST--
+Test strval() function : basic functionality
+--FILE--
+<?php
+/* Prototype : string strval ( mixed $var )
+ * Description: Get the string value of a variable.
+ * Source code: ext/standard/string.c
+ */
+
+echo "*** Testing strval() : basic variations ***\n";
+
+error_reporting(E_ALL ^ E_NOTICE);
+
+$simple_heredoc =<<<EOT
+Simple HEREDOC string
+EOT;
+
+
+//array of values to iterate over
+$values = array(
+ // Simple strings
+/*1*/ "Hello World",
+ 'Hello World',
+
+ // String with control chars
+/*3*/ "String\nwith\ncontrol\ncharacters\r\n",
+
+ // String with quotes
+/*4*/ "String with \"quotes\"",
+
+ //Numeric String
+/*5*/ "123456",
+
+ // Hexadecimal string
+/*6*/ "0xABC",
+
+ //Heredoc String
+/*7*/ $simple_heredoc
+);
+
+// loop through each element of the array for strval
+$iterator = 1;
+foreach($values as $value) {
+ echo "\n-- Iteration $iterator --\n";
+ var_dump( strval($value) );
+ $iterator++;
+};
+?>
+===DONE===
+--EXPECTF--
+*** Testing strval() : basic variations ***
+
+-- Iteration 1 --
+unicode(11) "Hello World"
+
+-- Iteration 2 --
+unicode(11) "Hello World"
+
+-- Iteration 3 --
+unicode(32) "String
+with
+control
+characters
+"
+
+-- Iteration 4 --
+unicode(20) "String with "quotes""
+
+-- Iteration 5 --
+unicode(6) "123456"
+
+-- Iteration 6 --
+unicode(5) "0xABC"
+
+-- Iteration 7 --
+unicode(21) "Simple HEREDOC string"
+===DONE=== \ No newline at end of file
diff --git a/ext/standard/tests/strings/strval_error.phpt b/ext/standard/tests/strings/strval_error.phpt
new file mode 100644
index 0000000000..c31a2ab35b
--- /dev/null
+++ b/ext/standard/tests/strings/strval_error.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test strval() function : usage variations - error conditions
+--FILE--
+<?php
+/* Prototype : string strval ( mixed $var )
+ * Description: Get the string value of a variable.
+ * Source code: ext/standard/string.c
+ */
+
+echo "*** Testing strval() : error conditions ***\n";
+
+error_reporting(E_ALL ^ E_NOTICE);
+
+class MyClass
+{
+ // no toString() method defined
+}
+
+$string = "Hello";
+$extra_arg = 10;
+
+//Test strval with one more than the expected number of arguments
+echo "\n-- Testing strval() function with more than expected no. of arguments --\n";
+var_dump( strval($string, $extra_arg) );
+
+// Testing strval with one less than the expected number of arguments
+echo "\n-- Testing strval() function with less than expected no. of arguments --\n";
+var_dump( strval() );
+
+// Testing strval with a object which has no toString() method
+echo "\n-- Testing strval() function with object which has not toString() method --\n";
+var_dump( strval(new MyClass()) );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing strval() : error conditions ***
+
+-- Testing strval() function with more than expected no. of arguments --
+
+Warning: strval() expects exactly 1 parameter, 2 given in %s on line %d
+NULL
+
+-- Testing strval() function with less than expected no. of arguments --
+
+Warning: strval() expects exactly 1 parameter, 0 given in %s on line %d
+NULL
+
+-- Testing strval() function with object which has not toString() method --
+
+Catchable fatal error: Object of class MyClass could not be converted to string in %s on line %d \ No newline at end of file
diff --git a/ext/standard/tests/strings/strval_variation1.phpt b/ext/standard/tests/strings/strval_variation1.phpt
new file mode 100644
index 0000000000..b397bd4e5f
--- /dev/null
+++ b/ext/standard/tests/strings/strval_variation1.phpt
@@ -0,0 +1,190 @@
+--TEST--
+Test strval() function : usage variations - Pass different data types as strval
+--FILE--
+<?php
+/* Prototype : string strval ( mixed $var )
+ * Description: Get the string value of a variable.
+ * Source code: ext/standard/string.c
+ */
+
+echo "*** Testing strval() : usage variations ***\n";
+
+error_reporting(E_ALL ^ E_NOTICE);
+
+//get an unset variable
+$unset_var = 10;
+unset ($unset_var);
+
+//getting the resource
+$file_handle = fopen(__FILE__, "r");
+
+class MyClass
+{
+ function __toString() {
+ return "MyClass";
+ }
+}
+
+//array of values to iterate over
+$values = array(
+ //Decimal values
+/*1*/ 0,
+ 1,
+ 12345,
+ -12345,
+
+ //Octal values
+/*5*/ 02,
+ 010,
+ 030071,
+ -030071,
+
+ //Hexadecimal values
+/*9*/ 0x0,
+ 0x1,
+ 0xABCD,
+ -0xABCD,
+
+ // float data
+/*13*/ 100.5,
+ -100.5,
+ 100.1234567e10,
+ 100.7654321E-10,
+ .5,
+
+ // array data
+/*18*/ array(),
+ array('color' => 'red', 'item' => 'pen'),
+
+ // null data
+/*20*/ NULL,
+ null,
+
+ // boolean data
+/*22*/ true,
+ false,
+ TRUE,
+ FALSE,
+
+ // empty data
+/*26*/ "",
+ '',
+
+ // object data
+/*28*/ new MyClass(),
+
+ // resource
+/*29*/ $file_handle,
+
+ // undefined data
+/*30*/ @$undefined_var,
+
+ // unset data
+/*31*/ @$unset_var,
+);
+
+// loop through each element of the array for strval
+$iterator = 1;
+foreach($values as $value) {
+ echo "\n-- Iteration $iterator --\n";
+ var_dump( strval($value) );
+ $iterator++;
+};
+?>
+===DONE===
+--EXPECTF--
+*** Testing strval() : usage variations ***
+
+-- Iteration 1 --
+unicode(1) "0"
+
+-- Iteration 2 --
+unicode(1) "1"
+
+-- Iteration 3 --
+unicode(5) "12345"
+
+-- Iteration 4 --
+unicode(6) "-12345"
+
+-- Iteration 5 --
+unicode(1) "2"
+
+-- Iteration 6 --
+unicode(1) "8"
+
+-- Iteration 7 --
+unicode(5) "12345"
+
+-- Iteration 8 --
+unicode(6) "-12345"
+
+-- Iteration 9 --
+unicode(1) "0"
+
+-- Iteration 10 --
+unicode(1) "1"
+
+-- Iteration 11 --
+unicode(5) "43981"
+
+-- Iteration 12 --
+unicode(6) "-43981"
+
+-- Iteration 13 --
+unicode(5) "100.5"
+
+-- Iteration 14 --
+unicode(6) "-100.5"
+
+-- Iteration 15 --
+unicode(13) "1001234567000"
+
+-- Iteration 16 --
+unicode(14) "1.007654321E-8"
+
+-- Iteration 17 --
+unicode(3) "0.5"
+
+-- Iteration 18 --
+unicode(5) "Array"
+
+-- Iteration 19 --
+unicode(5) "Array"
+
+-- Iteration 20 --
+unicode(0) ""
+
+-- Iteration 21 --
+unicode(0) ""
+
+-- Iteration 22 --
+unicode(1) "1"
+
+-- Iteration 23 --
+unicode(0) ""
+
+-- Iteration 24 --
+unicode(1) "1"
+
+-- Iteration 25 --
+unicode(0) ""
+
+-- Iteration 26 --
+unicode(0) ""
+
+-- Iteration 27 --
+unicode(0) ""
+
+-- Iteration 28 --
+unicode(7) "MyClass"
+
+-- Iteration 29 --
+unicode(%d) "Resource id #%d"
+
+-- Iteration 30 --
+unicode(0) ""
+
+-- Iteration 31 --
+unicode(0) ""
+===DONE=== \ No newline at end of file
diff --git a/ext/standard/tests/strings/strval_variation2.phpt b/ext/standard/tests/strings/strval_variation2.phpt
new file mode 100644
index 0000000000..c4f7d3a482
--- /dev/null
+++ b/ext/standard/tests/strings/strval_variation2.phpt
@@ -0,0 +1,82 @@
+--TEST--
+Test strval() function : usage variations - Pass all valid char codes
+--FILE--
+<?php
+/* Prototype : string strval ( mixed $var )
+ * Description: Get the string value of a variable.
+ * Source code: ext/standard/string.c
+ */
+
+echo "*** Testing strval() : usage variations - Pass all valid char codes ***\n";
+
+$s0 = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f";
+$s1 = "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f";
+$s2 = "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f";
+$s3 = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f";
+$s4 = "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f";
+$s5 = "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f";
+$s6 = "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f";
+$s7 = "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f";
+$s8 = "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f";
+$s9 = "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f";
+$sa = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf";
+$sb = "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf";
+$sc = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf";
+$sd = "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf";
+$se = "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef";
+$sf = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
+
+echo bin2hex((binary)strval($s0));
+echo "\n";
+echo bin2hex((binary)strval($s1));
+echo "\n";
+echo bin2hex((binary)strval($s2));
+echo "\n";
+echo bin2hex((binary)strval($s3));
+echo "\n";
+echo bin2hex((binary)strval($s4));
+echo "\n";
+echo bin2hex((binary)strval($s5));
+echo "\n";
+echo bin2hex((binary)strval($s6));
+echo "\n";
+echo bin2hex((binary)strval($s7));
+echo "\n";
+echo bin2hex((binary)strval($s8));
+echo "\n";
+echo bin2hex((binary)strval($s9));
+echo "\n";
+echo bin2hex((binary)strval($sa));
+echo "\n";
+echo bin2hex((binary)strval($sb));
+echo "\n";
+echo bin2hex((binary)strval($sc));
+echo "\n";
+echo bin2hex((binary)strval($sd));
+echo "\n";
+echo bin2hex((binary)strval($se));
+echo "\n";
+echo bin2hex((binary)strval($sf));
+echo "\n";
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing strval() : usage variations - Pass all valid char codes ***
+000102030405060708090a0b0c0d0e0f
+101112131415161718191a1b1c1d1e1f
+202122232425262728292a2b2c2d2e2f
+303132333435363738393a3b3c3d3e3f
+404142434445464748494a4b4c4d4e4f
+505152535455565758595a5b5c5d5e5f
+606162636465666768696a6b6c6d6e6f
+707172737475767778797a7b7c7d7e7f
+808182838485868788898a8b8c8d8e8f
+909192939495969798999a9b9c9d9e9f
+a0a1a2a3a4a5a6a7a8a9aaabacadaeaf
+b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
+c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
+d0d1d2d3d4d5d6d7d8d9dadbdcdddedf
+e0e1e2e3e4e5e6e7e8e9eaebecedeeef
+f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
+===DONE=== \ No newline at end of file