more detail on broken pipeline and vm suit tests
This commit is contained in:
76
vm_suite.ce
76
vm_suite.ce
@@ -4935,6 +4935,82 @@ run("object literal 300 function values returned from function", function() {
|
||||
}
|
||||
})
|
||||
|
||||
// ============================================================================
|
||||
// NESTED FUNCTION DECLARATIONS
|
||||
// ============================================================================
|
||||
|
||||
run("nested named function basic", function() {
|
||||
function inner(x) {
|
||||
return x + 1
|
||||
}
|
||||
assert_eq(inner(41), 42, "nested named function call")
|
||||
})
|
||||
|
||||
run("nested named function used by sibling", function() {
|
||||
function helper(v) {
|
||||
return v * 2
|
||||
}
|
||||
function caller(v) {
|
||||
return helper(v) + 1
|
||||
}
|
||||
assert_eq(caller(5), 11, "sibling nested function call")
|
||||
})
|
||||
|
||||
run("nested named function in var function", function() {
|
||||
var outer = function() {
|
||||
function inner(a, b) {
|
||||
return a + b
|
||||
}
|
||||
return inner(10, 20)
|
||||
}
|
||||
assert_eq(outer(), 30, "nested function inside var function")
|
||||
})
|
||||
|
||||
run("nested named function with closure", function() {
|
||||
var multiplier = 3
|
||||
function scale(x) {
|
||||
return x * multiplier
|
||||
}
|
||||
assert_eq(scale(7), 21, "nested function closing over outer var")
|
||||
})
|
||||
|
||||
run("nested named function recursive", function() {
|
||||
function factorial(n) {
|
||||
if (n <= 1) return 1
|
||||
return n * factorial(n - 1)
|
||||
}
|
||||
assert_eq(factorial(5), 120, "nested recursive function")
|
||||
})
|
||||
|
||||
run("deeply nested named functions", function() {
|
||||
var outer = function() {
|
||||
function mid(x) {
|
||||
function inner(y) {
|
||||
return y + 1
|
||||
}
|
||||
return inner(x) * 2
|
||||
}
|
||||
return mid(4)
|
||||
}
|
||||
assert_eq(outer(), 10, "deeply nested named functions")
|
||||
})
|
||||
|
||||
run("nested function used after definition", function() {
|
||||
var result = []
|
||||
function encode_value(v) {
|
||||
if (is_text(v)) return '"' + v + '"'
|
||||
if (is_number(v)) return text(v)
|
||||
return "null"
|
||||
}
|
||||
function quote_key(k) {
|
||||
return k
|
||||
}
|
||||
result[] = quote_key("a") + " = " + encode_value(1)
|
||||
result[] = quote_key("b") + " = " + encode_value("hi")
|
||||
assert_eq(result[0], "a = 1", "nested fn encode number")
|
||||
assert_eq(result[1], 'b = "hi"', "nested fn encode text")
|
||||
})
|
||||
|
||||
// ============================================================================
|
||||
// SUMMARY
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user