Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e823dcd authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Update AdnRecord to use IccUtils.stringToAdnStringField"

parents d1238cf5 481f7737
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
    }

    /**
+68 −5
Original line number Diff line number Diff line
@@ -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++) {
@@ -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);
    }
}