package TestCase::Isa {
use TestCase::Minimal;
use TestCase::Simple;
use SPVM::Comparator;
use SPVM::Complex_2d;
use SPVM::Complex_2f;
sub isa_any_object_type : int () {
my $num : object;
unless ($num isa object) {
return 0;
}
return 1;
}
sub isa_numeric_type : int () {
my $num : int;
unless ($num isa int) {
return 0;
}
if ($num isa long) {
return 0;
}
return 1;
}
sub isa_multi_numeric_type : int () {
my $num : SPVM::Complex_2d;
unless ($num isa SPVM::Complex_2d) {
return 0;
}
if ($num isa SPVM::Complex_2f) {
return 0;
}
return 1;
}
sub isa_match_class : int () {
my $minimal = TestCase::Minimal->new;
if ($minimal isa TestCase::Minimal) {
my $object : object = $minimal;
if ($object isa TestCase::Minimal) {
return 1;
}
}
return 0;
}
sub isa_match_array : int () {
my $minimals = new TestCase::Minimal[3];
my $nums = new int[3];
if ($minimals isa TestCase::Minimal[]) {
if ($nums isa int[]) {
return 1;
}
}
return 0;
}
sub isa_not_match_class : int () {
my $minimal = TestCase::Minimal->new;
if (!($minimal isa TestCase::Simple)) {
return 1;
}
return 0;
}
sub isa_not_match_class_undef : int () {
my $minimal : TestCase::Minimal = undef;
if (!($minimal isa TestCase::Minimal)) {
return 1;
}
return 0;
}
sub isa_match_callback : int () {
my $comparator = sub : int ($self : self, $object1 : object, $object2 : object) {
};
if ($comparator isa SPVM::Comparator) {
my $object : object = $comparator;
if ($object isa SPVM::Comparator) {
return 1;
}
}
return 0;
}
sub isa_not_match_callback_undef : int () {
my $comparator : SPVM::Comparator;
if (!($comparator isa SPVM::Comparator)) {
return 1;
}
return 0;
}
sub isa_not_match_callback : int () {
my $minimal : TestCase::Minimal = TestCase::Minimal->new;
if (!($minimal isa SPVM::Comparator)) {
return 1;
}
return 0;
}}