- 添加 strcmp、strncmp、strcasecmp、strncasecmp 字符串比较函数测试 - 添加 class_exists、interface_exists、trait_exists、enum_exists 类存在性检查函数测试 - 添加 method_exists、property_exists 方法和属性存在性检查函数测试 - 添加 is_a、is_subclass_of 类型检查函数测试 - 添加 defined 常量定义检查函数测试 - 添加 get_parent_class 获取父类函数测试pull/1/head
parent
315220eac6
commit
4a38508411
6 changed files with 219 additions and 0 deletions
@ -0,0 +1,41 @@ |
|||||||
|
--TEST-- |
||||||
|
strcmp() / strncmp() / strcasecmp() / strncasecmp() functions |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
echo "strcmp:\n"; |
||||||
|
echo strcmp("abc", "abc") === 0 ? "ok-equal\n" : "fail\n"; |
||||||
|
echo strcmp("abc", "abd") < 0 ? "ok-less\n" : "fail\n"; |
||||||
|
echo strcmp("abd", "abc") > 0 ? "ok-greater\n" : "fail\n"; |
||||||
|
echo strcmp("", "") === 0 ? "ok-empty\n" : "fail\n"; |
||||||
|
|
||||||
|
echo "strncmp:\n"; |
||||||
|
echo strncmp("abcdef", "abcxyz", 3) === 0 ? "ok-equal3\n" : "fail\n"; |
||||||
|
echo strncmp("abcdef", "abcxyz", 6) < 0 ? "ok-less6\n" : "fail\n"; |
||||||
|
echo strncmp("abc", "abc", 5) === 0 ? "ok-overflow\n" : "fail\n"; |
||||||
|
|
||||||
|
echo "strcasecmp:\n"; |
||||||
|
echo strcasecmp("ABC", "abc") === 0 ? "ok-equal\n" : "fail\n"; |
||||||
|
echo strcasecmp("ABC", "abd") < 0 ? "ok-less\n" : "fail\n"; |
||||||
|
|
||||||
|
echo "strncasecmp:\n"; |
||||||
|
echo strncasecmp("ABCDEF", "abcxyz", 3) === 0 ? "ok-equal3\n" : "fail\n"; |
||||||
|
echo strncasecmp("ABCDEF", "abcxyz", 6) < 0 ? "ok-less6\n" : "fail\n"; |
||||||
|
|
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
strcmp: |
||||||
|
ok-equal |
||||||
|
ok-less |
||||||
|
ok-greater |
||||||
|
ok-empty |
||||||
|
strncmp: |
||||||
|
ok-equal3 |
||||||
|
ok-less6 |
||||||
|
ok-overflow |
||||||
|
strcasecmp: |
||||||
|
ok-equal |
||||||
|
ok-less |
||||||
|
strncasecmp: |
||||||
|
ok-equal3 |
||||||
|
ok-less6 |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
--TEST-- |
||||||
|
class_exists() / interface_exists() / trait_exists() / enum_exists() functions |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class MyClass {} |
||||||
|
interface MyInterface {} |
||||||
|
trait MyTrait {} |
||||||
|
enum MyEnum { case A; } |
||||||
|
|
||||||
|
echo "class_exists:\n"; |
||||||
|
echo class_exists("MyClass") ? "ok-true\n" : "fail\n"; |
||||||
|
echo class_exists("NonExistentClass") ? "fail\n" : "ok-false\n"; |
||||||
|
|
||||||
|
echo "interface_exists:\n"; |
||||||
|
echo interface_exists("MyInterface") ? "ok-true\n" : "fail\n"; |
||||||
|
echo interface_exists("NonExistentInterface") ? "fail\n" : "ok-false\n"; |
||||||
|
|
||||||
|
echo "trait_exists:\n"; |
||||||
|
echo trait_exists("MyTrait") ? "ok-true\n" : "fail\n"; |
||||||
|
echo trait_exists("NonExistentTrait") ? "fail\n" : "ok-false\n"; |
||||||
|
|
||||||
|
echo "enum_exists:\n"; |
||||||
|
echo enum_exists("MyEnum") ? "ok-true\n" : "fail\n"; |
||||||
|
echo enum_exists("NonExistentEnum") ? "fail\n" : "ok-false\n"; |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
class_exists: |
||||||
|
ok-true |
||||||
|
ok-false |
||||||
|
interface_exists: |
||||||
|
ok-true |
||||||
|
ok-false |
||||||
|
trait_exists: |
||||||
|
ok-true |
||||||
|
ok-false |
||||||
|
enum_exists: |
||||||
|
ok-true |
||||||
|
ok-false |
||||||
|
done |
||||||
@ -0,0 +1,47 @@ |
|||||||
|
--TEST-- |
||||||
|
method_exists() / property_exists() functions |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class TestClass { |
||||||
|
public int $pubProp = 0; |
||||||
|
private string $privProp = "secret"; |
||||||
|
|
||||||
|
public function pubMethod(): string { return "public"; } |
||||||
|
private function privMethod(): string { return "private"; } |
||||||
|
} |
||||||
|
|
||||||
|
$obj = new TestClass(); |
||||||
|
|
||||||
|
echo "method_exists:\n"; |
||||||
|
echo method_exists($obj, "pubMethod") ? "ok-obj-pub\n" : "fail\n"; |
||||||
|
echo method_exists($obj, "privMethod") ? "ok-obj-priv\n" : "fail\n"; |
||||||
|
echo method_exists($obj, "noSuchMethod") ? "fail\n" : "ok-obj-none\n"; |
||||||
|
echo method_exists(TestClass::class, "pubMethod") ? "ok-cls-pub\n" : "fail\n"; |
||||||
|
echo method_exists(TestClass::class, "noSuchMethod") ? "fail\n" : "ok-cls-none\n"; |
||||||
|
|
||||||
|
echo "property_exists:\n"; |
||||||
|
echo property_exists($obj, "pubProp") ? "ok-obj-pub\n" : "fail\n"; |
||||||
|
echo property_exists($obj, "privProp") ? "ok-obj-priv\n" : "fail\n"; |
||||||
|
echo property_exists($obj, "noSuchProp") ? "fail\n" : "ok-obj-none\n"; |
||||||
|
echo property_exists(TestClass::class, "pubProp") ? "ok-cls-pub\n" : "fail\n"; |
||||||
|
echo property_exists(TestClass::class, "privProp") ? "ok-cls-priv\n" : "fail\n"; |
||||||
|
echo property_exists(TestClass::class, "noSuchProp") ? "fail\n" : "ok-cls-none\n"; |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
method_exists: |
||||||
|
ok-obj-pub |
||||||
|
ok-obj-priv |
||||||
|
ok-obj-none |
||||||
|
ok-cls-pub |
||||||
|
ok-cls-none |
||||||
|
property_exists: |
||||||
|
ok-obj-pub |
||||||
|
ok-obj-priv |
||||||
|
ok-obj-none |
||||||
|
ok-cls-pub |
||||||
|
ok-cls-priv |
||||||
|
ok-cls-none |
||||||
|
done |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
--TEST-- |
||||||
|
is_a() / is_subclass_of() functions |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class Base {} |
||||||
|
class Child extends Base {} |
||||||
|
interface IFace {} |
||||||
|
class Impl implements IFace {} |
||||||
|
|
||||||
|
$child = new Child(); |
||||||
|
$impl = new Impl(); |
||||||
|
|
||||||
|
echo "is_a:\n"; |
||||||
|
echo is_a($child, "Child") ? "ok-obj-class\n" : "fail\n"; |
||||||
|
echo is_a($child, "Base") ? "ok-obj-parent\n" : "fail\n"; |
||||||
|
echo is_a($child, "NoSuchClass") ? "fail\n" : "ok-obj-none\n"; |
||||||
|
|
||||||
|
echo "is_subclass_of:\n"; |
||||||
|
echo is_subclass_of($child, "Base") ? "ok-obj-parent\n" : "fail\n"; |
||||||
|
echo is_subclass_of($child, "Child") ? "fail\n" : "ok-obj-same\n"; |
||||||
|
echo is_subclass_of(Child::class, "Base") ? "ok-cls-parent\n" : "fail\n"; |
||||||
|
echo is_subclass_of(Child::class, "Child") ? "fail\n" : "ok-cls-same\n"; |
||||||
|
echo is_subclass_of($child, "NoSuchClass") ? "fail\n" : "ok-none\n"; |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
is_a: |
||||||
|
ok-obj-class |
||||||
|
ok-obj-parent |
||||||
|
ok-obj-none |
||||||
|
is_subclass_of: |
||||||
|
ok-obj-parent |
||||||
|
ok-obj-same |
||||||
|
ok-cls-parent |
||||||
|
ok-cls-same |
||||||
|
ok-none |
||||||
|
done |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
--TEST-- |
||||||
|
defined() function |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
define("MY_CONST", 42); |
||||||
|
define("MY_STRING_CONST", "hello"); |
||||||
|
|
||||||
|
echo "defined:\n"; |
||||||
|
echo defined("MY_CONST") ? "ok-defined\n" : "fail\n"; |
||||||
|
echo defined("MY_STRING_CONST") ? "ok-string-defined\n" : "fail\n"; |
||||||
|
echo defined("PHP_VERSION") ? "ok-php-version\n" : "fail\n"; |
||||||
|
echo defined("NON_EXISTENT") ? "fail\n" : "ok-undefined\n"; |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
defined: |
||||||
|
ok-defined |
||||||
|
ok-string-defined |
||||||
|
ok-php-version |
||||||
|
ok-undefined |
||||||
|
done |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
--TEST-- |
||||||
|
get_parent_class() function |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class Base {} |
||||||
|
class Child extends Base {} |
||||||
|
class NoParent {} |
||||||
|
|
||||||
|
$child = new Child(); |
||||||
|
$noParent = new NoParent(); |
||||||
|
|
||||||
|
echo "get_parent_class:\n"; |
||||||
|
echo get_parent_class($child) === "Base" ? "ok-obj\n" : "fail-obj\n"; |
||||||
|
echo get_parent_class(Child::class) === "Base" ? "ok-cls\n" : "fail-cls\n"; |
||||||
|
echo get_parent_class($noParent) === false ? "ok-obj-false\n" : "fail-obj-false\n"; |
||||||
|
echo get_parent_class(NoParent::class) === false ? "ok-cls-false\n" : "fail-cls-false\n"; |
||||||
|
|
||||||
|
echo "done\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
get_parent_class: |
||||||
|
ok-obj |
||||||
|
ok-cls |
||||||
|
ok-obj-false |
||||||
|
ok-cls-false |
||||||
|
done |
||||||
Loading…
Reference in new issue