diff --git a/briar-core/src/net/sf/briar/plugins/modem/CountryCodes.java b/briar-core/src/net/sf/briar/plugins/modem/CountryCodes.java
index 1029a1f93..c1de00b08 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/CountryCodes.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/CountryCodes.java
@@ -189,7 +189,7 @@ class CountryCodes {
new Country("RE", "Reunion", "262", "00", "0"),
new Country("RO", "Romania", "40", "00", "0"),
new Country("RS", "Serbia", "381", "99", "0"),
- new Country("RU", "Russia", "7", " 8**10", "8"),
+ new Country("RU", "Russia", "7", "8**10", "8"),
new Country("RW", "Rwanda", "250", "00", "0"),
new Country("SA", "Saudi Arabia", "966", "00", "0"),
new Country("SB", "Solomon Islands", "677", "00", ""),
@@ -264,20 +264,20 @@ class CountryCodes {
// Strip the NDD prefix from the number if present
if(number.startsWith(to.ndd))
number = number.substring(to.ndd.length());
- if(from == to) return from.ndd + number;
- return from.idd + to.countryCode + number;
+ if(from == to) return from.ndd + number; // National
+ return from.idd + to.countryCode + number; // International
}
private static class Country {
- private final String iso3166, countryCode, ndd, idd;
+ private final String iso3166, countryCode, idd, ndd;
private Country(String iso3166, String englishName, String countryCode,
- String ndd, String idd) {
+ String idd, String ndd) {
this.iso3166 = iso3166;
this.countryCode = countryCode;
- this.ndd = ndd;
this.idd = idd;
+ this.ndd = ndd;
}
}
}
\ No newline at end of file
diff --git a/briar-tests/build.xml b/briar-tests/build.xml
index 8dacc0cd2..1acfdcb3c 100644
--- a/briar-tests/build.xml
+++ b/briar-tests/build.xml
@@ -85,6 +85,7 @@
+
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java b/briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java
new file mode 100644
index 000000000..8c87bb50f
--- /dev/null
+++ b/briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java
@@ -0,0 +1,34 @@
+package net.sf.briar.plugins.modem;
+
+import net.sf.briar.BriarTestCase;
+
+import org.junit.Test;
+
+public class CountryCodesTest extends BriarTestCase {
+
+ @Test
+ public void testTranslation() {
+ // Unknown country for caller
+ assertNull(CountryCodes.translate("02012345678", "ZZ", "GB"));
+ // Unknown country for callee
+ assertNull(CountryCodes.translate("02012345678", "GB", "ZZ"));
+ // GB to GB, callee has included NDD prefix
+ assertEquals("02012345678",
+ CountryCodes.translate("02012345678", "GB", "GB"));
+ // GB to GB, callee has included IDD prefix and country code
+ assertEquals("02012345678",
+ CountryCodes.translate("00442012345678", "GB", "GB"));
+ // GB to GB, callee has not included a prefix
+ assertEquals("02012345678",
+ CountryCodes.translate("2012345678", "GB", "GB"));
+ // Russia to GB, callee has included NDD prefix
+ assertEquals("8**10442012345678",
+ CountryCodes.translate("02012345678", "RU", "GB"));
+ // Russia to GB, callee has included IDD prefix and country code
+ assertEquals("8**10442012345678",
+ CountryCodes.translate("00442012345678", "RU", "GB"));
+ // Russia to GB, callee has not included a prefix
+ assertEquals("8**10442012345678",
+ CountryCodes.translate("2012345678", "RU", "GB"));
+ }
+}