#!/usr/bin/ruby

# Test array flattening (`Array.flat` method)

var arr = [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []]
assert_eq(arr.flat, @(1..8))

# Cyclic references
var a = [1,[2],3]
a[3] = a

assert_eq(a.flat, [1,2,3,1,2,3])

# Pair objects
assert_eq(Pair([3],Pair([4], 5)).flat, [3,4,5])
assert_eq([Pair([3],Pair([4], 5))].flat, [3,4,5])
assert_eq([[Pair([3],Pair([4], 5))]].flat, [3,4,5])
assert_eq([[Pair([3,[]],[[Pair([[],4], [[[5]]])]])]].flat, [3,4,5])

say "** Test passed!"