@@ -352,6 +352,29 @@ export class LuaLibTests
352352 // Assert
353353 Expect ( result ) . toBe ( JSON . stringify ( expected ) ) ;
354354 }
355+
356+ @Test ( "array.sort with compare function" )
357+ @TestCase ( [ 1 , 2 , 3 , 4 , 5 ] , "a - b" , ( a : number , b : number ) => a - b )
358+ @TestCase ( [ "4" , "5" , "3" , "2" , "1" ] , "tonumber(a) - tonumber(b)" , ( a : string , b : string ) => Number ( a ) - Number ( b ) )
359+ @TestCase ( [ "4" , "5" , "3" , "2" , "1" ] , "tonumber(b) - tonumber(a)" , ( a : string , b : string ) => Number ( b ) - Number ( a ) )
360+ public arraySortWithCompareFunction (
361+ array : any [ ] ,
362+ compareStr : string ,
363+ compareFn : ( a : any , b : any ) => number
364+ ) : void {
365+ const result = util . transpileAndExecute (
366+ `let testArray = ${ JSON . stringify ( array ) } ;
367+ testArray.sort((a, b) => ${ compareStr } );
368+ return JSONStringify(testArray)` ,
369+ undefined ,
370+ undefined ,
371+ `declare function tonumber(e: any): number`
372+ ) ;
373+
374+ // Assert
375+ Expect ( result ) . toBe ( JSON . stringify ( array . sort ( compareFn ) ) ) ;
376+ }
377+
355378 @TestCase ( "true" , "4" , "5" , 4 )
356379 @TestCase ( "false" , "4" , "5" , 5 )
357380 @TestCase ( "3" , "4" , "5" , 4 )
0 commit comments