From 55573c1418935bbab9e03b1cb247848c9bb7646c Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Sat, 24 Sep 2011 01:29:48 +0000 Subject: [PATCH] clean up is_a test, so that it covers more use cases - negative and positive testing --- tests/classes/is_a.phpt | 517 ++++++++-------------------------------- 1 file changed, 94 insertions(+), 423 deletions(-) diff --git a/tests/classes/is_a.phpt b/tests/classes/is_a.phpt index e6f250648d..0069b93570 100644 --- a/tests/classes/is_a.phpt +++ b/tests/classes/is_a.phpt @@ -19,9 +19,11 @@ class base { echo "\n>>> With Defined class\n"; echo str_pad('is_a( OBJECT:'.get_class($this).', '.$sub.') = ', 60) . (is_a($this, $sub) ? 'yes' : 'no')."\n"; echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_a(get_class($this), $sub) ? 'yes' : 'no')."\n"; + echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.', true) = ', 60). (is_a(get_class($this), $sub, true) ? 'yes' : 'no')."\n"; echo str_pad('is_subclass_of( OBJECT:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of($this, $sub) ? 'yes' : 'no')."\n"; echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of(get_class($this), $sub) ? 'yes' : 'no')."\n"; - + echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.',false) = ', 60). (is_subclass_of(get_class($this), $sub , false) ? 'yes' : 'no')."\n"; + // with autoload options.. echo ">>> With Undefined\n"; echo str_pad('is_a( STRING:undefB, '.$sub.',true) = ', 60). (is_a('undefB', $sub, true) ? 'yes' : 'no')."\n"; @@ -31,12 +33,8 @@ class base { } function test() { echo $this->_is_a('base'); - echo $this->_is_a('derived_a'); - echo $this->_is_a('derived_b'); - echo $this->_is_a('derived_c'); - echo $this->_is_a('derived_d'); - echo $this->_is_a('if_a'); - echo $this->_is_a('if_b'); + echo $this->_is_a('derived_a'); + echo $this->_is_a('if_a'); echo $this->_is_a('undefA'); echo "\n"; } @@ -60,6 +58,10 @@ class derived_d extends derived_c { $t = new base(); $t->test(); + +$t = new derived_a(); +$t->test(); + eval(' function __autoload($name) { @@ -78,13 +80,7 @@ $t->test(); $t = new derived_b(); $t->test(); - -$t = new derived_c(); -$t->test(); - -$t = new derived_d(); -$t->test(); - + @@ -94,8 +90,10 @@ $t->test(); >>> With Defined class is_a( OBJECT:base, base) = yes is_a( STRING:base, base) = no +is_a( STRING:base, base, true) = yes is_subclass_of( OBJECT:base, base) = no is_subclass_of( STRING:base, base) = no +is_subclass_of( STRING:base, base,false) = no >>> With Undefined is_a( STRING:undefB, base,true) = no is_a( STRING:undefB, base) = no @@ -105,8 +103,10 @@ is_subclass_of( STRING:undefB, base) = no >>> With Defined class is_a( OBJECT:base, derived_a) = no is_a( STRING:base, derived_a) = no +is_a( STRING:base, derived_a, true) = no is_subclass_of( OBJECT:base, derived_a) = no is_subclass_of( STRING:base, derived_a) = no +is_subclass_of( STRING:base, derived_a,false) = no >>> With Undefined is_a( STRING:undefB, derived_a,true) = no is_a( STRING:undefB, derived_a) = no @@ -114,43 +114,65 @@ is_subclass_of( STRING:undefB, derived_a,false) = no is_subclass_of( STRING:undefB, derived_a) = no >>> With Defined class -is_a( OBJECT:base, derived_b) = no -is_a( STRING:base, derived_b) = no -is_subclass_of( OBJECT:base, derived_b) = no -is_subclass_of( STRING:base, derived_b) = no +is_a( OBJECT:base, if_a) = no +is_a( STRING:base, if_a) = no +is_a( STRING:base, if_a, true) = no +is_subclass_of( OBJECT:base, if_a) = no +is_subclass_of( STRING:base, if_a) = no +is_subclass_of( STRING:base, if_a,false) = no +>>> With Undefined +is_a( STRING:undefB, if_a,true) = no +is_a( STRING:undefB, if_a) = no +is_subclass_of( STRING:undefB, if_a,false) = no +is_subclass_of( STRING:undefB, if_a) = no + +>>> With Defined class +is_a( OBJECT:base, undefA) = no +is_a( STRING:base, undefA) = no +is_a( STRING:base, undefA, true) = no +is_subclass_of( OBJECT:base, undefA) = no +is_subclass_of( STRING:base, undefA) = no +is_subclass_of( STRING:base, undefA,false) = no >>> With Undefined -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no -is_subclass_of( STRING:undefB, derived_b) = no +is_a( STRING:undefB, undefA,true) = no +is_a( STRING:undefB, undefA) = no +is_subclass_of( STRING:undefB, undefA,false) = no +is_subclass_of( STRING:undefB, undefA) = no + >>> With Defined class -is_a( OBJECT:base, derived_c) = no -is_a( STRING:base, derived_c) = no -is_subclass_of( OBJECT:base, derived_c) = no -is_subclass_of( STRING:base, derived_c) = no +is_a( OBJECT:derived_a, base) = yes +is_a( STRING:derived_a, base) = no +is_a( STRING:derived_a, base, true) = yes +is_subclass_of( OBJECT:derived_a, base) = yes +is_subclass_of( STRING:derived_a, base) = yes +is_subclass_of( STRING:derived_a, base,false) = no >>> With Undefined -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no -is_subclass_of( STRING:undefB, derived_c) = no +is_a( STRING:undefB, base,true) = no +is_a( STRING:undefB, base) = no +is_subclass_of( STRING:undefB, base,false) = no +is_subclass_of( STRING:undefB, base) = no >>> With Defined class -is_a( OBJECT:base, derived_d) = no -is_a( STRING:base, derived_d) = no -is_subclass_of( OBJECT:base, derived_d) = no -is_subclass_of( STRING:base, derived_d) = no +is_a( OBJECT:derived_a, derived_a) = yes +is_a( STRING:derived_a, derived_a) = no +is_a( STRING:derived_a, derived_a, true) = yes +is_subclass_of( OBJECT:derived_a, derived_a) = no +is_subclass_of( STRING:derived_a, derived_a) = no +is_subclass_of( STRING:derived_a, derived_a,false) = no >>> With Undefined -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no -is_subclass_of( STRING:undefB, derived_d) = no +is_a( STRING:undefB, derived_a,true) = no +is_a( STRING:undefB, derived_a) = no +is_subclass_of( STRING:undefB, derived_a,false) = no +is_subclass_of( STRING:undefB, derived_a) = no >>> With Defined class -is_a( OBJECT:base, if_a) = no -is_a( STRING:base, if_a) = no -is_subclass_of( OBJECT:base, if_a) = no -is_subclass_of( STRING:base, if_a) = no +is_a( OBJECT:derived_a, if_a) = yes +is_a( STRING:derived_a, if_a) = no +is_a( STRING:derived_a, if_a, true) = yes +is_subclass_of( OBJECT:derived_a, if_a) = yes +is_subclass_of( STRING:derived_a, if_a) = yes +is_subclass_of( STRING:derived_a, if_a,false) = no >>> With Undefined is_a( STRING:undefB, if_a,true) = no is_a( STRING:undefB, if_a) = no @@ -158,21 +180,12 @@ is_subclass_of( STRING:undefB, if_a,false) = no is_subclass_of( STRING:undefB, if_a) = no >>> With Defined class -is_a( OBJECT:base, if_b) = no -is_a( STRING:base, if_b) = no -is_subclass_of( OBJECT:base, if_b) = no -is_subclass_of( STRING:base, if_b) = no ->>> With Undefined -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no -is_subclass_of( STRING:undefB, if_b) = no - ->>> With Defined class -is_a( OBJECT:base, undefA) = no -is_a( STRING:base, undefA) = no -is_subclass_of( OBJECT:base, undefA) = no -is_subclass_of( STRING:base, undefA) = no +is_a( OBJECT:derived_a, undefA) = no +is_a( STRING:derived_a, undefA) = no +is_a( STRING:derived_a, undefA, true) = no +is_subclass_of( OBJECT:derived_a, undefA) = no +is_subclass_of( STRING:derived_a, undefA) = no +is_subclass_of( STRING:derived_a, undefA,false) = no >>> With Undefined is_a( STRING:undefB, undefA,true) = no is_a( STRING:undefB, undefA) = no @@ -185,8 +198,10 @@ NOW WITH AUTOLOAD >>> With Defined class is_a( OBJECT:base, base) = yes is_a( STRING:base, base) = no +is_a( STRING:base, base, true) = yes is_subclass_of( OBJECT:base, base) = no is_subclass_of( STRING:base, base) = no +is_subclass_of( STRING:base, base,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, base,true) = no @@ -198,8 +213,10 @@ is_subclass_of( STRING:undefB, base) = no >>> With Defined class is_a( OBJECT:base, derived_a) = no is_a( STRING:base, derived_a) = no +is_a( STRING:base, derived_a, true) = no is_subclass_of( OBJECT:base, derived_a) = no is_subclass_of( STRING:base, derived_a) = no +is_subclass_of( STRING:base, derived_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, derived_a,true) = no @@ -208,50 +225,13 @@ is_subclass_of( STRING:undefB, derived_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, derived_a) = no ->>> With Defined class -is_a( OBJECT:base, derived_b) = no -is_a( STRING:base, derived_b) = no -is_subclass_of( OBJECT:base, derived_b) = no -is_subclass_of( STRING:base, derived_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_b) = no - ->>> With Defined class -is_a( OBJECT:base, derived_c) = no -is_a( STRING:base, derived_c) = no -is_subclass_of( OBJECT:base, derived_c) = no -is_subclass_of( STRING:base, derived_c) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_c) = no - ->>> With Defined class -is_a( OBJECT:base, derived_d) = no -is_a( STRING:base, derived_d) = no -is_subclass_of( OBJECT:base, derived_d) = no -is_subclass_of( STRING:base, derived_d) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_d) = no - >>> With Defined class is_a( OBJECT:base, if_a) = no is_a( STRING:base, if_a) = no +is_a( STRING:base, if_a, true) = no is_subclass_of( OBJECT:base, if_a) = no is_subclass_of( STRING:base, if_a) = no +is_subclass_of( STRING:base, if_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, if_a,true) = no @@ -260,24 +240,13 @@ is_subclass_of( STRING:undefB, if_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, if_a) = no ->>> With Defined class -is_a( OBJECT:base, if_b) = no -is_a( STRING:base, if_b) = no -is_subclass_of( OBJECT:base, if_b) = no -is_subclass_of( STRING:base, if_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_b) = no - >>> With Defined class is_a( OBJECT:base, undefA) = no is_a( STRING:base, undefA) = no +is_a( STRING:base, undefA, true) = no is_subclass_of( OBJECT:base, undefA) = no is_subclass_of( STRING:base, undefA) = no +is_subclass_of( STRING:base, undefA,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, undefA,true) = no @@ -290,8 +259,10 @@ is_subclass_of( STRING:undefB, undefA) = no >>> With Defined class is_a( OBJECT:derived_a, base) = yes is_a( STRING:derived_a, base) = no +is_a( STRING:derived_a, base, true) = yes is_subclass_of( OBJECT:derived_a, base) = yes is_subclass_of( STRING:derived_a, base) = yes +is_subclass_of( STRING:derived_a, base,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, base,true) = no @@ -303,8 +274,10 @@ is_subclass_of( STRING:undefB, base) = no >>> With Defined class is_a( OBJECT:derived_a, derived_a) = yes is_a( STRING:derived_a, derived_a) = no +is_a( STRING:derived_a, derived_a, true) = yes is_subclass_of( OBJECT:derived_a, derived_a) = no is_subclass_of( STRING:derived_a, derived_a) = no +is_subclass_of( STRING:derived_a, derived_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, derived_a,true) = no @@ -313,50 +286,13 @@ is_subclass_of( STRING:undefB, derived_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, derived_a) = no ->>> With Defined class -is_a( OBJECT:derived_a, derived_b) = no -is_a( STRING:derived_a, derived_b) = no -is_subclass_of( OBJECT:derived_a, derived_b) = no -is_subclass_of( STRING:derived_a, derived_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_b) = no - ->>> With Defined class -is_a( OBJECT:derived_a, derived_c) = no -is_a( STRING:derived_a, derived_c) = no -is_subclass_of( OBJECT:derived_a, derived_c) = no -is_subclass_of( STRING:derived_a, derived_c) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_c) = no - ->>> With Defined class -is_a( OBJECT:derived_a, derived_d) = no -is_a( STRING:derived_a, derived_d) = no -is_subclass_of( OBJECT:derived_a, derived_d) = no -is_subclass_of( STRING:derived_a, derived_d) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_d) = no - >>> With Defined class is_a( OBJECT:derived_a, if_a) = yes is_a( STRING:derived_a, if_a) = no +is_a( STRING:derived_a, if_a, true) = yes is_subclass_of( OBJECT:derived_a, if_a) = yes is_subclass_of( STRING:derived_a, if_a) = yes +is_subclass_of( STRING:derived_a, if_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, if_a,true) = no @@ -365,24 +301,13 @@ is_subclass_of( STRING:undefB, if_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, if_a) = no ->>> With Defined class -is_a( OBJECT:derived_a, if_b) = no -is_a( STRING:derived_a, if_b) = no -is_subclass_of( OBJECT:derived_a, if_b) = no -is_subclass_of( STRING:derived_a, if_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_b) = no - >>> With Defined class is_a( OBJECT:derived_a, undefA) = no is_a( STRING:derived_a, undefA) = no +is_a( STRING:derived_a, undefA, true) = no is_subclass_of( OBJECT:derived_a, undefA) = no is_subclass_of( STRING:derived_a, undefA) = no +is_subclass_of( STRING:derived_a, undefA,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, undefA,true) = no @@ -395,8 +320,10 @@ is_subclass_of( STRING:undefB, undefA) = no >>> With Defined class is_a( OBJECT:derived_b, base) = yes is_a( STRING:derived_b, base) = no +is_a( STRING:derived_b, base, true) = yes is_subclass_of( OBJECT:derived_b, base) = yes is_subclass_of( STRING:derived_b, base) = yes +is_subclass_of( STRING:derived_b, base,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, base,true) = no @@ -408,8 +335,10 @@ is_subclass_of( STRING:undefB, base) = no >>> With Defined class is_a( OBJECT:derived_b, derived_a) = no is_a( STRING:derived_b, derived_a) = no +is_a( STRING:derived_b, derived_a, true) = no is_subclass_of( OBJECT:derived_b, derived_a) = no is_subclass_of( STRING:derived_b, derived_a) = no +is_subclass_of( STRING:derived_b, derived_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, derived_a,true) = no @@ -418,50 +347,13 @@ is_subclass_of( STRING:undefB, derived_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, derived_a) = no ->>> With Defined class -is_a( OBJECT:derived_b, derived_b) = yes -is_a( STRING:derived_b, derived_b) = no -is_subclass_of( OBJECT:derived_b, derived_b) = no -is_subclass_of( STRING:derived_b, derived_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_b) = no - ->>> With Defined class -is_a( OBJECT:derived_b, derived_c) = no -is_a( STRING:derived_b, derived_c) = no -is_subclass_of( OBJECT:derived_b, derived_c) = no -is_subclass_of( STRING:derived_b, derived_c) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_c) = no - ->>> With Defined class -is_a( OBJECT:derived_b, derived_d) = no -is_a( STRING:derived_b, derived_d) = no -is_subclass_of( OBJECT:derived_b, derived_d) = no -is_subclass_of( STRING:derived_b, derived_d) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_d) = no - >>> With Defined class is_a( OBJECT:derived_b, if_a) = yes is_a( STRING:derived_b, if_a) = no +is_a( STRING:derived_b, if_a, true) = yes is_subclass_of( OBJECT:derived_b, if_a) = yes is_subclass_of( STRING:derived_b, if_a) = yes +is_subclass_of( STRING:derived_b, if_a,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, if_a,true) = no @@ -470,234 +362,13 @@ is_subclass_of( STRING:undefB, if_a,false) = no >>>> In __autoload: string(6) "undefB" is_subclass_of( STRING:undefB, if_a) = no ->>> With Defined class -is_a( OBJECT:derived_b, if_b) = yes -is_a( STRING:derived_b, if_b) = no -is_subclass_of( OBJECT:derived_b, if_b) = yes -is_subclass_of( STRING:derived_b, if_b) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_b) = no - >>> With Defined class is_a( OBJECT:derived_b, undefA) = no is_a( STRING:derived_b, undefA) = no +is_a( STRING:derived_b, undefA, true) = no is_subclass_of( OBJECT:derived_b, undefA) = no is_subclass_of( STRING:derived_b, undefA) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, undefA,true) = no -is_a( STRING:undefB, undefA) = no -is_subclass_of( STRING:undefB, undefA,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, undefA) = no - - ->>> With Defined class -is_a( OBJECT:derived_c, base) = yes -is_a( STRING:derived_c, base) = no -is_subclass_of( OBJECT:derived_c, base) = yes -is_subclass_of( STRING:derived_c, base) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, base,true) = no -is_a( STRING:undefB, base) = no -is_subclass_of( STRING:undefB, base,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, base) = no - ->>> With Defined class -is_a( OBJECT:derived_c, derived_a) = yes -is_a( STRING:derived_c, derived_a) = no -is_subclass_of( OBJECT:derived_c, derived_a) = yes -is_subclass_of( STRING:derived_c, derived_a) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_a,true) = no -is_a( STRING:undefB, derived_a) = no -is_subclass_of( STRING:undefB, derived_a,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_a) = no - ->>> With Defined class -is_a( OBJECT:derived_c, derived_b) = no -is_a( STRING:derived_c, derived_b) = no -is_subclass_of( OBJECT:derived_c, derived_b) = no -is_subclass_of( STRING:derived_c, derived_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_b) = no - ->>> With Defined class -is_a( OBJECT:derived_c, derived_c) = yes -is_a( STRING:derived_c, derived_c) = no -is_subclass_of( OBJECT:derived_c, derived_c) = no -is_subclass_of( STRING:derived_c, derived_c) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_c) = no - ->>> With Defined class -is_a( OBJECT:derived_c, derived_d) = no -is_a( STRING:derived_c, derived_d) = no -is_subclass_of( OBJECT:derived_c, derived_d) = no -is_subclass_of( STRING:derived_c, derived_d) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_d) = no - ->>> With Defined class -is_a( OBJECT:derived_c, if_a) = yes -is_a( STRING:derived_c, if_a) = no -is_subclass_of( OBJECT:derived_c, if_a) = yes -is_subclass_of( STRING:derived_c, if_a) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_a,true) = no -is_a( STRING:undefB, if_a) = no -is_subclass_of( STRING:undefB, if_a,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_a) = no - ->>> With Defined class -is_a( OBJECT:derived_c, if_b) = yes -is_a( STRING:derived_c, if_b) = no -is_subclass_of( OBJECT:derived_c, if_b) = yes -is_subclass_of( STRING:derived_c, if_b) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_b) = no - ->>> With Defined class -is_a( OBJECT:derived_c, undefA) = no -is_a( STRING:derived_c, undefA) = no -is_subclass_of( OBJECT:derived_c, undefA) = no -is_subclass_of( STRING:derived_c, undefA) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, undefA,true) = no -is_a( STRING:undefB, undefA) = no -is_subclass_of( STRING:undefB, undefA,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, undefA) = no - - ->>> With Defined class -is_a( OBJECT:derived_d, base) = yes -is_a( STRING:derived_d, base) = no -is_subclass_of( OBJECT:derived_d, base) = yes -is_subclass_of( STRING:derived_d, base) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, base,true) = no -is_a( STRING:undefB, base) = no -is_subclass_of( STRING:undefB, base,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, base) = no - ->>> With Defined class -is_a( OBJECT:derived_d, derived_a) = yes -is_a( STRING:derived_d, derived_a) = no -is_subclass_of( OBJECT:derived_d, derived_a) = yes -is_subclass_of( STRING:derived_d, derived_a) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_a,true) = no -is_a( STRING:undefB, derived_a) = no -is_subclass_of( STRING:undefB, derived_a,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_a) = no - ->>> With Defined class -is_a( OBJECT:derived_d, derived_b) = no -is_a( STRING:derived_d, derived_b) = no -is_subclass_of( OBJECT:derived_d, derived_b) = no -is_subclass_of( STRING:derived_d, derived_b) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_b,true) = no -is_a( STRING:undefB, derived_b) = no -is_subclass_of( STRING:undefB, derived_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_b) = no - ->>> With Defined class -is_a( OBJECT:derived_d, derived_c) = yes -is_a( STRING:derived_d, derived_c) = no -is_subclass_of( OBJECT:derived_d, derived_c) = yes -is_subclass_of( STRING:derived_d, derived_c) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_c,true) = no -is_a( STRING:undefB, derived_c) = no -is_subclass_of( STRING:undefB, derived_c,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_c) = no - ->>> With Defined class -is_a( OBJECT:derived_d, derived_d) = yes -is_a( STRING:derived_d, derived_d) = no -is_subclass_of( OBJECT:derived_d, derived_d) = no -is_subclass_of( STRING:derived_d, derived_d) = no ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, derived_d,true) = no -is_a( STRING:undefB, derived_d) = no -is_subclass_of( STRING:undefB, derived_d,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, derived_d) = no - ->>> With Defined class -is_a( OBJECT:derived_d, if_a) = yes -is_a( STRING:derived_d, if_a) = no -is_subclass_of( OBJECT:derived_d, if_a) = yes -is_subclass_of( STRING:derived_d, if_a) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_a,true) = no -is_a( STRING:undefB, if_a) = no -is_subclass_of( STRING:undefB, if_a,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_a) = no - ->>> With Defined class -is_a( OBJECT:derived_d, if_b) = yes -is_a( STRING:derived_d, if_b) = no -is_subclass_of( OBJECT:derived_d, if_b) = yes -is_subclass_of( STRING:derived_d, if_b) = yes ->>> With Undefined ->>>> In __autoload: string(6) "undefB" -is_a( STRING:undefB, if_b,true) = no -is_a( STRING:undefB, if_b) = no -is_subclass_of( STRING:undefB, if_b,false) = no ->>>> In __autoload: string(6) "undefB" -is_subclass_of( STRING:undefB, if_b) = no - ->>> With Defined class -is_a( OBJECT:derived_d, undefA) = no -is_a( STRING:derived_d, undefA) = no -is_subclass_of( OBJECT:derived_d, undefA) = no -is_subclass_of( STRING:derived_d, undefA) = no +is_subclass_of( STRING:derived_b, undefA,false) = no >>> With Undefined >>>> In __autoload: string(6) "undefB" is_a( STRING:undefB, undefA,true) = no -- 2.50.1