more OO tests

This commit is contained in:
Sergey Chernov 2026-01-16 20:43:10 +03:00
parent 52a3a96e3f
commit f848d79d39

View File

@ -17,6 +17,7 @@
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import net.sergeych.lyng.Script import net.sergeych.lyng.Script
import net.sergeych.lyng.Statement
import net.sergeych.lyng.eval import net.sergeych.lyng.eval
import net.sergeych.lyng.obj.ObjInstance import net.sergeych.lyng.obj.ObjInstance
import net.sergeych.lyng.obj.ObjList import net.sergeych.lyng.obj.ObjList
@ -823,7 +824,7 @@ class OOTest {
@Test @Test
fun testOverrideVisibilityRules2() = runTest { fun testOverrideVisibilityRules2() = runTest {
val scope = Script.newScope() val scope = Script.newScope()
scope.eval(""" val fn = scope.eval("""
interface Base { interface Base {
abstract fun foo() abstract fun foo()
@ -855,18 +856,16 @@ class OOTest {
} }
assertEquals("bar!", Derived().bar()) assertEquals("bar!", Derived().bar())
val d = Derived2() val d = Derived2()
assertEquals(42, d.bar())
assertEquals(43, d.bar()) fun callBar() = d.bar()
""".trimIndent())
scope.createChildScope().eval(""" assertEquals(42, callBar())
assertEquals("bar!", Derived().bar()) assertEquals(43, callBar())
assertEquals(42, Derived2().bar())
import lyng.serialization callBar
for( i in 1..100 ) { """.trimIndent()) as Statement
val d2 = Lynon.decode(Lynon.encode(Derived2())) val s2 = Script.newScope()
assertEquals(42, d2.bar()) assertEquals(44L, fn.invoke(scope, fn).toKotlin(s2))
assertEquals(43, d2.bar()) assertEquals(45L, fn.invoke(s2, fn).toKotlin(s2))
}
""".trimIndent())
} }
} }