| 
									
										
										
										
											2020-07-05 10:47:40 -07:00
										 |  |  | test("hex escapes", () => { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     expect("\x55").toBe("U"); | 
					
						
							|  |  |  |     expect("X55").toBe("X55"); | 
					
						
							|  |  |  |     expect(`\x55`).toBe("U"); | 
					
						
							|  |  |  |     expect(`\X55`).toBe("X55"); | 
					
						
							| 
									
										
										
										
											2020-07-22 12:54:50 -04:00
										 |  |  |     expect("\xff").toBe(String.fromCharCode(0xff)); | 
					
						
							| 
									
										
										
										
											2020-10-28 09:29:11 +00:00
										 |  |  |     expect("'\\x'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\x1'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\xz'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\xzz'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\x🐞'").not.toEval(); | 
					
						
							| 
									
										
										
										
											2020-07-05 10:47:40 -07:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2020-05-16 23:27:25 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-05 10:47:40 -07:00
										 |  |  | test("unicode escapes", () => { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     expect("\u26a0").toBe("⚠"); | 
					
						
							|  |  |  |     expect(`\u26a0`).toBe("⚠"); | 
					
						
							|  |  |  |     expect("\u{1f41e}").toBe("🐞"); | 
					
						
							|  |  |  |     expect(`\u{1f41e}`).toBe("🐞"); | 
					
						
							| 
									
										
										
										
											2020-07-22 12:54:50 -04:00
										 |  |  |     expect("\u00ff").toBe(String.fromCharCode(0xff)); | 
					
						
							| 
									
										
										
										
											2020-10-28 09:29:11 +00:00
										 |  |  |     expect("'\\u'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u1'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\uf'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u123'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u123z'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\uz'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\uzz'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\uzzzz'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u{'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u{}'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u{z}'").not.toEval(); | 
					
						
							|  |  |  |     expect("'\\u🐞'").not.toEval(); | 
					
						
							| 
									
										
										
										
											2020-07-05 10:47:40 -07:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2020-10-24 13:30:57 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | describe("octal escapes", () => { | 
					
						
							|  |  |  |     test("basic functionality", () => { | 
					
						
							|  |  |  |         expect("\1").toBe("\u0001"); | 
					
						
							|  |  |  |         expect("\2").toBe("\u0002"); | 
					
						
							|  |  |  |         expect("\3").toBe("\u0003"); | 
					
						
							|  |  |  |         expect("\4").toBe("\u0004"); | 
					
						
							|  |  |  |         expect("\5").toBe("\u0005"); | 
					
						
							|  |  |  |         expect("\6").toBe("\u0006"); | 
					
						
							|  |  |  |         expect("\7").toBe("\u0007"); | 
					
						
							| 
									
										
										
										
											2020-12-26 16:24:24 +01:00
										 |  |  |         // prettier-ignore
 | 
					
						
							| 
									
										
										
										
											2020-10-24 13:30:57 +01:00
										 |  |  |         expect("\8").toBe("8"); | 
					
						
							| 
									
										
										
										
											2020-12-26 16:24:24 +01:00
										 |  |  |         // prettier-ignore
 | 
					
						
							| 
									
										
										
										
											2020-10-24 13:30:57 +01:00
										 |  |  |         expect("\9").toBe("9"); | 
					
						
							|  |  |  |         expect("\128").toBe("\n8"); | 
					
						
							|  |  |  |         expect("\141bc").toBe("abc"); | 
					
						
							|  |  |  |         expect("f\157o\142a\162").toBe("foobar"); | 
					
						
							|  |  |  |         expect("\123\145\162\145\156\151\164\171\117\123").toBe("SerenityOS"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     test("syntax error in template literal", () => { | 
					
						
							|  |  |  |         expect("`\\123`").not.toEval(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     test("syntax error in strict mode", () => { | 
					
						
							|  |  |  |         expect("'use strict'; '\\123'").not.toEval(); | 
					
						
							|  |  |  |         expect('"use strict"; "\\123"').not.toEval(); | 
					
						
							|  |  |  |         // Special case, string literal precedes use strict directive
 | 
					
						
							|  |  |  |         expect("'\\123'; somethingElse; 'use strict'").not.toEval(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | }); |