瀏覽代碼

Fix tests for added method DateTime::createFromImmutable()

Jan-E 6 年之前
父節點
當前提交
c87ddb8ebf
共有 2 個文件被更改,包括 326 次插入1 次删除
  1. 4 1
      tests/var_dump.phpt
  2. 322 0
      tests/var_dump_73.phpt

+ 4 - 1
tests/var_dump.phpt

@@ -1,7 +1,10 @@
 --TEST--
 Test V8::executeString() : var_dump
 --SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+<?php
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (PHP_VERSION_ID >= 70300) die('skip Only for php version < 7.3');
+?>
 --INI--
 date.timezone=UTC
 --FILE--

+ 322 - 0
tests/var_dump_73.phpt

@@ -0,0 +1,322 @@
+--TEST--
+Test V8::executeString() : var_dump
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (PHP_VERSION_ID < 70300) die('skip Only for php version >= 7.3');
+?>
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+# Test var_dump of various types
+
+$JS = <<< EOT
+
+print("--- JS var_dump of PHP object ----\\n");
+var_dump(PHP.phptypes);
+
+print("--- JS var_dump of JS object ----\\n");
+var types = {
+	undefined: undefined,
+	null: null,
+	bool: true,
+	string: "string",
+	uint: 1,
+	int: -1,
+	number: 3.141592654,
+	// XXX this gets parsed with local timezone,
+	//     which is bad for test repeatability.
+	//date: new Date('September 27, 1976 09:00:00 GMT'),
+	regexp: /regexp/,
+	array: [1,2,3],
+	object: { field: "foo" },
+	function: function id(x) { return x; },
+	phpobject: PHP.obj
+};
+
+var_dump(types);
+print("--- PHP var_dump of JS object ----\\n");
+types;
+EOT;
+
+class Foo {
+	  var $field = "php";
+}
+
+$v8 = new V8Js();
+$v8->obj = new Foo;
+
+$phptypes = $v8->phptypes = array(
+	"null" => NULL,
+	"bool" => true,
+	"string" => "string",
+	"uint" => 1,
+	"int" => -1,
+	"number" => 3.141592654,
+	"date" => new DateTime('September 27, 1976 09:00:00 UTC', new DateTimeZone('UTC')),
+	//"regexp" => new Regexp('/regexp/'), /* no native PHP regex type */
+	"array" => array(1,2,3),
+	"object" => array( "field" => "foo" ),
+	"function" => (function ($x) { return $x; }),
+	"phpobject" => new Foo
+);
+
+echo "---- PHP var_dump of PHP object ----\n";
+var_dump($phptypes);
+
+try {
+	var_dump($v8->executeString($JS, 'var_dump.js'));
+} catch (V8JsScriptException $e) {
+	echo "Error!\n";
+	var_dump($e);
+}
+?>
+===EOF===
+--EXPECTF--
+---- PHP var_dump of PHP object ----
+array(11) {
+  ["null"]=>
+  NULL
+  ["bool"]=>
+  bool(true)
+  ["string"]=>
+  string(6) "string"
+  ["uint"]=>
+  int(1)
+  ["int"]=>
+  int(-1)
+  ["number"]=>
+  float(3.141592654)
+  ["date"]=>
+  object(DateTime)#%d (3) {
+    ["date"]=>
+    string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"
+    ["timezone_type"]=>
+    int(3)
+    ["timezone"]=>
+    string(3) "UTC"
+  }
+  ["array"]=>
+  array(3) {
+    [0]=>
+    int(1)
+    [1]=>
+    int(2)
+    [2]=>
+    int(3)
+  }
+  ["object"]=>
+  array(1) {
+    ["field"]=>
+    string(3) "foo"
+  }
+  ["function"]=>
+  object(Closure)#%d (1) {
+    ["parameter"]=>
+    array(1) {
+      ["$x"]=>
+      string(10) "<required>"
+    }
+  }
+  ["phpobject"]=>
+  object(Foo)#%d (1) {
+    ["field"]=>
+    string(3) "php"
+  }
+}
+--- JS var_dump of PHP object ----
+array (11) {
+  ["null"] =>
+  NULL
+  ["bool"] =>
+  bool(true)
+  ["string"] =>
+  string(6) "string"
+  ["uint"] =>
+  int(1)
+  ["int"] =>
+  int(-1)
+  ["number"] =>
+  float(3.141593)
+  ["date"] =>
+  object(DateTime)#%d (19) {
+    ["createFromImmutable"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["createFromFormat"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["getLastErrors"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["format"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["modify"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["add"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["sub"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["getTimezone"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["setTimezone"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["getOffset"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["setTime"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["setDate"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["setISODate"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["setTimestamp"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["getTimestamp"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["diff"] =>
+    object(Closure)#%d {
+        function () { [native code] }
+    }
+    ["$date"] =>
+    string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"
+    ["$timezone_type"] =>
+    int(3)
+    ["$timezone"] =>
+    string(3) "UTC"
+  }
+  ["array"] =>
+  array(3) {
+    [0] =>
+    int(1)
+    [1] =>
+    int(2)
+    [2] =>
+    int(3)
+  }
+  ["object"] =>
+  array (1) {
+    ["field"] =>
+    string(3) "foo"
+  }
+  ["function"] =>
+  object(Closure)#%d (0) {
+  }
+  ["phpobject"] =>
+  object(Foo)#%d (1) {
+    ["$field"] =>
+    string(3) "php"
+  }
+}
+--- JS var_dump of JS object ----
+object(Object)#%d (12) {
+  ["undefined"] =>
+  NULL
+  ["null"] =>
+  NULL
+  ["bool"] =>
+  bool(true)
+  ["string"] =>
+  string(6) "string"
+  ["uint"] =>
+  int(1)
+  ["int"] =>
+  int(-1)
+  ["number"] =>
+  float(3.141593)
+  ["regexp"] =>
+  regexp(/regexp/)
+  ["array"] =>
+  array(3) {
+    [0] =>
+    int(1)
+    [1] =>
+    int(2)
+    [2] =>
+    int(3)
+  }
+  ["object"] =>
+  object(Object)#%d (1) {
+    ["field"] =>
+    string(3) "foo"
+  }
+  ["function"] =>
+  object(Closure)#%d {
+      function id(x) { return x; }
+  }
+  ["phpobject"] =>
+  object(Foo)#%d (1) {
+    ["$field"] =>
+    string(3) "php"
+  }
+}
+--- PHP var_dump of JS object ----
+object(V8Object)#%d (12) {
+  ["undefined"]=>
+  NULL
+  ["null"]=>
+  NULL
+  ["bool"]=>
+  bool(true)
+  ["string"]=>
+  string(6) "string"
+  ["uint"]=>
+  int(1)
+  ["int"]=>
+  int(-1)
+  ["number"]=>
+  float(3.141592654)
+  ["regexp"]=>
+  object(V8Object)#%d (0) {
+  }
+  ["array"]=>
+  array(3) {
+    [0]=>
+    int(1)
+    [1]=>
+    int(2)
+    [2]=>
+    int(3)
+  }
+  ["object"]=>
+  object(V8Object)#%d (1) {
+    ["field"]=>
+    string(3) "foo"
+  }
+  ["function"]=>
+  object(V8Function)#%d (0) {
+  }
+  ["phpobject"]=>
+  object(Foo)#%d (1) {
+    ["field"]=>
+    string(3) "php"
+  }
+}
+===EOF===