#!/usr/bin/ruby
# Test variable modification
module Foo {
var private = 42
func foo {
1 + private
}
}
assert_eq(Foo::foo(), 43)
Foo::private = 99
assert_eq(Foo::foo(), 100)
# Test `enum` outside module
# https://github.com/trizen/sidef/issues/83
module M {
var x = 1
enum { y=2, z }
assert_eq(y, 2)
assert_eq(z, 3)
}
assert_eq(M::x, 1)
assert_eq(M::y, 2)
assert_eq(M::z, 3)
# Topic variables used inside a module
# https://github.com/trizen/sidef/issues/86
do {
var(*a1,*a2,*a3,*a4,*a5)
module X {
[1, 2].each {
main::a1 << _
{|| main::a2 << 2*_ }()
{|n| main::a3 << n }(3*_)
{ main::a4 << _ }(4*_)
{ main::a5 << X::_ }(5*X::_)
}
assert_eq([4, 9].map { .isqrt }, [2, 3])
}
assert_eq(a1, [1, 2])
assert_eq(a2, [2, 4])
assert_eq(a3, [3, 6])
assert_eq(a4, [4, 8])
assert_eq(a5, [5, 10])
}
say "** Test passed!"