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 151 lines 4.9 kB view raw
1// Test default parameters in function definitions 2 3// Test 1: Basic default parameter 4function greet(name = 'World') { 5 return 'Hello, ' + name; 6} 7 8console.log("Test 1 - Basic default param:"); 9console.log(greet()); // Should print "Hello, World" 10console.log(greet('Alice')); // Should print "Hello, Alice" 11 12// Test 2: Multiple default parameters 13function multiply(a = 1, b = 1, c = 1) { 14 return a * b * c; 15} 16 17console.log("\nTest 2 - Multiple default params:"); 18console.log(multiply()); // Should print 1 19console.log(multiply(2)); // Should print 2 20console.log(multiply(2, 3)); // Should print 6 21console.log(multiply(2, 3, 4)); // Should print 24 22 23// Test 3: Mix of regular and default parameters 24function describe(name, age = 25, city = 'Unknown') { 25 return name + ' is ' + age + ' years old and lives in ' + city; 26} 27 28console.log("\nTest 3 - Mix of regular and default params:"); 29console.log(describe('Alice')); // Should print "Alice is 25 years old and lives in Unknown" 30console.log(describe('Bob', 30)); // Should print "Bob is 30 years old and lives in Unknown" 31console.log(describe('Charlie', 35, 'NYC')); // Should print "Charlie is 35 years old and lives in NYC" 32 33// Test 4: Default parameter with number 34function power(base = 2, exponent = 2) { 35 let result = 1; 36 for (let i = 0; i < exponent; i++) { 37 result = result * base; 38 } 39 return result; 40} 41 42console.log("\nTest 4 - Default params with numbers:"); 43console.log(power()); // Should print 4 (2^2) 44console.log(power(3)); // Should print 9 (3^2) 45console.log(power(2, 3)); // Should print 8 (2^3) 46 47// Test 5: Arrow function with default parameters 48const add = (a = 0, b = 0) => a + b; 49 50console.log("\nTest 5 - Arrow function with default params:"); 51console.log(add()); // Should print 0 52console.log(add(5)); // Should print 5 53console.log(add(5, 3)); // Should print 8 54 55// Test 6: Class methods with default parameters 56class Calculator { 57 add(x = 0, y = 0) { 58 return x + y; 59 } 60 61 subtract(x = 0, y = 0) { 62 return x - y; 63 } 64 65 multiply(x = 1, y = 1) { 66 return x * y; 67 } 68} 69 70console.log("\nTest 6 - Class methods with default params:"); 71const calc = new Calculator(); 72console.log(calc.add()); // Should print 0 73console.log(calc.add(10)); // Should print 10 74console.log(calc.add(10, 5)); // Should print 15 75console.log(calc.multiply()); // Should print 1 76console.log(calc.multiply(3)); // Should print 3 77console.log(calc.multiply(3, 4)); // Should print 12 78 79// Test 7: Default params with special characters in strings 80function wrap(text, left = '(', right = ')') { 81 return left + text + right; 82} 83 84console.log("\nTest 7 - Default params with parens in strings:"); 85console.log(wrap('hello')); // Should print "(hello)" 86console.log(wrap('hello', '<', '>')); // Should print "<hello>" 87console.log(wrap('hello', '[')); // Should print "[hello)" 88 89// Test 8: Default with undefined explicitly passed 90function testUndefined(a = 'default') { 91 return a; 92} 93 94console.log("\nTest 8 - Explicit undefined uses default:"); 95console.log(testUndefined()); // Should print "default" 96console.log(testUndefined(undefined)); // Should print "default" 97console.log(testUndefined('value')); // Should print "value" 98 99// Test 9: Complex default expressions 100function createArray(size = 5, fill = 'x') { 101 let arr = []; 102 for (let i = 0; i < size; i++) { 103 arr.push(fill); 104 } 105 return arr; 106} 107 108console.log("\nTest 9 - Default params with expressions:"); 109console.log(createArray().length); // Should print 5 110console.log(createArray(3).length); // Should print 3 111console.log(createArray(2, 'o').join('')); // Should print "oo" 112 113// Test 10: Async function with default parameters 114async function asyncGreet(name = 'Async World') { 115 return 'Hello, ' + name; 116} 117 118console.log("\nTest 10 - Async function with default params:"); 119asyncGreet().then(result => console.log(result)); // Should print "Hello, Async World" 120asyncGreet('Async Alice').then(result => console.log(result)); // Should print "Hello, Async Alice" 121 122// Test 11: Default parameters in constructor 123class Person { 124 constructor(name = 'Anonymous', age = 0) { 125 this.name = name; 126 this.age = age; 127 } 128 129 introduce() { 130 return this.name + ' is ' + this.age; 131 } 132} 133 134console.log("\nTest 11 - Constructor with default params:"); 135const p1 = new Person(); 136console.log(p1.introduce()); // Should print "Anonymous is 0" 137const p2 = new Person('Dave'); 138console.log(p2.introduce()); // Should print "Dave is 0" 139const p3 = new Person('Eve', 28); 140console.log(p3.introduce()); // Should print "Eve is 28" 141 142// Test 12: Only last parameters have defaults 143function compute(required, optional = 10) { 144 return required + optional; 145} 146 147console.log("\nTest 12 - Required param then default:"); 148console.log(compute(5)); // Should print 15 149console.log(compute(5, 20)); // Should print 25 150 151console.log("\n✓ All default parameter tests completed!");