#!/usr/bin/ruby
# Test for declaration of variables with default values
var (x, y=755, z=777) = (666, 655);
assert_eq(x, 666);
assert_eq(y, 655);
assert_eq(z, 777);
var (a, *b) = (1,2,3,4);
assert_eq(a, 1);
assert_eq(b, [2,3,4]);
var *arr = (21,42,84);
assert_eq(arr, [21, 42, 84]);
var :hash = (a => 21, b => 42);
assert_eq(hash, Hash.new(a => 21, b => 42));
assert_eq([var(p, q) = (9,10)], [9, 10]);
assert_eq(p, 9);
assert_eq(q, 10);
assert_eq([var(s=7, t=3)], [7, 3]);
assert_eq(s, 7);
assert_eq(t, 3);
assert_eq([var x = 42], [42]);
assert_eq(x, 42);
# Default values or provided values
var (*v1 = (1,2,3)) = (21, 42);
var (:h1 = (a => 1, b => 2)) = (a => 42);
assert_eq(v1, [21, 42]);
assert_eq(h1, :(a => 42));
# Default values only
var (*v2 = (1,2,3));
var (:h2 = (a => 1, b => 2));
assert_eq(v2, [1,2,3]);
assert_eq(h2, :(a => 1, b => 2));
say "** Test passed!";