MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 55 lines 2.2 kB view raw
1// Test Function constructor 2// This tests whether the Function constructor can create a dynamic function 3// from string arguments. 4// 5// The Function constructor syntax: 6// new Function(arg1, arg2, ..., argN, functionBody) 7// All arguments are strings. The last argument is the function body, 8// and all previous arguments are parameter names. 9 10console.log('=== Testing Function Constructor ===\n'); 11 12// Test 1: Basic two-parameter function 13console.log('Test 1: Basic addition function'); 14let sum = new Function('a', 'b', 'return a + b'); 15console.log(' Created function:', sum); 16console.log(' typeof sum:', typeof sum); 17console.log(' sum(1, 2):', sum(1, 2), '(expected: 3)'); 18 19// Test 2: No parameters 20console.log('\nTest 2: Function with no parameters'); 21let hello = new Function('return "Hello World"'); 22console.log(' hello():', hello(), '(expected: "Hello World")'); 23 24// Test 3: Single parameter 25console.log('\nTest 3: Single parameter function'); 26let square = new Function('x', 'return x * x'); 27console.log(' square(5):', square(5), '(expected: 25)'); 28 29// Test 4: Multiple statements in body 30console.log('\nTest 4: Multiple statements in body'); 31let multi = new Function('x', 'let y = x * 2; return y + 1'); 32console.log(' multi(5):', multi(5), '(expected: 11)'); 33 34// Test 5: Access to global scope 35console.log('\nTest 5: Access to window.global scope variables'); 36window.global.factor = 10; 37let multiply = new Function('x', 'return x * factor'); 38console.log(' multiply(5):', multiply(5), '(expected: 50)'); 39 40// Test 6: Empty function body 41console.log('\nTest 6: Empty function body'); 42let empty = new Function(''); 43console.log(' empty():', empty(), '(expected: undefined)'); 44 45// Test 7: Many parameters 46console.log('\nTest 7: Function with three parameters'); 47let add3 = new Function('a', 'b', 'c', 'return a + b + c'); 48console.log(' add3(1, 2, 3):', add3(1, 2, 3), '(expected: 6)'); 49 50// Test 8: String concatenation 51console.log('\nTest 8: String concatenation'); 52let greet = new Function('name', 'return "Hello, " + name + "!"'); 53console.log(' greet("World"):', greet('World'), '(expected: "Hello, World!")'); 54 55console.log('\n=== All Function Constructor Tests Complete ===');