Loading src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +24 −2 Original line number Diff line number Diff line Loading @@ -785,7 +785,11 @@ public class EmergencyNumberTracker extends Handler { } mergedEmergencyNumberList.addAll(mEmergencyNumberListWithPrefix); mergedEmergencyNumberList.addAll(mEmergencyNumberListFromTestMode); if (shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored()) { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList); } else { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList, true); } mEmergencyNumberList = mergedEmergencyNumberList; } Loading Loading @@ -1272,7 +1276,12 @@ public class EmergencyNumberTracker extends Handler { mEmergencyNumberListFromDatabase)); } mergedEmergencyNumberList.addAll(getEmergencyNumberListTestMode()); if (shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored()) { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList); } else { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList, true); } return mergedEmergencyNumberList; } Loading Loading @@ -1333,6 +1342,19 @@ public class EmergencyNumberTracker extends Handler { .ignore_emergency_number_routing_from_db); } /** * @return {@code true} if determining of Urns & Service Categories while merging duplicate * numbers should be ignored. * {@code false} if determining of Urns & Service Categories while merging duplicate * numbers should not be ignored. */ @VisibleForTesting public boolean shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored() { // TODO: Device config return false; } /** * Dump Emergency Number List info in the tracking * Loading tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTest.java +251 −9 Original line number Diff line number Diff line Loading @@ -261,7 +261,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } Loading @@ -284,7 +284,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentMnc() throws Exception { Loading @@ -306,7 +306,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentCategories() throws Exception { Loading @@ -328,7 +328,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentUrns() throws Exception { Loading Loading @@ -357,7 +357,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberCallRouting() throws Exception { Loading @@ -382,7 +382,7 @@ public class EmergencyNumberTest extends TestCase { /* case 1: Check routing is not checked when comparing the same numbers. As routing will be unknown for all numbers apart from DB. Check merge when both are not from DB then routing value is merged from first number. */ assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); assertEquals(num1, EmergencyNumber.mergeSameEmergencyNumbers(num1, num2)); num2 = new EmergencyNumber( Loading @@ -397,7 +397,7 @@ public class EmergencyNumberTest extends TestCase { /* case 1: Check routing is not checked when comparing the same numbers. Check merge when one of the number is from DB then routing value is merged from DB number. Along with source value is masked with both*/ assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); num2 = new EmergencyNumber( "911", Loading Loading @@ -430,7 +430,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentSourceTestOrNot() throws Exception { Loading @@ -452,7 +452,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testMergeSameNumbersInEmergencyNumberListWithDifferentSources() throws Exception { Loading Loading @@ -624,4 +624,246 @@ public class EmergencyNumberTest extends TestCase { assertEquals(outputNumberList, inputNumberList); } public void testMergeSameNumbersEmergencyNumberListByDeterminingFields() throws Exception { List<String> urn1 = new ArrayList<>(); urn1.add("sos"); List<String> urn2 = new ArrayList<>(); urn2.add("sos:ambulance"); List<EmergencyNumber> inputNumberList = new ArrayList<>(); EmergencyNumber num1 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber num2 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num3 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num4 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_AMBULANCE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num5 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber num6 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num7 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num8 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num9 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num10 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num11 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_MIEC, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num12 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num13 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num14 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); inputNumberList.add(num1); inputNumberList.add(num2); inputNumberList.add(num3); inputNumberList.add(num4); inputNumberList.add(num5); inputNumberList.add(num6); inputNumberList.add(num7); inputNumberList.add(num8); inputNumberList.add(num9); inputNumberList.add(num10); inputNumberList.add(num11); inputNumberList.add(num12); inputNumberList.add(num13); inputNumberList.add(num14); EmergencyNumber mergeOfNum1AndNum2 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber mergeOfNum3AndNum4 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_AMBULANCE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<String> mergedUrns1And2 = new ArrayList<>(); mergedUrns1And2.add("sos"); mergedUrns1And2.add("sos:ambulance"); EmergencyNumber mergeOfNum5AndNum6 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, mergedUrns1And2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber mergeOfNum7AndNum8 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber mergeOfNum11AndNum12 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<String> mergedUrns2And1 = new ArrayList<>(); mergedUrns2And1.add("sos:ambulance"); mergedUrns2And1.add("sos"); EmergencyNumber mergeOfNum9AndNum10 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, mergedUrns2And1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber mergeOfNum13AndNum14 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<EmergencyNumber> outputNumberList = new ArrayList<>(); outputNumberList.add(mergeOfNum1AndNum2); outputNumberList.add(mergeOfNum3AndNum4); outputNumberList.add(mergeOfNum5AndNum6); outputNumberList.add(mergeOfNum7AndNum8); outputNumberList.add(mergeOfNum9AndNum10); outputNumberList.add(mergeOfNum11AndNum12); outputNumberList.add(mergeOfNum13AndNum14); Collections.sort(outputNumberList); EmergencyNumber.mergeSameNumbersInEmergencyNumberList(inputNumberList, true); assertEquals(outputNumberList, inputNumberList); } } Loading
src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +24 −2 Original line number Diff line number Diff line Loading @@ -785,7 +785,11 @@ public class EmergencyNumberTracker extends Handler { } mergedEmergencyNumberList.addAll(mEmergencyNumberListWithPrefix); mergedEmergencyNumberList.addAll(mEmergencyNumberListFromTestMode); if (shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored()) { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList); } else { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList, true); } mEmergencyNumberList = mergedEmergencyNumberList; } Loading Loading @@ -1272,7 +1276,12 @@ public class EmergencyNumberTracker extends Handler { mEmergencyNumberListFromDatabase)); } mergedEmergencyNumberList.addAll(getEmergencyNumberListTestMode()); if (shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored()) { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList); } else { EmergencyNumber.mergeSameNumbersInEmergencyNumberList(mergedEmergencyNumberList, true); } return mergedEmergencyNumberList; } Loading Loading @@ -1333,6 +1342,19 @@ public class EmergencyNumberTracker extends Handler { .ignore_emergency_number_routing_from_db); } /** * @return {@code true} if determining of Urns & Service Categories while merging duplicate * numbers should be ignored. * {@code false} if determining of Urns & Service Categories while merging duplicate * numbers should not be ignored. */ @VisibleForTesting public boolean shouldDeterminingOfUrnsAndCategoriesWhileMergingIgnored() { // TODO: Device config return false; } /** * Dump Emergency Number List info in the tracking * Loading
tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTest.java +251 −9 Original line number Diff line number Diff line Loading @@ -261,7 +261,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } Loading @@ -284,7 +284,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentMnc() throws Exception { Loading @@ -306,7 +306,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentCategories() throws Exception { Loading @@ -328,7 +328,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentUrns() throws Exception { Loading Loading @@ -357,7 +357,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberCallRouting() throws Exception { Loading @@ -382,7 +382,7 @@ public class EmergencyNumberTest extends TestCase { /* case 1: Check routing is not checked when comparing the same numbers. As routing will be unknown for all numbers apart from DB. Check merge when both are not from DB then routing value is merged from first number. */ assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); assertEquals(num1, EmergencyNumber.mergeSameEmergencyNumbers(num1, num2)); num2 = new EmergencyNumber( Loading @@ -397,7 +397,7 @@ public class EmergencyNumberTest extends TestCase { /* case 1: Check routing is not checked when comparing the same numbers. Check merge when one of the number is from DB then routing value is merged from DB number. Along with source value is masked with both*/ assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); num2 = new EmergencyNumber( "911", Loading Loading @@ -430,7 +430,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertTrue(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testSameEmergencyNumberDifferentSourceTestOrNot() throws Exception { Loading @@ -452,7 +452,7 @@ public class EmergencyNumberTest extends TestCase { EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2)); assertFalse(EmergencyNumber.areSameEmergencyNumbers(num1, num2, false)); } public void testMergeSameNumbersInEmergencyNumberListWithDifferentSources() throws Exception { Loading Loading @@ -624,4 +624,246 @@ public class EmergencyNumberTest extends TestCase { assertEquals(outputNumberList, inputNumberList); } public void testMergeSameNumbersEmergencyNumberListByDeterminingFields() throws Exception { List<String> urn1 = new ArrayList<>(); urn1.add("sos"); List<String> urn2 = new ArrayList<>(); urn2.add("sos:ambulance"); List<EmergencyNumber> inputNumberList = new ArrayList<>(); EmergencyNumber num1 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber num2 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num3 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num4 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_AMBULANCE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num5 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber num6 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num7 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num8 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num9 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num10 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num11 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_MIEC, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num12 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber num13 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); EmergencyNumber num14 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); inputNumberList.add(num1); inputNumberList.add(num2); inputNumberList.add(num3); inputNumberList.add(num4); inputNumberList.add(num5); inputNumberList.add(num6); inputNumberList.add(num7); inputNumberList.add(num8); inputNumberList.add(num9); inputNumberList.add(num10); inputNumberList.add(num11); inputNumberList.add(num12); inputNumberList.add(num13); inputNumberList.add(num14); EmergencyNumber mergeOfNum1AndNum2 = new EmergencyNumber( "110", "jp", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber mergeOfNum3AndNum4 = new EmergencyNumber( "911", "us", "30", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_AMBULANCE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<String> mergedUrns1And2 = new ArrayList<>(); mergedUrns1And2.add("sos"); mergedUrns1And2.add("sos:ambulance"); EmergencyNumber mergeOfNum5AndNum6 = new EmergencyNumber( "112", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, mergedUrns1And2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL); EmergencyNumber mergeOfNum7AndNum8 = new EmergencyNumber( "108", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber mergeOfNum11AndNum12 = new EmergencyNumber( "100", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, urn2, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<String> mergedUrns2And1 = new ArrayList<>(); mergedUrns2And1.add("sos:ambulance"); mergedUrns2And1.add("sos"); EmergencyNumber mergeOfNum9AndNum10 = new EmergencyNumber( "102", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE, mergedUrns2And1, EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_SIM, EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN); EmergencyNumber mergeOfNum13AndNum14 = new EmergencyNumber( "200", "in", "", EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE, new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG | EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE, EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY); List<EmergencyNumber> outputNumberList = new ArrayList<>(); outputNumberList.add(mergeOfNum1AndNum2); outputNumberList.add(mergeOfNum3AndNum4); outputNumberList.add(mergeOfNum5AndNum6); outputNumberList.add(mergeOfNum7AndNum8); outputNumberList.add(mergeOfNum9AndNum10); outputNumberList.add(mergeOfNum11AndNum12); outputNumberList.add(mergeOfNum13AndNum14); Collections.sort(outputNumberList); EmergencyNumber.mergeSameNumbersInEmergencyNumberList(inputNumberList, true); assertEquals(outputNumberList, inputNumberList); } }