Add case sensitive sort to AccessPoint compareTo.

If APs differ only in case, further compare by case.

Bug: b/36719423
Test: runtest --path
frameworks/base/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java

Change-Id: Ic36a2221a668fa59230bb0ddbee2055776d2dc44
This commit is contained in:
Sundeep Ghuman
2017-06-21 21:40:06 -07:00
parent 79c7a85d60
commit d44b8e4689
2 changed files with 23 additions and 1 deletions

View File

@@ -322,8 +322,15 @@ public class AccessPoint implements Comparable<AccessPoint> {
if (difference != 0) {
return difference;
}
// Sort by ssid.
return getSsidStr().compareToIgnoreCase(other.getSsidStr());
difference = getSsidStr().compareToIgnoreCase(other.getSsidStr());
if (difference != 0) {
return difference;
}
// Do a case sensitive comparison to distinguish SSIDs that differ in case only
return getSsidStr().compareTo(other.getSsidStr());
}
@Override

View File

@@ -168,6 +168,21 @@ public class AccessPointTest {
assertSortingWorks(firstAp, secondAp);
}
@Test
public void testCompareTo_GivesSsidCasePrecendenceAfterAlphabetical() {
final String firstName = "aaAaaa";
final String secondName = "aaaaaa";
final String thirdName = "BBBBBB";
AccessPoint firstAp = new TestAccessPointBuilder(mContext).setSsid(firstName).build();
AccessPoint secondAp = new TestAccessPointBuilder(mContext).setSsid(secondName).build();
AccessPoint thirdAp = new TestAccessPointBuilder(mContext).setSsid(thirdName).build();
assertSortingWorks(firstAp, secondAp);
assertSortingWorks(secondAp, thirdAp);
}
@Test
public void testCompareTo_AllSortingRulesCombined() {