#!/usr/bin/ruby

var r = [];

r[2][3] = "x";

r.dump.say;

r == [nil, nil, [nil, nil, nil, 'x']] ||
     die "Error! (1)\n"


r[2][2] = ["y"];

r.dump.say;

r == [nil, nil, [nil, nil, ['y'], 'x']] ||
     die "Error! (2)\n"

r[2][5] = "sidef";

r == [nil, nil, [nil, nil, ['y'], 'x', nil, 'sidef']] ||
     die "error!"

r[2][2][4] = "z";
r[2][2][2] = "i";

r.dump.say;

r == [nil, nil, [nil, nil, ['y', nil, 'i', nil, 'z'], 'x', nil, 'sidef']] ||
     die "Error! (3)\n"


r[5][5][1][2][3] = 'sidef';

r.dump.say;

r == [nil, nil, [nil, nil, ['y', nil, 'i', nil, 'z'], 'x', nil, 'sidef'],
      nil, nil, [nil, nil, nil, nil, nil, [nil, [nil, nil,
     [nil, nil, nil, 'sidef']]]]] ||
    die "Error! (4)\n"

#
## Array autovivification on slice creation
#
var x = [];
x[4,5] = (1,2);

x.map {"test"} == (['test'] * x.len) || die "map error!";
x == [nil, nil, nil, nil, 1, 2]      || die "eq error!";

say "\n** All tests passed!";