Files
dzc f087d6ba57 feat: 合入航空账号、子账号及会员管理更新
Import the supplied management frontend, including request encryption, withdrawal updates, and vendored dependencies.
Use incoming versions for overlapping source files and retain existing environment configuration absent from the supplied directory.
2026-10-29 16:52:46 +08:00

366 lines
12 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>js-naturalsort test suite</title>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet' href='http://code.jquery.com/qunit/git/qunit.css' type='text/css' media='screen' />
<script type='text/javascript' src='http://code.jquery.com/qunit/git/qunit.js'></script>
<script src='naturalSort.js' type='text/javascript'></script>
<script type='text/javascript'>
$(function () {
test('different values types', function () {
wrapTest(
['a',1],
[1,'a'],
'number always comes first');
wrapTest(
['1',1],
['1',1],
'number vs numeric string - should remain unchanged (error in chrome)');
wrapTest(
['02',3,2,'01'],
['01','02',2,3],
'padding numeric string vs number');
});
test('datetime', function () {
wrapTest(
['10/12/2008','10/11/2008','10/11/2007','10/12/2007'],
['10/11/2007','10/12/2007','10/11/2008','10/12/2008'],
'similar dates');
wrapTest(
['01/01/2008','01/10/2008','01/01/1992','01/01/1991'],
['01/01/1991','01/01/1992','01/01/2008','01/10/2008'],
'similar dates');
wrapTest(
[
'Wed Jan 01 2010 00:00:00 GMT-0800 (Pacific Standard Time)',
'Thu Dec 31 2009 00:00:00 GMT-0800 (Pacific Standard Time)',
'Wed Jan 01 2010 00:00:00 GMT-0500 (Eastern Standard Time)'
],[
'Thu Dec 31 2009 00:00:00 GMT-0800 (Pacific Standard Time)',
'Wed Jan 01 2010 00:00:00 GMT-0500 (Eastern Standard Time)',
'Wed Jan 01 2010 00:00:00 GMT-0800 (Pacific Standard Time)'
], 'javascript toString(), different timezones');
wrapTest(
[
'Saturday, July 3, 2010',
'Monday, August 2, 2010',
'Monday, May 3, 2010'
],[
'Monday, May 3, 2010',
'Saturday, July 3, 2010',
'Monday, August 2, 2010'
], 'Date.toString(), Date.toLocaleString()');
wrapTest(
[
'Mon, 15 Jun 2009 20:45:30 GMT',
'Mon, 3 May 2010 17:45:30 GMT',
'Mon, 15 Jun 2009 17:45:30 GMT'
],[
'Mon, 15 Jun 2009 17:45:30 GMT',
'Mon, 15 Jun 2009 20:45:30 GMT',
'Mon, 3 May 2010 17:45:30 GMT'
], 'Date.toUTCString()');
wrapTest(
[
'Saturday, July 3, 2010 1:45 PM',
'Saturday, July 3, 2010 1:45 AM',
'Monday, August 2, 2010 1:45 PM',
'Monday, May 3, 2010 1:45 PM'
],[
'Monday, May 3, 2010 1:45 PM',
'Saturday, July 3, 2010 1:45 AM',
'Saturday, July 3, 2010 1:45 PM',
'Monday, August 2, 2010 1:45 PM'
], '');
wrapTest(
[
'Saturday, July 3, 2010 1:45:30 PM',
'Saturday, July 3, 2010 1:45:29 PM',
'Monday, August 2, 2010 1:45:01 PM',
'Monday, May 3, 2010 1:45:00 PM'
],[
'Monday, May 3, 2010 1:45:00 PM',
'Saturday, July 3, 2010 1:45:29 PM',
'Saturday, July 3, 2010 1:45:30 PM',
'Monday, August 2, 2010 1:45:01 PM'
], '');
wrapTest(
[
'2/15/2009 1:45 PM',
'1/15/2009 1:45 PM',
'2/15/2009 1:45 AM'
],[
'1/15/2009 1:45 PM',
'2/15/2009 1:45 AM',
'2/15/2009 1:45 PM'
], '');
wrapTest(
[
'2010-06-15T13:45:30',
'2009-06-15T13:45:30',
'2009-06-15T01:45:30.2',
'2009-01-15T01:45:30'
],[
'2009-01-15T01:45:30',
'2009-06-15T01:45:30.2',
'2009-06-15T13:45:30',
'2010-06-15T13:45:30'
], 'ISO8601 Dates');
wrapTest(
[
'2010-06-15 13:45:30',
'2009-06-15 13:45:30',
'2009-01-15 01:45:30'
],[
'2009-01-15 01:45:30',
'2009-06-15 13:45:30',
'2010-06-15 13:45:30'
], 'ISO8601-ish YYYY-MM-DDThh:mm:ss - which does not parse into a Date instance');
wrapTest(
[
'Mon, 15 Jun 2009 20:45:30 GMT',
'Mon, 15 Jun 2009 20:45:30 PDT',
'Mon, 15 Jun 2009 20:45:30 EST',
],[
'Mon, 15 Jun 2009 20:45:30 GMT',
'Mon, 15 Jun 2009 20:45:30 EST',
'Mon, 15 Jun 2009 20:45:30 PDT'
], 'RFC1123 testing different timezones');
wrapTest(
[
'1245098730000',
'14330728000',
'1245098728000'
],[
'14330728000',
'1245098728000',
'1245098730000'
], 'unix epoch, Date.getTime()');
});
test('version number strings', function () {
wrapTest(
['1.0.2','1.0.1','1.0.0','1.0.9'],
['1.0.0','1.0.1','1.0.2','1.0.9'],
'close version numbers');
wrapTest(
['1.0.03','1.0.003','1.0.002','1.0.0001'],
['1.0.0001','1.0.002','1.0.003','1.0.03'],
'multi-digit branch release');
wrapTest(
['1.1beta','1.1.2alpha3','1.0.2alpha3','1.0.2alpha1','1.0.1alpha4','2.1.2','2.1.1'],
['1.0.1alpha4','1.0.2alpha1','1.0.2alpha3','1.1.2alpha3','1.1beta','2.1.1','2.1.2'],
'close version numbers');
wrapTest(
['myrelease-1.1.3','myrelease-1.2.3','myrelease-1.1.4','myrelease-1.1.1','myrelease-1.0.5'],
['myrelease-1.0.5','myrelease-1.1.1','myrelease-1.1.3','myrelease-1.1.4','myrelease-1.2.3'],
'string first');
});
test('numerics', function () {
wrapTest(
['10',9,2,'1','4'],
['1',2,'4',9,'10'],
'string vs number');
wrapTest(
['0001','002','001'],
['0001','001','002'],
'0 left-padded numbers');
wrapTest(
[2,1,'1','0001','002','02','001'],
['0001','001','002','02',1,'1',2],
'0 left-padded numbers and regular numbers');
wrapTest(
['10.0401',10.022,10.042,'10.021999'],
['10.021999',10.022,'10.0401',10.042],
'decimal string vs decimal, different precision');
wrapTest(
['10.04',10.02,10.03,'10.01'],
['10.01',10.02,10.03,'10.04'],
'decimal string vs decimal, same precision');
wrapTest(
['10.04f','10.039F','10.038d','10.037D'],
['10.037D','10.038d','10.039F','10.04f'],
'float/decimal with \'F\' or \'D\' notation');
wrapTest(
['10.004Z','10.039T','10.038ooo','10.037g'],
['10.004Z','10.037g','10.038ooo','10.039T'],
'not foat/decimal notation');
wrapTest(
['1.528535047e5','1.528535047e7','1.52e15','1.528535047e3','1.59e-3'],
['1.59e-3','1.528535047e3','1.528535047e5','1.528535047e7','1.52e15'],
'scientific notation');
wrapTest(
['-1','-2','4','-3','0','-5'],
['-5','-3','-2','-1','0','4'],
'negative numbers as strings');
wrapTest(
[-1,'-2',4,-3,'0','-5'],
['-5',-3,'-2',-1,'0',4],
'negative numbers as strings - mixed input type, string + numeric');
wrapTest(
[-2.01,-2.1,4.144,4.1,-2.001,-5],
[-5,-2.1,-2.01,-2.001,4.1,4.144],
'negative floats - all numeric');
});
test('IP addresses', function () {
wrapTest(
[
'192.168.0.100',
'192.168.0.1',
'192.168.1.1',
'192.168.0.250',
'192.168.1.123',
'10.0.0.2',
'10.0.0.1'
],
[
'10.0.0.1',
'10.0.0.2',
'192.168.0.1',
'192.168.0.100',
'192.168.0.250',
'192.168.1.1',
'192.168.1.123'
]);
});
test('filenames', function () {
wrapTest(
['img12.png','img10.png','img2.png','img1.png'],
['img1.png','img2.png','img10.png','img12.png'],
'simple image filenames');
wrapTest(
['car.mov','01alpha.sgi','001alpha.sgi','my.string_41299.tif','organic2.0001.sgi'],
['001alpha.sgi','01alpha.sgi','car.mov','my.string_41299.tif','organic2.0001.sgi'],
'complex filenames');
wrapTest([
'./system/kernel/js/01_ui.core.js',
'./system/kernel/js/00_jquery-1.3.2.js',
'./system/kernel/js/02_my.desktop.js'
],[
'./system/kernel/js/00_jquery-1.3.2.js',
'./system/kernel/js/01_ui.core.js',
'./system/kernel/js/02_my.desktop.js'
], 'unix filenames');
});
test('space(s) as first character(s)', function () {
wrapTest(
['alpha',' 1',' 3',' 2',0],
[0,' 1',' 2',' 3','alpha']);
});
test('empty strings and space character', function () {
wrapTest(
['10023','999','',2,5.663,5.6629],
['',2,5.6629,5.663,'999','10023']);
wrapTest(
[0,'0',''],
[0,'0','']);
});
test('hex', function () {
wrapTest(
[ '0xA','0x9','0x99' ],
[ '0x9','0xA','0x99'],
'real hex numbers');
wrapTest(
[ '0xZZ','0xVVV','0xVEV','0xUU' ],
[ '0xUU','0xVEV','0xVVV','0xZZ' ],'fake hex numbers');
});
test('unicode', function () {
wrapTest(
[ '\u0044', '\u0055', '\u0054', '\u0043' ],
[ '\u0043', '\u0044', '\u0054', '\u0055' ],
'basic latin');
});
test('sparse array sort', function () {
var sarray = [3, 2]
sarrayOutput = [1, 2, 3];
sarray[10] = 1;
for (var i=0; i < 8; i++)
sarrayOutput.push(undefined);
wrapTest(sarray, sarrayOutput,'simple sparse array');
});
test('case insensitive support', function () {
naturalSort.insensitive = true;
wrapTest(
['A', 'b', 'C', 'd', 'E', 'f'],
['A', 'b', 'C', 'd', 'E', 'f'],
'case sensitive pre-sorted array');
wrapTest(
['A', 'C', 'E', 'b', 'd', 'f'],
['A', 'b', 'C', 'd', 'E', 'f'],
'case sensitive un-sorted array');
naturalSort.insensitive = false;
wrapTest(
['A', 'C', 'E', 'b', 'd', 'f'],
['A', 'C', 'E', 'b', 'd', 'f'],
'case sensitive pre-sorted array');
wrapTest(
['A', 'b', 'C', 'd', 'E', 'f'],
['A', 'C', 'E', 'b', 'd', 'f'],
'case sensitive un-sorted array');
});
test('contributed tests', function () {
wrapTest(
['T78','U17','U10','U12','U14','745','U7','01','485','S16','S2','S22','1081','S25','1055','779','776','771','44','4','87','1091','42','480','952','951','756','1000','824','770','666','633','619','1','991','77H','PIER-7','47','29','9','77L','433'],
['01','1','4','9','29','42','44','47','77H','77L','87','433','480','485','619','633','666','745','756','770','771','776','779','824','951','952','991','1000','1055','1081','1091','PIER-7','S2','S16','S22','S25','T78','U7','U10','U12','U14','U17'],
'contributed by Bob Zeiner');
wrapTest(
[
'FSI stop, Position: 5',
'Mail Group stop, Position: 5',
'Mail Group stop, Position: 5',
'FSI stop, Position: 6',
'FSI stop, Position: 6',
'Newsstand stop, Position: 4',
'Newsstand stop, Position: 4',
'FSI stop, Position: 5'
],[
'FSI stop, Position: 5',
'FSI stop, Position: 5',
'FSI stop, Position: 6',
'FSI stop, Position: 6',
'Mail Group stop, Position: 5',
'Mail Group stop, Position: 5',
'Newsstand stop, Position: 4',
'Newsstand stop, Position: 4'
],'contributed by Scott');
wrapTest(
[2, 10, 1, 'azd', undefined, 'asd'],
[1, 2, 10, 'asd', 'azd', undefined],
'issue #2 - undefined support - jarvinen pekka');
wrapTest(
[undefined, undefined, undefined, 1, undefined],
[1, undefined, undefined, undefined],
'issue #2 - undefined support - jarvinen pekka');
wrapTest(
['-1', '-2', '4', '-3', '0', '-5'],
['-5', '-3', '-2', '-1', '0', '4'],
'issue #3 - invalid numeric string sorting - guilermo.dev');
naturalSort.insensitive = true;
wrapTest(
['9','11','22','99','A','aaaa','bbbb','Aaaa','aAaa','aa','AA','Aa','aA','BB','bB','aaA','AaA','aaa'],
['9', '11', '22', '99', 'A', 'aa', 'AA', 'Aa', 'aA', 'aaA', 'AaA', 'aaa', 'aaaa', 'Aaaa', 'aAaa', 'BB', 'bB', 'bbbb'],
'issue #5 - invalid sort order - Howie Schecter');
naturalSort.insensitive = false;
wrapTest(
['9','11','22','99','A','aaaa','bbbb','Aaaa','aAaa','aa','AA','Aa','aA','BB','bB','aaA','AaA','aaa'],
['9', '11', '22', '99', 'A', 'AA', 'Aa', 'AaA', 'Aaaa', 'BB', 'aA', 'aAaa', 'aa', 'aaA', 'aaa', 'aaaa', 'bB', 'bbbb'],
'issue #5 - invalid sort order - Howie Schecter');
wrapTest(
['5D','1A','2D','33A','5E','33K','33D','5S','2C','5C','5F','1D','2M'],
['1A','1D','2C','2D','2M','5C','5D','5E','5F','5S','33A','33D','33K'],
'alphanumeric - number first');
});
});
function wrapTest(origArray, sortArray, message) {
deepEqual($.extend([], origArray).sort(naturalSort), sortArray, (message ? message + ' - ' : '') + QUnit.jsDump.parse(origArray));
}
</script>
</head>
<body>
<h1 id='qunit-header'>js-naturalsort test suite</h1>
<h2 id='qunit-banner'></h2>
<h2 id='qunit-userAgent'></h2>
<ol id='qunit-tests' />
</body>
</html>