- 添加 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