| 
									
										
										
										
											2017-06-20 21:03:05 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const SortableSet = require("../lib/util/SortableSet"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("util/SortableSet", () => { | 
					
						
							| 
									
										
										
										
											2025-07-02 20:10:54 +08:00
										 |  |  | 	it("can be constructed like a normal Set", () => { | 
					
						
							| 
									
										
										
										
											2017-06-20 21:51:25 +08:00
										 |  |  | 		const sortableSet = new SortableSet([1, 1, 1, 1, 1, 4, 5, 2], () => {}); | 
					
						
							| 
									
										
										
										
											2025-07-03 17:06:45 +08:00
										 |  |  | 		expect([...sortableSet]).toEqual([1, 4, 5, 2]); | 
					
						
							| 
									
										
										
										
											2017-06-20 21:03:05 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-02 20:10:54 +08:00
										 |  |  | 	it("can sort its content", () => { | 
					
						
							| 
									
										
										
										
											2017-06-20 21:51:25 +08:00
										 |  |  | 		const sortableSet = new SortableSet( | 
					
						
							|  |  |  | 			[1, 1, 1, 6, 6, 1, 1, 4, 5, 2, 3, 8, 5, 7, 9, 0, 3, 1], | 
					
						
							|  |  |  | 			(a, b) => a - b | 
					
						
							|  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2017-06-20 21:03:05 +08:00
										 |  |  | 		sortableSet.sort(); | 
					
						
							| 
									
										
										
										
											2025-07-03 17:06:45 +08:00
										 |  |  | 		expect([...sortableSet]).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); | 
					
						
							| 
									
										
										
										
											2017-06-20 21:03:05 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-02 20:10:54 +08:00
										 |  |  | 	it("can sort by a specified function", () => { | 
					
						
							| 
									
										
										
										
											2017-06-20 21:51:25 +08:00
										 |  |  | 		const sortableSet = new SortableSet( | 
					
						
							|  |  |  | 			[1, 1, 1, 6, 6, 1, 1, 4, 5, 2, 3, 8, 5, 7, 9, 0, 3, 1], | 
					
						
							|  |  |  | 			(a, b) => a - b | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 		sortableSet.sortWith((a, b) => b - a); | 
					
						
							| 
									
										
										
										
											2025-07-03 17:06:45 +08:00
										 |  |  | 		expect([...sortableSet]).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it("can sort by a specified function and convert to JSON", () => { | 
					
						
							|  |  |  | 		const sortableSet = new SortableSet( | 
					
						
							|  |  |  | 			[1, 1, 1, 6, 6, 1, 1, 4, 5, 2, 3, 8, 5, 7, 9, 0, 3, 1], | 
					
						
							|  |  |  | 			(a, b) => a - b | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 		sortableSet.sortWith((a, b) => b - a); | 
					
						
							|  |  |  | 		expect(sortableSet.toJSON()).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); | 
					
						
							| 
									
										
										
										
											2017-06-20 21:03:05 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }); |