Add more unit tests for conversion operations.

A batch of small sanity tests for the new conv instructions.
Esse commit está contido em:
hermanv
2013-03-20 12:56:37 -07:00
commit de Sara Golemon
commit 186882bae7
13 arquivos alterados com 371 adições e 0 exclusões
+56
Ver Arquivo
@@ -0,0 +1,56 @@
<?php
function foo($v) {
return (bool)$v;
}
var_dump(foo(null));
var_dump(foo(true));
var_dump(foo(1));
var_dump(foo(1.1));
var_dump(foo("true"));
var_dump(foo(array(123)));
class C{}
function bar($i) {
$v1 = "undefined";
$v2 = "undefined";
$v3 = "undefined";
$v4 = "undefined";
$v5 = "undefined";
$v6 = "undefined";
$v7 = "undefined";
$v8 = "undefined";
$v9 = "undefined";
$v10 = "undefined";
$v11 = "undefined";
if ($i >= 1) {
$v1 = null;
$v2 = false;
$v3 = true;
$v4 = 0;
$v5 = 1;
$v6 = 0.0;
$v7 = 1.1;
$v8 = "false";
$v9 = new C();
$v10 = array();
$v11 = array(1);
}
var_dump((bool)$v1);
var_dump((bool)$v2);
var_dump((bool)$v3);
var_dump((bool)$v4);
var_dump((bool)$v5);
var_dump((bool)$v6);
var_dump((bool)$v7);
var_dump((bool)$v8);
var_dump((bool)$v9);
var_dump((bool)$v10);
var_dump((bool)$v11);
}
bar(1);
?>
+17
Ver Arquivo
@@ -0,0 +1,17 @@
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
+55
Ver Arquivo
@@ -0,0 +1,55 @@
<?php
function foo($v) {
return (double)$v;
}
var_dump(foo(null));
var_dump(foo(true));
var_dump(foo(1));
var_dump(foo(9007199254740992));
var_dump(foo(1.1));
var_dump(foo("abc"));
var_dump(foo(array(123)));
class C { public $foo = "bar"; }
var_dump(foo(new C));
function bar($i) {
$v1 = "undefined";
$v2 = "undefined";
$v3 = "undefined";
$v4 = "undefined";
$v5 = "undefined";
$v6 = "undefined";
$v7 = "undefined";
$v8 = "undefined";
$v9 = "undefined";
$v10 = "undefined";
$v11 = "undefined";
if ($i >= 1) {
$v1 = null;
$v2 = false;
$v3 = true;
$v4 = 0;
$v5 = "1";
$v6 = 0.0;
$v7 = "1.1";
$v8 = "abc";
$v9 = new C;
$v10 = array();
$v11 = array(123);
}
var_dump((double)$v1);
var_dump((double)$v2);
var_dump((double)$v3);
var_dump((double)$v4);
var_dump((double)$v5);
var_dump((double)$v6);
var_dump((double)$v7);
var_dump((double)$v8);
var_dump((double)$v9);
var_dump((double)$v10);
var_dump((double)$v11);
}
bar(1);
+21
Ver Arquivo
@@ -0,0 +1,21 @@
float(0)
float(1)
float(1)
float(9.007199254741E+15)
float(1.1)
float(0)
float(1)
HipHop Notice: Object of class C could not be converted to int in hphp/test/vm/cnvDbl.php on line 4
float(1)
float(0)
float(0)
float(1)
float(0)
float(1)
float(0)
float(1.1)
float(0)
HipHop Notice: Object of class C could not be converted to int in hphp/test/vm/cnvDbl.php on line 50
float(1)
float(0)
float(1)
+1
Ver Arquivo
@@ -0,0 +1 @@
filepath.filter
+55
Ver Arquivo
@@ -0,0 +1,55 @@
<?php
function foo($v) {
return (int)$v;
}
var_dump(foo(null));
var_dump(foo(true));
var_dump(foo(1));
var_dump(foo(9007199254740992));
var_dump(foo(1.1));
var_dump(foo("abc"));
var_dump(foo(array(123)));
class C { public $foo = "bar"; }
var_dump(foo(new C));
function bar($i) {
$v1 = "undefined";
$v2 = "undefined";
$v3 = "undefined";
$v4 = "undefined";
$v5 = "undefined";
$v6 = "undefined";
$v7 = "undefined";
$v8 = "undefined";
$v9 = "undefined";
$v10 = "undefined";
$v11 = "undefined";
if ($i >= 1) {
$v1 = null;
$v2 = false;
$v3 = true;
$v4 = 0;
$v5 = "1";
$v6 = 0.0;
$v7 = "1.1";
$v8 = "abc";
$v9 = new C;
$v10 = array();
$v11 = array(123);
}
var_dump((int)$v1);
var_dump((int)$v2);
var_dump((int)$v3);
var_dump((int)$v4);
var_dump((int)$v5);
var_dump((int)$v6);
var_dump((int)$v7);
var_dump((int)$v8);
var_dump((int)$v9);
var_dump((int)$v10);
var_dump((int)$v11);
}
bar(1);
+21
Ver Arquivo
@@ -0,0 +1,21 @@
int(0)
int(1)
int(1)
int(9007199254740992)
int(1)
int(0)
int(1)
HipHop Notice: Object of class C could not be converted to int in hphp/test/vm/cnvInt.php on line 4
int(1)
int(0)
int(0)
int(1)
int(0)
int(1)
int(0)
int(1)
int(0)
HipHop Notice: Object of class C could not be converted to int in hphp/test/vm/cnvInt.php on line 50
int(1)
int(0)
int(1)
+1
Ver Arquivo
@@ -0,0 +1 @@
filepath.filter
+31
Ver Arquivo
@@ -0,0 +1,31 @@
<?php
function foo($v) {
return (object)$v;
}
var_dump(foo(null));
var_dump(foo(false));
var_dump(foo(true));
var_dump(foo(1));
var_dump(foo(1.1));
var_dump(foo("abc"));
var_dump(foo(array(123)));
class C { }
var_dump(foo(new C));
function bar($v) {
$nonStaticStr = (string)$v;
return (object)$nonStaticStr;
}
var_dump(bar(1));
function candy($i) {
$v1 = "undefined";
if ($i >= 1) {
$v1 = null;
}
var_dump((object)$v1);
}
candy(1);
+34
Ver Arquivo
@@ -0,0 +1,34 @@
object(stdClass)#1 (0) {
}
object(stdClass)#1 (1) {
["scalar"]=>
bool(false)
}
object(stdClass)#1 (1) {
["scalar"]=>
bool(true)
}
object(stdClass)#1 (1) {
["scalar"]=>
int(1)
}
object(stdClass)#1 (1) {
["scalar"]=>
float(1.1)
}
object(stdClass)#1 (1) {
["scalar"]=>
string(3) "abc"
}
object(stdClass)#1 (1) {
[0]=>
int(123)
}
object(C)#1 (0) {
}
object(stdClass)#1 (1) {
["scalar"]=>
string(1) "1"
}
object(stdClass)#1 (0) {
}
+58
Ver Arquivo
@@ -0,0 +1,58 @@
<?php
function foo($v) {
return (string)$v;
}
var_dump(foo(null));
var_dump(foo(false));
var_dump(foo(true));
var_dump(foo(1));
var_dump(foo(1.1));
var_dump(foo("abc"));
var_dump(foo(array(123)));
class C { public function __toString() { return "a C"; } }
var_dump(foo(new C));
function bar($i) {
$v1 = "undefined";
$v2 = "undefined";
$v3 = "undefined";
$v4 = "undefined";
$v5 = "undefined";
$v6 = "undefined";
$v7 = "undefined";
$v8 = "undefined";
$v9 = "undefined";
$v10 = "undefined";
$v11 = "undefined";
if ($i >= 1) {
$v1 = null;
$v2 = false;
$v3 = true;
$v4 = 0;
$v5 = 1;
$v6 = 0.0;
$v7 = 1.1;
$v8 = "abc";
$v9 = new C();
$v10 = array();
$v11 = array(123);
}
var_dump((string)$v1);
var_dump((string)$v2);
var_dump((string)$v3);
var_dump((string)$v4);
var_dump((string)$v5);
var_dump((string)$v6);
var_dump((string)$v7);
var_dump((string)$v8);
var_dump((string)$v9);
var_dump((string)$v10);
var_dump((string)$v11);
}
bar(1);
class D { }
var_dump(foo(new D));
+20
Ver Arquivo
@@ -0,0 +1,20 @@
string(0) ""
string(0) ""
string(1) "1"
string(1) "1"
string(3) "1.1"
string(3) "abc"
string(5) "Array"
string(3) "a C"
string(0) ""
string(0) ""
string(1) "1"
string(1) "0"
string(1) "1"
string(1) "0"
string(3) "1.1"
string(3) "abc"
string(3) "a C"
string(5) "Array"
string(5) "Array"
HipHop Fatal error: Bad type conversion: D::__toString() was not defined. in hphp/test/vm/cnvStr.php on line 4
+1
Ver Arquivo
@@ -0,0 +1 @@
filepath.filter