Browse Source

Merge branch 'patch-2' of https://github.com/HoffmannP/v8js into php7

Stefan Siegl 7 years ago
parent
commit
eba01e1088
1 changed files with 62 additions and 0 deletions
  1. 62 0
      tests/unicode.phpt

+ 62 - 0
tests/unicode.phpt

@@ -0,0 +1,62 @@
+--TEST
+Test V8::executeString() : Check if imported code works with some unicode symbols
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+# check if snapshots are supported
+define('V8_WITH_SNAPSHOT', method_exists("V8Js", "createSnapshot"));
+
+# maybe more characters (e.g. from http://www.ltg.ed.ac.uk/~richard/unicode-sample.html?)
+$unicode = 'äöüßÜÄÖÜ߀áàâÁÀµ²³▁▂▃▄▅▆▇█    ㌀ ㌁ ㌂ ㌃';
+$moduleFileBase = 'test';
+
+# insert unicode via snapshot
+if (V8_WITH_SNAPSHOT) {
+    $snapshot = V8Js::createSnapshot("var snapshot = {unicode: '" . $unicode . "'}");
+} else {
+    $snapshot = '';
+}
+
+# start V8Js
+$jscript = new V8Js('php', array(), array(), true, $snapshot);
+$jscript->setModuleLoader(function ($path) {
+    return file_get_contents($path . ".js");
+});
+
+# insert unicode via php var
+$jscript->unicode = $unicode;
+
+# insert unicode via executeString
+$jscript->executeString("var execStr = {unicode: '" . $unicode . "'}");
+
+# insert unicode via commonJS module
+file_put_contents("./$moduleFileBase.js", "module.exports = {unicode: '$unicode'}");
+$jscript->executeString("var module = require('./$moduleFileBase')");
+
+# return  to php
+$jscript->executeString("values = {}");
+if (V8_WITH_SNAPSHOT) {
+    $jscript->executeString("values['snapshot'] = snapshot.unicode");
+} else {
+  // if snapshots are not compiled shim this test
+  $jscript->executeString("values['snapshot'] = '" . $unicode . "'");
+}
+$jscript->executeString("values['php'] = php.unicode");
+$jscript->executeString("values['execStr'] = execStr.unicode");
+$jscript->executeString("values['module'] = module.unicode");
+$values = $jscript->executeString("values");
+
+echo "snapshot: $values->snapshot\n";
+echo "php     : $values->php\n";
+echo "execStr : $values->execStr\n";
+echo "module  : $values->module\n";
+?>
+--EXPECT--
+snapshot: äöüßÜÄÖÜ߀áàâÁÀµ²³▁▂▃▄▅▆▇█    ㌀ ㌁ ㌂ ㌃
+php     : äöüßÜÄÖÜ߀áàâÁÀµ²³▁▂▃▄▅▆▇█    ㌀ ㌁ ㌂ ㌃
+execStr : äöüßÜÄÖÜ߀áàâÁÀµ²³▁▂▃▄▅▆▇█    ㌀ ㌁ ㌂ ㌃
+--CLEAN--
+<?php
+unlink("./$moduleFileBase.js");
+?>