#!/usr/bin/ruby
#
## `to_a` implicitly inherited from Object::Convert
#
class Example1 {
}
var obj1 = Example1()
assert_eq(
gather {
for x in (obj1) {
take(x)
}
},
[obj1]
)
#
## Redefined `to_a` method
#
class Example2 {
method to_a {
[1,2,3,4]
}
}
var obj2 = Example2()
assert_eq(
gather {
for x in (obj2) {
take(x)
}
},
[1,2,3,4]
)
#
## User definition of the `iter` method
#
class Example3 {
method iter {
var arr = [10, 20, 30]
var i = 0
{
arr[i++]
}
}
}
var obj3 = Example3()
assert_eq(
gather {
for x in (obj3) {
take(x)
}
},
[10, 20, 30]
)
say "** Test passed!"