#!/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!"