Loading src/java/com/android/internal/telephony/uicc/AdnRecord.java +6 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony.uicc; import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; Loading @@ -23,7 +24,6 @@ import android.os.Parcelable; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import com.android.internal.telephony.GsmAlphabet; import com.android.telephony.Rlog; import java.util.Arrays; Loading Loading @@ -118,9 +118,12 @@ public class AdnRecord implements Parcelable { * <p>This is the same representation as is used for this field in buildAdnString but there * is no restriction on the length. */ @NonNull public static byte[] encodeAlphaTag(String alphaTag) { return !TextUtils.isEmpty(alphaTag) ? GsmAlphabet.stringToGsm8BitPacked(alphaTag) : new byte[0]; if (TextUtils.isEmpty(alphaTag)) { return new byte[0]; } return IccUtils.stringToAdnStringField(alphaTag); } /** Loading tests/telephonytests/src/com/android/internal/telephony/uicc/IccUtilsTest.java +68 −5 Original line number Diff line number Diff line Loading @@ -16,20 +16,29 @@ package com.android.internal.telephony.uicc; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import android.text.TextUtils; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; public class IccUtilsTest extends AndroidTestCase { @RunWith(AndroidJUnit4.class) public class IccUtilsTest { private static final int NUM_FPLMN = 3; private static final List<String> FPLMNS_SAMPLE = Arrays.asList("123456", "12345", "54321"); private static final int DATA_LENGTH = 12; private static final String EMOJI = new String(Character.toChars(0x1F642)); @SmallTest public void testEncodeFplmns() { @Test public void encodeFplmns() { byte[] encodedFplmns = IccUtils.encodeFplmns(FPLMNS_SAMPLE, DATA_LENGTH); int numValidPlmns = 0; for (int i = 0; i < NUM_FPLMN; i++) { Loading @@ -40,4 +49,58 @@ public class IccUtilsTest extends AndroidTestCase { } assertEquals(NUM_FPLMN, numValidPlmns); } @Test public void stringToAdnStringField_gsmBasic() { String alphaTag = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1234567890" + "!@#$%&*()_+,.?;:<>"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length()); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_nonGsm() { String alphaTag = "日本"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_mixed() { String alphaTag = "ni=日;hon=本;"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_gsmWithEmoji() { String alphaTag = ":)=" + EMOJI + ";"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_mixedWithEmoji() { String alphaTag = "ni=日;hon=本;:)=" + EMOJI + ";"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } } Loading
src/java/com/android/internal/telephony/uicc/AdnRecord.java +6 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony.uicc; import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; Loading @@ -23,7 +24,6 @@ import android.os.Parcelable; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import com.android.internal.telephony.GsmAlphabet; import com.android.telephony.Rlog; import java.util.Arrays; Loading Loading @@ -118,9 +118,12 @@ public class AdnRecord implements Parcelable { * <p>This is the same representation as is used for this field in buildAdnString but there * is no restriction on the length. */ @NonNull public static byte[] encodeAlphaTag(String alphaTag) { return !TextUtils.isEmpty(alphaTag) ? GsmAlphabet.stringToGsm8BitPacked(alphaTag) : new byte[0]; if (TextUtils.isEmpty(alphaTag)) { return new byte[0]; } return IccUtils.stringToAdnStringField(alphaTag); } /** Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/IccUtilsTest.java +68 −5 Original line number Diff line number Diff line Loading @@ -16,20 +16,29 @@ package com.android.internal.telephony.uicc; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import android.text.TextUtils; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; public class IccUtilsTest extends AndroidTestCase { @RunWith(AndroidJUnit4.class) public class IccUtilsTest { private static final int NUM_FPLMN = 3; private static final List<String> FPLMNS_SAMPLE = Arrays.asList("123456", "12345", "54321"); private static final int DATA_LENGTH = 12; private static final String EMOJI = new String(Character.toChars(0x1F642)); @SmallTest public void testEncodeFplmns() { @Test public void encodeFplmns() { byte[] encodedFplmns = IccUtils.encodeFplmns(FPLMNS_SAMPLE, DATA_LENGTH); int numValidPlmns = 0; for (int i = 0; i < NUM_FPLMN; i++) { Loading @@ -40,4 +49,58 @@ public class IccUtilsTest extends AndroidTestCase { } assertEquals(NUM_FPLMN, numValidPlmns); } @Test public void stringToAdnStringField_gsmBasic() { String alphaTag = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1234567890" + "!@#$%&*()_+,.?;:<>"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length()); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_nonGsm() { String alphaTag = "日本"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_mixed() { String alphaTag = "ni=日;hon=本;"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_gsmWithEmoji() { String alphaTag = ":)=" + EMOJI + ";"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } @Test public void stringToAdnStringField_mixedWithEmoji() { String alphaTag = "ni=日;hon=本;:)=" + EMOJI + ";"; byte[] result = IccUtils.stringToAdnStringField(alphaTag); assertThat(result.length).isEqualTo(alphaTag.length() * 2 + 1); assertThat(result[0]).isEqualTo((byte) 0x80); assertThat(IccUtils.adnStringFieldToString(result, 0, result.length)) .isEqualTo(alphaTag); } }