| 
									
										
										
										
											2025-07-16 22:29:28 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-03 17:06:45 +08:00
										 |  |  | const { getProtocol, getScheme } = require("../lib/util/URLAbsoluteSpecifier"); | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @type {Array<{specifier: string, expected: string|undefined}>} | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | const samples = [ | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "@babel/core", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "webpack", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "1webpack:///c:/windows/dir", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "webpack:///c:/windows/dir", | 
					
						
							|  |  |  | 		expected: "webpack" | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "WEBPACK2020:///c:/windows/dir", | 
					
						
							|  |  |  | 		expected: "webpack2020" | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "my-data:image/jpg;base64", | 
					
						
							|  |  |  | 		expected: "my-data" | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "My+Data:image/jpg;base64", | 
					
						
							|  |  |  | 		expected: "my+data" | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "mY+dATA:image/jpg;base64", | 
					
						
							|  |  |  | 		expected: "my+data" | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "my-data/next:image/", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "my-data\\next:image/", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "D:\\path\\file.js", | 
					
						
							| 
									
										
										
										
											2020-06-30 14:50:28 +08:00
										 |  |  | 		expected: undefined | 
					
						
							| 
									
										
										
										
											2020-07-03 16:18:41 +08:00
										 |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "d:/path/file.js", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "z:#foo", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "Z:?query", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		specifier: "C:", | 
					
						
							|  |  |  | 		expected: undefined | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("getScheme", () => { | 
					
						
							| 
									
										
										
										
											2024-08-02 02:36:27 +08:00
										 |  |  | 	for (const [_i, { specifier, expected }] of samples.entries()) { | 
					
						
							| 
									
										
										
										
											2020-07-03 16:18:41 +08:00
										 |  |  | 		it(`should handle ${specifier}`, () => { | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | 			expect(getScheme(specifier)).toBe(expected); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2024-08-02 02:36:27 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("getProtocol", () => { | 
					
						
							| 
									
										
										
										
											2024-08-02 02:36:27 +08:00
										 |  |  | 	for (const [_i, { specifier, expected }] of samples.entries()) { | 
					
						
							| 
									
										
										
										
											2020-07-03 16:18:41 +08:00
										 |  |  | 		it(`should handle ${specifier}`, () => { | 
					
						
							|  |  |  | 			expect(getProtocol(specifier)).toBe( | 
					
						
							| 
									
										
										
										
											2024-07-31 10:39:30 +08:00
										 |  |  | 				expected ? `${expected}:` : undefined | 
					
						
							| 
									
										
										
										
											2020-07-03 16:18:41 +08:00
										 |  |  | 			); | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2024-08-02 02:36:27 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-06-26 05:14:50 +08:00
										 |  |  | }); |