All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robolectric.shadows.NetworkRegistrationInfoTestBuilder Maven / Gradle / Ivy

The newest version!
package org.robolectric.shadows;

import static android.os.Build.VERSION_CODES.Q;
import static android.os.Build.VERSION_CODES.TIRAMISU;
import static org.robolectric.util.reflector.Reflector.reflector;

import android.annotation.RequiresApi;
import android.os.Build.VERSION;
import android.telephony.CellIdentity;
import android.telephony.DataSpecificRegistrationInfo;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.VoiceSpecificRegistrationInfo;
import java.util.List;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.reflector.Accessor;
import org.robolectric.util.reflector.ForType;

/**
 * Builder class to create instance of {@link NetworkRegistrationInfo}.
 *
 * 

NRI was first made a @SystemApi in Q then finally exposed as public in R. * *

This builder class does not extend {@link NetworkRegistrationInfo.Builder}. It uses {@link * NetworkRegistrationInfo.Builder} and some additional APIs to set NRI private fields. */ @RequiresApi(Q) public class NetworkRegistrationInfoTestBuilder { private final NetworkRegistrationInfo.Builder buider = new NetworkRegistrationInfo.Builder(); private VoiceSpecificRegistrationInfo voiceSpecificInfo; private DataSpecificRegistrationInfo dataSpecificInfo; private int roamingType; public static NetworkRegistrationInfoTestBuilder newBuilder() { return new NetworkRegistrationInfoTestBuilder(); } public NetworkRegistrationInfo build() { NetworkRegistrationInfo networkRegistrationInfo = buider.build(); if (VERSION.SDK_INT < Q) { throw new IllegalStateException( "NetworkRegistrationInfo not available on SDK : " + RuntimeEnvironment.getApiLevel()); } else if (VERSION.SDK_INT < TIRAMISU) { reflector(NetworkRegistrationInfoReflector.class, networkRegistrationInfo) .setVoiceSpecificInfo(voiceSpecificInfo); reflector(NetworkRegistrationInfoReflector.class, networkRegistrationInfo) .setDataSpecificInfo(dataSpecificInfo); } networkRegistrationInfo.setRoamingType(roamingType); return networkRegistrationInfo; } public NetworkRegistrationInfoTestBuilder setAccessNetworkTechnology(int value) { buider.setAccessNetworkTechnology(value); return this; } public NetworkRegistrationInfoTestBuilder setAvailableServices(List value) { buider.setAvailableServices(value); return this; } public NetworkRegistrationInfoTestBuilder setCellIdentity(CellIdentity value) { buider.setCellIdentity(value); return this; } public NetworkRegistrationInfoTestBuilder setDomain(int value) { buider.setDomain(value); return this; } public NetworkRegistrationInfoTestBuilder setEmergencyOnly(boolean value) { buider.setEmergencyOnly(value); return this; } public NetworkRegistrationInfoTestBuilder setRegisteredPlmn(String value) { if (VERSION.SDK_INT == Q) { throw new IllegalStateException( "Registered PLMN is not available on SDK : " + RuntimeEnvironment.getApiLevel()); } else { buider.setRegisteredPlmn(value); } return this; } public NetworkRegistrationInfoTestBuilder setRegistrationState(int value) { buider.setRegistrationState(value); return this; } public NetworkRegistrationInfoTestBuilder setRejectCause(int value) { buider.setRejectCause(value); return this; } public NetworkRegistrationInfoTestBuilder setTransportType(int value) { buider.setTransportType(value); return this; } public NetworkRegistrationInfoTestBuilder setDataSpecificInfo( DataSpecificRegistrationInfo value) { if (VERSION.SDK_INT >= TIRAMISU) { buider.setDataSpecificInfo(value); } else { dataSpecificInfo = value; } return this; } public NetworkRegistrationInfoTestBuilder setVoiceSpecificInfo( VoiceSpecificRegistrationInfo value) { if (VERSION.SDK_INT >= TIRAMISU) { buider.setVoiceSpecificInfo(value); } else { voiceSpecificInfo = value; } return this; } public NetworkRegistrationInfoTestBuilder setRoamingType(int value) { roamingType = value; return this; } @ForType(NetworkRegistrationInfo.class) private interface NetworkRegistrationInfoReflector { @Accessor("mDataSpecificInfo") public void setDataSpecificInfo(DataSpecificRegistrationInfo value); @Accessor("mVoiceSpecificInfo") public void setVoiceSpecificInfo(VoiceSpecificRegistrationInfo value); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy