mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:12:44 +00:00 
			
		
		
		
	LibJS: Add JSON.parse
This commit is contained in:
		
							parent
							
								
									e8e728454c
								
							
						
					
					
						commit
						b155e64b67
					
				
					 6 changed files with 218 additions and 5 deletions
				
			
		|  | @ -92,3 +92,40 @@ const assertVisitsAll = (testFunction, expectedOutput) => { | |||
| function isClose(a, b) { | ||||
|     return Math.abs(a - b) < 0.000001; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Quick and dirty deep equals method. | ||||
|  * @param {*} a First value | ||||
|  * @param {*} b Second value | ||||
|  */ | ||||
| function assertDeepEquals(a, b) { | ||||
|     assert(deepEquals(a, b)); | ||||
| } | ||||
| 
 | ||||
| function deepEquals(a, b) { | ||||
|     if (Array.isArray(a)) | ||||
|         return Array.isArray(b) && deepArrayEquals(a, b); | ||||
|     if (typeof a === "object") | ||||
|         return typeof b === "object" && deepObjectEquals(a, b); | ||||
|     return a === b; | ||||
| } | ||||
| 
 | ||||
| function deepArrayEquals(a, b) { | ||||
|     if (a.length !== b.length) | ||||
|         return false; | ||||
|     for (let i = 0; i < a.length; ++i) { | ||||
|         if (!deepEquals(a[i], b[i])) | ||||
|             return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| function deepObjectEquals(a, b) { | ||||
|     if (a === null) | ||||
|         return b === null; | ||||
|     for (let key of Reflect.ownKeys(a)) { | ||||
|         if (!deepEquals(a[key], b[key])) | ||||
|             return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Matthew Olsson
						Matthew Olsson