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

Commit 8d3712c9 authored by Meng Wang's avatar Meng Wang Committed by Android (Google) Code Review
Browse files

Merge "Add support for mocking close logical channel errors in LogicalChannelMocker" into main

parents 7d80faae 9c2b1745
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ public class EuiccCardTest extends TelephonyTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi,
                "E00582030200009000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, responses);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);
        return channel;
    }
}
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -1202,7 +1202,7 @@ public class EuiccPortTest extends TelephonyTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi,
                "E00582030200009000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, responses);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);
        return channel;
    }

@@ -1210,7 +1210,7 @@ public class EuiccPortTest extends TelephonyTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi,
                "E00582030201009000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, responses);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);
        return channel;
    }
}
+10 −10
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ public class ApduSenderTest {
    @Test
    public void testSendEmptyCommands() throws InterruptedException {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "A1A1A19000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        mSender.send((selectResponse, requestBuilder) -> mSelectResponse = selectResponse,
                mResponseCaptor, mHandler);
@@ -155,7 +155,7 @@ public class ApduSenderTest {
    public void testSend() throws InterruptedException {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A1A1A19000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        mSender.send((selectResponse, requestBuilder) -> requestBuilder.addApdu(
                10, 1, 2, 3, 0, "a"), mResponseCaptor, mHandler);
@@ -171,7 +171,7 @@ public class ApduSenderTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A19000", "A29000",
                "A39000", "A49000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        mSender.send((selectResponse, requestBuilder) -> {
            requestBuilder.addApdu(10, 1, 2, 3, 0, "a");
@@ -197,7 +197,7 @@ public class ApduSenderTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A19000", "A29000",
                "A39000", "A49000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);
        mResponseCaptor.stopApduIndex = 2;

        mSender.send((selectResponse, requestBuilder) -> {
@@ -222,7 +222,7 @@ public class ApduSenderTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A1A1A16104",
                "B2B2B2B26102", "C3C39000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        mSender.send((selectResponse, requestBuilder) -> requestBuilder.addApdu(
                10, 1, 2, 3, 0, "a"), mResponseCaptor, mHandler);
@@ -242,7 +242,7 @@ public class ApduSenderTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A19000", "9000", "9000",
                "B22B6103", "B2222B9000", "C39000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        // Each segment has 0xFF (the limit of a single command) bytes.
        String s1 = new String(new char[0xFF]).replace("\0", "AA");
@@ -273,7 +273,7 @@ public class ApduSenderTest {
    public void testSendStoreDataLongDataMod0() throws InterruptedException {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "9000", "B2222B9000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        // Each segment has 0xFF (the limit of a single command) bytes.
        String s1 = new String(new char[0xFF]).replace("\0", "AA");
@@ -295,7 +295,7 @@ public class ApduSenderTest {
    public void testSendStoreDataLen0() throws InterruptedException {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "B2222B9000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        mSender.send((selectResponse, requestBuilder) -> {
            requestBuilder.addStoreData("");
@@ -312,7 +312,7 @@ public class ApduSenderTest {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockSendToLogicalChannel(mMockCi, channel, "A19000", "9000",
                "B22B6103", "6985");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        // Each segment has 0xFF (the limit of a single command) bytes.
        String s1 = new String(new char[0xFF]).replace("\0", "AA");
@@ -339,7 +339,7 @@ public class ApduSenderTest {
    @Test
    public void testChannelAlreadyOpened() throws InterruptedException {
        int channel = LogicalChannelMocker.mockOpenLogicalChannelResponse(mMockCi, "9000");
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel);
        LogicalChannelMocker.mockCloseLogicalChannel(mMockCi, channel, /* error= */ null);

        ResponseCaptor outerResponseCaptor = new ResponseCaptor();
        mSender.send(
+6 −2
Original line number Diff line number Diff line
@@ -96,10 +96,14 @@ public final class LogicalChannelMocker {
        msg.sendToTarget();
    }

    public static void mockCloseLogicalChannel(CommandsInterface mockCi, int channel) {
    /**
     * @param error can be {@code null} for a success response or an exception for a failure
     */
    public static void mockCloseLogicalChannel(
            CommandsInterface mockCi, int channel, @Nullable Throwable error) {
        doAnswer((Answer<Void>) invocation -> {
            Message msg = invocation.getArgument(2);
            AsyncResult.forMessage(msg);
            AsyncResult.forMessage(msg, null, error);
            msg.sendToTarget();
            return null;
        }).when(mockCi).iccCloseLogicalChannel(eq(channel),