class TestCase::Operator::ArrayInit {
use TestCase::Minimal;
use Fn;
use Array;
use Point;
# Array init {}
static method array_init_key_values_empty : int () {
my $objects = {};
unless (@$objects == 0) {
return 0;
}
unless ($objects isa object[]) {
return 0;
}
# Only "{}"
{};
return 1;
}
# Array init {} with string
static method array_init_key_values : int () {
{
my $objects = {foo => 1, bar => 2};
unless (@$objects == 4) {
return 0;
}
unless ($objects isa object[]) {
return 0;
}
my $key1 = (string)$objects->[0];
my $value1 = (Int)$objects->[1];
my $key2 = (string)$objects->[2];
my $value2 = (Int)$objects->[3];
unless ($key1 eq "foo") {
return 0;
}
unless ($value1->value == 1) {
return 0;
}
unless ($key2 eq "bar") {
return 0;
}
unless ($value2->value == 2) {
return 0;
}
}
{
my $objects = {foo => 1, bar => 2};
unless (@$objects == 4) {
return 0;
}
unless ($objects isa object[]) {
return 0;
}
my $key1 = (string)$objects->[0];
my $value1 = (Int)$objects->[1];
my $key2 = (string)$objects->[2];
my $value2 = (Int)$objects->[3];
unless ($key1 eq "foo") {
return 0;
}
unless ($value1->value == 1) {
return 0;
}
unless ($key2 eq "bar") {
return 0;
}
unless ($value2->value == 2) {
return 0;
}
}
{
my $objects = {foo => Int->new(5)};
my $num = (int)$objects->[1];
unless ($num == 5) {
return 0;
}
}
return 1;
}
# Array store undef
static method array_init_empty : int () {
my $objects = [];
unless (@$objects == 0) {
return 0;
}
unless ($objects isa object[]) {
return 0;
}
return 1;
}
static method array_init_fatcamma : int () {
my $pair = [(object)"x" => 1, "y" => 2];
unless ((string)$pair->[0] eq "x") {
return 0;
}
unless ((int)$pair->[1] == 1) {
return 0;
}
unless ((string)$pair->[2] eq "y") {
return 0;
}
unless ((int)$pair->[3] == 2) {
return 0;
}
return 1;
}
static method array_init_byte : int () {
my $nums = [(byte)1, (byte)2, (byte)Fn->INT8_MAX()];
if ($nums->[0] == 1) {
if ($nums->[1] == 2) {
if ($nums->[2] == Fn->INT8_MAX()) {
return 1;
}
}
}
return 0;
}
static method array_init_short : int () {
my $nums = [(short)1, (short)2, (short)3];
if ((int)$nums->[0] == (int)(short)1) {
if ((int)$nums->[1] == (int)(short)2) {
if ((int)$nums->[2] == (int)(short)3) {
return 1;
}
}
}
return 0;
}
static method array_init_int : int () {
my $nums = [1, 2, 3];
my $nums2 : int[];
$nums2 = [4, 5, 6];
my $num3 = [
[1, 2, 3],
[4, 5, 6]
];
unless ($nums->[0] == 1) {
return 0;
}
unless ($nums->[1] == 2) {
return 0;
}
unless ($nums->[2] == 3) {
return 0;
}
unless ($nums2->[0] == 4) {
return 0;
}
unless ($nums2->[1] == 5) {
return 0;
}
unless ($nums2->[2] == 6) {
return 0;
}
return 1;
}
static method array_init_long : int () {
my $nums = [1L, 2L, 3L];
unless ($nums->[0] == 1L) {
return 0;
}
unless ($nums->[1] == 2L) {
return 0;
}
unless ($nums->[2] == 3L) {
return 0;
}
return 1;
}
static method array_init_float : int () {
my $nums = [1f, 2f, 3f];
unless ($nums->[0] == 1f) {
return 0;
}
unless ($nums->[1] == 2f) {
return 0;
}
unless ($nums->[2] == 3f) {
return 0;
}
return 1;
}
static method array_init_double : int () {
my $nums = [1d, 2d, 3d];
unless ($nums->[0] == 1d) {
return 0;
}
unless ($nums->[1] == 2d) {
return 0;
}
unless ($nums->[2] == 3d) {
return 0;
}
return 1;
}
static method array_init_object : int () {
{
my $objects = [(object)TestCase::Minimal->new, TestCase::Minimal->new];
if ($objects isa object[]) {
return 1;
}
else {
return 0;
}
}
return 0;
}
}