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

Commit 7b57c45d authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Update AdnRecord to use IccUtils.stringToAdnStringField" am: 0e823dcd...

Merge "Update AdnRecord to use IccUtils.stringToAdnStringField" am: 0e823dcd am: fe46293c am: 12c7e670

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1564598

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Idcd748adcc45215c4028c8d46703ab87709d8b13
parents 636a1e9e 12c7e670
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);
    }
}