UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.

120 lines (106 loc) 3.57 kB
var SortByDigits = require('../../../src/utils/array/SortByDigits'); describe('Phaser.Utils.Array.SortByDigits', function () { it('should return the same array reference', function () { var arr = ['3a', '1b', '2c']; var result = SortByDigits(arr); expect(result).toBe(arr); }); it('should sort strings by their numeric digits ascending', function () { var arr = ['item3', 'item1', 'item2']; SortByDigits(arr); expect(arr[0]).toBe('item1'); expect(arr[1]).toBe('item2'); expect(arr[2]).toBe('item3'); }); it('should sort strings with leading non-digit characters', function () { var arr = ['abc30', 'abc10', 'abc20']; SortByDigits(arr); expect(arr[0]).toBe('abc10'); expect(arr[1]).toBe('abc20'); expect(arr[2]).toBe('abc30'); }); it('should sort strings with mixed non-digit characters', function () { var arr = ['a3b', 'a1b', 'a2b']; SortByDigits(arr); expect(arr[0]).toBe('a1b'); expect(arr[1]).toBe('a2b'); expect(arr[2]).toBe('a3b'); }); it('should handle already sorted arrays', function () { var arr = ['a1', 'a2', 'a3']; SortByDigits(arr); expect(arr[0]).toBe('a1'); expect(arr[1]).toBe('a2'); expect(arr[2]).toBe('a3'); }); it('should handle reverse sorted arrays', function () { var arr = ['z9', 'z5', 'z1']; SortByDigits(arr); expect(arr[0]).toBe('z1'); expect(arr[1]).toBe('z5'); expect(arr[2]).toBe('z9'); }); it('should handle an array with a single element', function () { var arr = ['item42']; SortByDigits(arr); expect(arr[0]).toBe('item42'); }); it('should handle an empty array', function () { var arr = []; SortByDigits(arr); expect(arr.length).toBe(0); }); it('should handle strings with multi-digit numbers', function () { var arr = ['item100', 'item20', 'item3']; SortByDigits(arr); expect(arr[0]).toBe('item3'); expect(arr[1]).toBe('item20'); expect(arr[2]).toBe('item100'); }); it('should concatenate all digits when multiple digit groups exist', function () { var arr = ['a1b2', 'a2b1']; SortByDigits(arr); expect(arr[0]).toBe('a1b2'); expect(arr[1]).toBe('a2b1'); }); it('should handle strings with only digits', function () { var arr = ['300', '10', '25']; SortByDigits(arr); expect(arr[0]).toBe('10'); expect(arr[1]).toBe('25'); expect(arr[2]).toBe('300'); }); it('should treat strings with no digits as NaN and sort them to the front', function () { var arr = ['abc', 'item1', 'item2']; SortByDigits(arr); expect(arr[arr.length - 1]).toBe('item2'); }); it('should sort a large unsorted array correctly', function () { var arr = ['frame9', 'frame3', 'frame7', 'frame1', 'frame5', 'frame2', 'frame8', 'frame4', 'frame6', 'frame0']; SortByDigits(arr); expect(arr[0]).toBe('frame0'); expect(arr[1]).toBe('frame1'); expect(arr[2]).toBe('frame2'); expect(arr[3]).toBe('frame3'); expect(arr[4]).toBe('frame4'); expect(arr[5]).toBe('frame5'); expect(arr[6]).toBe('frame6'); expect(arr[7]).toBe('frame7'); expect(arr[8]).toBe('frame8'); expect(arr[9]).toBe('frame9'); }); });