mirror of https://github.com/arendst/Tasmota.git
48 lines
968 B
Python
48 lines
968 B
Python
class Test
|
|
var maximum
|
|
def init(maximum)
|
|
self.maximum = maximum
|
|
end
|
|
def iter() # method closure upvalues test
|
|
var i = -1, maximum = self.maximum
|
|
return def ()
|
|
i += 1
|
|
if i > maximum
|
|
raise 'stop_iteration'
|
|
end
|
|
return i
|
|
end
|
|
end
|
|
end
|
|
|
|
var sum = 0
|
|
for i : Test(10)
|
|
sum += i
|
|
end
|
|
assert(sum == 55, 'iteraion sum is ' + str(sum) + ' (expected 55).')
|
|
|
|
#- test case for class instanciated from module member #103 -#
|
|
|
|
m = module()
|
|
g_i = 0 #- detect side effect from init() -#
|
|
class C def init() g_i += 1 end end
|
|
m.C = C
|
|
|
|
#- normal invocation -#
|
|
assert(type(C()) == 'instance')
|
|
assert(g_i == 1)
|
|
|
|
#- invoke from module member -#
|
|
assert(type(m.C()) == 'instance')
|
|
assert(g_i == 2)
|
|
|
|
class C2 var C1 def init(c) self.C1 = c end end
|
|
m.C2 = C2
|
|
c2 = m.C2(m.C)
|
|
|
|
assert(c2.C1 == C)
|
|
|
|
c3 = m.C2(m.C())
|
|
assert(type(c3.C1) == 'instance')
|
|
assert(classname(c3.C1) == 'C')
|