fix #20 do-while tests for labels, values, else
This commit is contained in:
		
							parent
							
								
									dacdcd7faa
								
							
						
					
					
						commit
						7cc80e2433
					
				@ -1750,8 +1750,9 @@ class ScriptTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testThrowExisting()= runTest {
 | 
			
		||||
        eval("""
 | 
			
		||||
    fun testThrowExisting() = runTest {
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            val x = IllegalArgumentException("test")
 | 
			
		||||
            assert( x is Exception )
 | 
			
		||||
 | 
			
		||||
@ -1773,12 +1774,14 @@ class ScriptTest {
 | 
			
		||||
            }
 | 
			
		||||
            assertEquals(3, t)
 | 
			
		||||
            assert(finallyCaught)
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testCatchShort1()= runTest {
 | 
			
		||||
        eval("""
 | 
			
		||||
    fun testCatchShort1() = runTest {
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            val x = IllegalArgumentException("test")
 | 
			
		||||
            var t = 0
 | 
			
		||||
            var finallyCaught = false
 | 
			
		||||
@ -1795,12 +1798,14 @@ class ScriptTest {
 | 
			
		||||
            }
 | 
			
		||||
            assertEquals(31, t)
 | 
			
		||||
            assert(finallyCaught)
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testCatchShort2()= runTest {
 | 
			
		||||
        eval("""
 | 
			
		||||
    fun testCatchShort2() = runTest {
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            val x = IllegalArgumentException("test")
 | 
			
		||||
            var caught = null
 | 
			
		||||
            try {
 | 
			
		||||
@ -1810,12 +1815,14 @@ class ScriptTest {
 | 
			
		||||
                caught = it
 | 
			
		||||
            }
 | 
			
		||||
            assert( caught is IllegalArgumentException )
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testAccessEHData() = runTest {
 | 
			
		||||
        eval("""
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            val x = IllegalArgumentException("test")
 | 
			
		||||
            val m = try {
 | 
			
		||||
                throw x
 | 
			
		||||
@ -1830,7 +1837,8 @@ class ScriptTest {
 | 
			
		||||
            }
 | 
			
		||||
            println(m)
 | 
			
		||||
            assert( m == "test" )
 | 
			
		||||
            """.trimIndent())
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@ -1849,9 +1857,11 @@ class ScriptTest {
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        c.eval("""
 | 
			
		||||
        c.eval(
 | 
			
		||||
            """
 | 
			
		||||
            assertEquals("freed", resource)
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@ -1860,7 +1870,8 @@ class ScriptTest {
 | 
			
		||||
        c.addFn("callThrow") {
 | 
			
		||||
            raiseArgumentError("fromKotlin")
 | 
			
		||||
        }
 | 
			
		||||
        c.eval("""
 | 
			
		||||
        c.eval(
 | 
			
		||||
            """
 | 
			
		||||
            val result = try {
 | 
			
		||||
                callThrow()
 | 
			
		||||
                "fail"
 | 
			
		||||
@ -1873,12 +1884,14 @@ class ScriptTest {
 | 
			
		||||
                "ok"
 | 
			
		||||
            }
 | 
			
		||||
            assertEquals(result, "ok")
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testReturnValue1() = runTest {
 | 
			
		||||
        val r = eval("""
 | 
			
		||||
        val r = eval(
 | 
			
		||||
            """
 | 
			
		||||
            class Point(x,y) {
 | 
			
		||||
                println("1")
 | 
			
		||||
                fun length() { sqrt(d2()) }
 | 
			
		||||
@ -1891,8 +1904,79 @@ class ScriptTest {
 | 
			
		||||
//            assertEquals( 5, p.length() )
 | 
			
		||||
//            assertThrows { p.d2() }
 | 
			
		||||
            "111"        
 | 
			
		||||
        """.trimIndent())
 | 
			
		||||
        """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
        assertEquals("111", r.toString())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun doWhileValuesTest() = runTest {
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            var count = 0    
 | 
			
		||||
            val result = do {
 | 
			
		||||
                count++
 | 
			
		||||
                if( count < 10 )
 | 
			
		||||
                    continue
 | 
			
		||||
                if( count % 2 == 1 )
 | 
			
		||||
                    break "found "+count
 | 
			
		||||
            } while(count < 100)
 | 
			
		||||
            else "no"
 | 
			
		||||
            assertEquals("found 11", result)
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            var count = 0    
 | 
			
		||||
            val result = do {
 | 
			
		||||
                count++
 | 
			
		||||
                if( count < 10 )
 | 
			
		||||
                    continue
 | 
			
		||||
                if( count % 2 == 1 )
 | 
			
		||||
                    break "found "+count
 | 
			
		||||
            } while(count < 5)
 | 
			
		||||
            else "no"
 | 
			
		||||
            assertEquals("no", result)
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            var count = 0    
 | 
			
		||||
            val result = do {
 | 
			
		||||
                count++
 | 
			
		||||
                if( count % 2 == 3 )
 | 
			
		||||
                    break "found "+count
 | 
			
		||||
                "proc "+count    
 | 
			
		||||
            } while(count < 5)
 | 
			
		||||
            assertEquals("proc 5", result)
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun doWhileValuesLabelTest() = runTest {
 | 
			
		||||
        eval(
 | 
			
		||||
            """
 | 
			
		||||
            var count = 0 
 | 
			
		||||
            var count2 = 0
 | 
			
		||||
               var count3 = 0
 | 
			
		||||
            val result = outer@ do {
 | 
			
		||||
                count2++
 | 
			
		||||
                count = 0
 | 
			
		||||
                do {
 | 
			
		||||
                    count++
 | 
			
		||||
                    if( count < 10 || count2 < 5 ) {
 | 
			
		||||
                        continue
 | 
			
		||||
                    }
 | 
			
		||||
                    if( count % 2 == 1 )
 | 
			
		||||
                        break@outer "found "+count + "/" + count2
 | 
			
		||||
                } while(count < 14)
 | 
			
		||||
                count3++
 | 
			
		||||
            } while( count2 < 100 )
 | 
			
		||||
            else "no"
 | 
			
		||||
            assertEquals("found 11/5", result)
 | 
			
		||||
            assertEquals( 4, count3)
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user