mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-31 21:30:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| load("test-common.js");
 | |
| 
 | |
| try {
 | |
|     let getNumber = () => 42;
 | |
|     assert(getNumber() === 42);
 | |
| 
 | |
|     getNumber = () => 99;
 | |
|     assert(getNumber() === 99);
 | |
| 
 | |
|     let add = (a, b) => a + b;
 | |
|     assert(add(2, 3) === 5);
 | |
| 
 | |
|     const addBlock = (a, b) => {
 | |
|         let res = a + b;
 | |
|         return res;
 | |
|     };
 | |
|     assert(addBlock(5, 4) === 9);
 | |
| 
 | |
|     let chompy = [(x) => x, 2];
 | |
|     assert(chompy.length === 2);
 | |
|     assert(chompy[0](1) === 1); 
 | |
| 
 | |
|     const makeObject = (a, b) => ({ a, b });
 | |
|     const obj = makeObject(33, 44);
 | |
|     assert(typeof obj === "object");
 | |
|     assert(obj.a === 33);
 | |
|     assert(obj.b === 44);
 | |
| 
 | |
|     let returnUndefined = () => { };
 | |
|     assert(typeof returnUndefined() === "undefined");
 | |
| 
 | |
|     const makeArray = (a, b) => [a, b];
 | |
|     const array = makeArray("3", { foo: 4 });
 | |
|     assert(array[0] === "3");
 | |
|     assert(array[1].foo === 4);
 | |
| 
 | |
|     let square = x => x * x;
 | |
|     assert(square(3) === 9);
 | |
| 
 | |
|     let squareBlock = x => {
 | |
|         return x * x;
 | |
|     };
 | |
|     assert(squareBlock(4) === 16);
 | |
| 
 | |
|     const message = (who => "Hello " + who)("friends!");
 | |
|     assert(message === "Hello friends!");
 | |
| 
 | |
|     const sum = ((x, y, z) => x + y + z)(1, 2, 3);
 | |
|     assert(sum === 6);
 | |
| 
 | |
|     const product = ((x, y, z) => {
 | |
|         let res = x * y * z;
 | |
|         return res;
 | |
|     })(5, 4, 2);
 | |
|     assert(product === 40);
 | |
| 
 | |
|     const half = (x => {
 | |
|         return x / 2;
 | |
|     })(10);
 | |
|     assert(half === 5);
 | |
| 
 | |
|     var foo, bar;
 | |
|     foo = bar, baz => {};
 | |
|     assert(foo === undefined);
 | |
|     assert(bar === undefined);
 | |
| 
 | |
|     function FooBar() {
 | |
|       this.x = {
 | |
|         y: () => this,
 | |
|         z: function () {
 | |
|           return (() => this)();
 | |
|         }
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     var foobar = new FooBar();
 | |
|     assert(foobar.x.y() === foobar);
 | |
|     assert(foobar.x.z() === foobar.x);
 | |
| 
 | |
|     var Baz = () => {};
 | |
| 
 | |
|     assert(Baz.prototype === undefined);
 | |
| 
 | |
|     assertThrowsError(() => {
 | |
|         new Baz();
 | |
|     }, {
 | |
|         error: TypeError,
 | |
|         message: "Baz is not a constructor"
 | |
|     });
 | |
| 
 | |
|     (() => {
 | |
|         "use strict";
 | |
|         assert(isStrictMode());
 | |
| 
 | |
|         (() => {
 | |
|             assert(isStrictMode());
 | |
|         })();
 | |
|     })();
 | |
| 
 | |
|     (() => {
 | |
|         'use strict';
 | |
|         assert(isStrictMode());
 | |
|     })();
 | |
| 
 | |
|     (() => {
 | |
|         assert(!isStrictMode());
 | |
| 
 | |
|         (() => {
 | |
|             "use strict";
 | |
|             assert(isStrictMode());
 | |
|         })();
 | |
| 
 | |
|         assert(!isStrictMode());
 | |
|     })();
 | |
| 
 | |
|     console.log("PASS");
 | |
| } catch {
 | |
|     console.log("FAIL");
 | |
| }
 | 
