In naturalsort there is handling for Float, Decimal and Scientific notation. This looks for numbers like: '10.04f','10.039F','10.038d','1.528535047e5' It was breaking port sorting for ports named like "D1", "D10" etc. Have removed support for sorting these numbers as it's unlikely we need that in Netdisco, for now.
256 lines
11 KiB
HTML
256 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>portsort.js test suite</title>
|
|
<script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
|
|
<script src="http://code.jquery.com/qunit/qunit-1.14.0.js" type="text/javascript"></script>
|
|
<script src="../js/qunit-tap.js" type="text/javascript"></script>
|
|
<script>
|
|
qunitTap(QUnit, function() { console.log.apply(console, arguments); });
|
|
</script>
|
|
<link href="http://code.jquery.com/qunit/qunit-1.14.0.css" type="text/css" rel="stylesheet"></link>
|
|
<script src="../../share/public/javascripts/jquery.dataTables.min.js" type="text/javascript"></script>
|
|
<script src="../../share/public/javascripts/portsort.js" type="text/javascript"></script>
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
module("portsort.js"),
|
|
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("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(
|
|
['10001','10011','101','10010','10','100','10002',
|
|
'10112','10111'],
|
|
['10','100','101','10001','10002','10010','10011',
|
|
'10111','10112'],
|
|
'mixed length');
|
|
});
|
|
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("space(s) as first character(s)", function () {
|
|
wrapTest(
|
|
['alpha',' 1',' 3',' 2',0],
|
|
[0,' 1',' 2',' 3','alpha']);
|
|
});
|
|
test("wireless controllers", function () {
|
|
wrapTest(
|
|
[
|
|
'00:14:0e:12:34:56','00:08:30:01:23:45.1',
|
|
'00:15:c7:ab:23:10.0','00:14:0e:01:23:45',
|
|
'00:08:30:01:23:45.0','00:15:c7:ab:23:00.1'
|
|
],
|
|
[
|
|
'00:08:30:01:23:45.0','00:08:30:01:23:45.1',
|
|
'00:14:0e:01:23:45','00:14:0e:12:34:56',
|
|
'00:15:c7:ab:23:00.1','00:15:c7:ab:23:10.0'
|
|
],'ap ports');
|
|
wrapTest(
|
|
[
|
|
'wlan-controller1/0.104','wlan-controller1/0',
|
|
'wlan-controller1/0.252','wlan-controller1/0.103'
|
|
],
|
|
[
|
|
'wlan-controller1/0','wlan-controller1/0.103',
|
|
'wlan-controller1/0.104','wlan-controller1/0.252'
|
|
],'controller ports');
|
|
});
|
|
test("ports", function () {
|
|
wrapTest(
|
|
[
|
|
'1.1','1.13','1.14','1.19','1.2','Vlan318','1.25',
|
|
'1.29','3.12','1.3','1.37','1.38','1.4','1.43',
|
|
'1.6','8.34'
|
|
],
|
|
[
|
|
'1.1','1.2','1.3','1.4','1.6','1.13','1.14','1.19',
|
|
'1.25','1.29','1.37','1.38','1.43','3.12','8.34',
|
|
'Vlan318'
|
|
],'Avaya');
|
|
wrapTest(
|
|
[
|
|
'GigabitEthernet9/0/12',
|
|
'GigabitEthernet9/0/11',
|
|
'GigabitEthernet1/0/14',
|
|
'GigabitEthernet1/1/12',
|
|
],
|
|
[
|
|
'GigabitEthernet1/0/14',
|
|
'GigabitEthernet1/1/12',
|
|
'GigabitEthernet9/0/11',
|
|
'GigabitEthernet9/0/12',
|
|
],'Cisco');
|
|
wrapTest(
|
|
[
|
|
'1/1/1','0/1/1','0/3/20','0/2/1','0/3/1','0/3/2',
|
|
'0/3/11','0/3/10'
|
|
|
|
],[
|
|
'0/1/1','0/2/1','0/3/1','0/3/2','0/3/10','0/3/11',
|
|
'0/3/20','1/1/1'
|
|
],'Dell');
|
|
wrapTest(
|
|
[
|
|
'1:10','1:2','1:1','1:11'
|
|
|
|
],[
|
|
'1:1','1:2','1:10','1:11'
|
|
],'Extreme');
|
|
wrapTest(
|
|
[
|
|
'D10','D11','D2','D1', 'A30', 'A3'
|
|
],[
|
|
'A3', 'A30', 'D1','D2','D10','D11'
|
|
],'HP A & D');
|
|
wrapTest(
|
|
[
|
|
'B10','B11','B2','B1', 'A30', 'A3'
|
|
],[
|
|
'A3', 'A30', 'B1','B2','B10','B11'
|
|
],'HP A & B');
|
|
wrapTest(
|
|
[
|
|
'10GigabitEthernet1/1/12',
|
|
'GigabitEthernet1/0/14',
|
|
'GigabitEthernet9/0/12',
|
|
'10GigabitEthernet9/0/11',
|
|
],[
|
|
'GigabitEthernet1/0/14',
|
|
'10GigabitEthernet1/1/12',
|
|
'10GigabitEthernet9/0/11',
|
|
'GigabitEthernet9/0/12',
|
|
],'Foundry 10Gb');
|
|
wrapTest(
|
|
[
|
|
'Slot: 1 Port: 2 Gigabit - Level',
|
|
'Slot: 1 Port: 1 Gigabit - Level',
|
|
'Slot: 0 Port: 15 Gigabit - Level',
|
|
'Slot: 1 Port: 10 Gigabit - Level',
|
|
'Slot: 0 Port: 1 Gigabit - Level'
|
|
],[
|
|
'Slot: 0 Port: 1 Gigabit - Level',
|
|
'Slot: 0 Port: 15 Gigabit - Level',
|
|
'Slot: 1 Port: 1 Gigabit - Level',
|
|
'Slot: 1 Port: 2 Gigabit - Level',
|
|
'Slot: 1 Port: 10 Gigabit - Level'
|
|
],'Netgear');
|
|
wrapTest(
|
|
[
|
|
'port-channel190','port-channel19',
|
|
'port-channel1044','port-channel2','port-channel104'
|
|
|
|
],[
|
|
'port-channel2','port-channel19','port-channel104',
|
|
'port-channel190','port-channel1044'
|
|
],'port-channel');
|
|
wrapTest(
|
|
[
|
|
'Serial1/1:5',
|
|
'Serial2/0:5-Bearer Channel',
|
|
'Serial2/0:20',
|
|
'Serial1/1:5-Bearer Channel',
|
|
'Serial1/1:0',
|
|
'Serial2/0:21',
|
|
'Serial2/0:5',
|
|
'Serial2/0:20-Bearer Channel'
|
|
],[
|
|
'Serial1/1:0',
|
|
'Serial1/1:5',
|
|
'Serial1/1:5-Bearer Channel',
|
|
'Serial2/0:5',
|
|
'Serial2/0:5-Bearer Channel',
|
|
'Serial2/0:20',
|
|
'Serial2/0:20-Bearer Channel',
|
|
'Serial2/0:21'
|
|
],'serial');
|
|
wrapTest(
|
|
[
|
|
'unrouted VLAN 990','unrouted VLAN 95',
|
|
'unrouted VLAN 985','unrouted VLAN 99',
|
|
'unrouted VLAN 950'
|
|
|
|
],[
|
|
'unrouted VLAN 95','unrouted VLAN 99',
|
|
'unrouted VLAN 950','unrouted VLAN 985',
|
|
'unrouted VLAN 990'
|
|
],'unrouted vlans');
|
|
wrapTest(
|
|
[
|
|
'Vlan10','Vlan910','Vlan1','Vlan91'
|
|
],[
|
|
'Vlan1','Vlan10','Vlan91','Vlan910'
|
|
],'vlans');
|
|
wrapTest(
|
|
[
|
|
'voice-port 2/10','voice-port 2/1','voice-port 2/2',
|
|
'voice-port 2/11'
|
|
],[
|
|
'voice-port 2/1','voice-port 2/2','voice-port 2/10',
|
|
'voice-port 2/11',
|
|
|
|
],'voice-port');
|
|
});
|
|
|
|
});
|
|
var sortFn = jQuery.fn.dataTableExt.oSort["portsort-asc"];
|
|
function wrapTest(origArray, sortArray, message) {
|
|
deepEqual($.extend([], origArray).sort(sortFn), sortArray, (message ? message + ' - ' : '') + QUnit.jsDump.parse(origArray));
|
|
};
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="qunit"></div>
|
|
<div id="qunit-fixture"></div>
|
|
</body>
|
|
</html>
|