#!/usr/bin/ruby
class Foo() {
has a = {|n| n+42 }
has b = {|n| n+99 }
method b_block {
b
}
}
class Bar < Foo {
method a_block {
self.a
}
}
assert_eq(Foo().a()(42), 42+42)
assert_eq(Bar().a()(43), 43+42)
var foo_obj = Foo()
var bar_obj = Bar()
assert_eq(bar_obj.a, foo_obj.a)
assert_eq(bar_obj.b, foo_obj.b)
assert_eq(bar_obj.a_block, foo_obj.a)
assert_eq(bar_obj.b_block, foo_obj.b)
assert_eq(foo_obj.b_block, bar_obj.b)
assert_eq(bar_obj.b_block()(1), 100)
assert_eq(foo_obj.b_block()(1), 100)
assert_eq(bar_obj.a_block()(10), 52)
say "** Test passed!"