use of android.app.timedetector.TelephonyTimeSuggestion in project android_frameworks_opt_telephony by LineageOS.
the class NitzStateMachineImplTest method test_emptyCountryString_countryReceivedFirst.
@Test
public void test_emptyCountryString_countryReceivedFirst() throws Exception {
Scenario scenario = UNIQUE_US_ZONE_SCENARIO1;
TimestampedValue<NitzData> nitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
Script script = new Script().initializeSystemClock(ARBITRARY_SYSTEM_CLOCK_TIME).networkAvailable();
// Simulate an empty country being set.
script.countryReceived("");
// Nothing should be set. The country is not valid.
script.verifyOnlyTimeZoneWasSuggestedAndReset(EMPTY_TIME_ZONE_SUGGESTION);
// Check NitzStateMachine exposed state.
assertNull(mNitzStateMachineImpl.getCachedNitzData());
// Simulate receiving the NITZ signal.
script.nitzReceived(nitzSignal);
TelephonyTimeSuggestion expectedTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, nitzSignal);
// Capture output from the real suggester and confirm it meets the test's needs /
// expectations.
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, "", /* countryIsoCode */
nitzSignal);
assertEquals(MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY, expectedTimeZoneSuggestion.getMatchType());
assertEquals(QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, expectedTimeZoneSuggestion.getQuality());
// Verify the state machine did the right thing.
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedTimeSuggestion, expectedTimeZoneSuggestion);
// Check NitzStateMachine exposed state.
assertEquals(nitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
}
use of android.app.timedetector.TelephonyTimeSuggestion in project android_frameworks_opt_telephony by LineageOS.
the class NitzStateMachineImplTest method test_countryUnavailableClearsTimeZoneSuggestion.
@Test
public void test_countryUnavailableClearsTimeZoneSuggestion() throws Exception {
Scenario scenario = UNIQUE_US_ZONE_SCENARIO1;
TimestampedValue<NitzData> nitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
Script script = new Script().initializeSystemClock(ARBITRARY_SYSTEM_CLOCK_TIME).networkAvailable();
// Simulate receiving the country and verify the state machine does the right thing.
script.countryReceived(scenario.getNetworkCountryIsoCode());
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion1 = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, scenario.getNetworkCountryIsoCode(), null);
script.verifyOnlyTimeZoneWasSuggestedAndReset(expectedTimeZoneSuggestion1);
// Simulate receiving an NITZ signal and verify the state machine does the right thing.
script.nitzReceived(nitzSignal);
TelephonyTimeSuggestion expectedTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, nitzSignal);
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion2 = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, scenario.getNetworkCountryIsoCode(), nitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedTimeSuggestion, expectedTimeZoneSuggestion2);
// Check state that NitzStateMachine must expose.
assertEquals(nitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
// Simulate the country becoming unavailable and verify the state machine does the right
// thing.
script.countryUnavailable();
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion3 = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, null, /* countryIsoCode */
nitzSignal);
script.verifyOnlyTimeZoneWasSuggestedAndReset(expectedTimeZoneSuggestion3);
// Check state that NitzStateMachine must expose.
assertEquals(nitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
}
use of android.app.timedetector.TelephonyTimeSuggestion in project android_frameworks_opt_telephony by LineageOS.
the class NitzStateMachineImplTest method test_airplaneModeClearsState.
@Test
public void test_airplaneModeClearsState() throws Exception {
Scenario scenario = UNITED_KINGDOM_SCENARIO.mutableCopy();
int timeStepMillis = (int) TimeUnit.HOURS.toMillis(3);
Script script = new Script().initializeSystemClock(ARBITRARY_SYSTEM_CLOCK_TIME).networkAvailable();
// Pre-flight: Simulate a device receiving signals that allow it to detect time and time
// zone.
TimestampedValue<NitzData> preFlightNitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
TelephonyTimeSuggestion expectedPreFlightTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, preFlightNitzSignal);
String preFlightCountryIsoCode = scenario.getNetworkCountryIsoCode();
// Simulate receiving the NITZ signal and country.
script.nitzReceived(preFlightNitzSignal).countryReceived(preFlightCountryIsoCode);
// Verify the state machine did the right thing.
TelephonyTimeZoneSuggestion expectedPreFlightTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, preFlightCountryIsoCode, preFlightNitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedPreFlightTimeSuggestion, expectedPreFlightTimeZoneSuggestion);
// Check state that NitzStateMachine must expose.
assertEquals(preFlightNitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
// Boarded flight: Airplane mode turned on / time zone detection still enabled.
// The NitzStateMachine must lose all state and stop having an opinion about time zone.
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate airplane mode being turned on.
script.toggleAirplaneMode(true);
// Verify the state machine did the right thing.
// Check the time zone suggestion was withdrawn (time is not currently withdrawn).
script.verifyTimeAndTimeZoneSuggestedAndReset(EMPTY_TIME_SUGGESTION, EMPTY_TIME_ZONE_SUGGESTION);
// Check state that NitzStateMachine must expose.
assertNull(mNitzStateMachineImpl.getCachedNitzData());
// During flight: Airplane mode turned off / time zone detection still enabled.
// The NitzStateMachine still must not have an opinion about time zone / hold any state.
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate airplane mode being turned off.
script.toggleAirplaneMode(false);
// Verify nothing was suggested: The last suggestion was empty so nothing has changed.
script.verifyNothingWasSuggested();
// Check the state that NitzStateMachine must expose.
assertNull(mNitzStateMachineImpl.getCachedNitzData());
// Post flight: Device has moved and receives new signals.
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate the movement to the destination.
scenario.changeCountry(UNIQUE_US_ZONE_SCENARIO1.getTimeZoneId(), UNIQUE_US_ZONE_SCENARIO1.getNetworkCountryIsoCode());
// Simulate the device receiving NITZ signal and country again after the flight. Now the
// NitzStateMachine should be opinionated again.
TimestampedValue<NitzData> postFlightNitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
String postFlightCountryCode = scenario.getNetworkCountryIsoCode();
script.countryReceived(postFlightCountryCode).nitzReceived(postFlightNitzSignal);
// Verify the state machine did the right thing.
TelephonyTimeSuggestion expectedPostFlightTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, postFlightNitzSignal);
TelephonyTimeZoneSuggestion expectedPostFlightTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, postFlightCountryCode, postFlightNitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedPostFlightTimeSuggestion, expectedPostFlightTimeZoneSuggestion);
// Check state that NitzStateMachine must expose.
assertEquals(postFlightNitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
}
use of android.app.timedetector.TelephonyTimeSuggestion in project android_frameworks_opt_telephony by LineageOS.
the class NitzStateMachineImplTest method test_nitzThenCountry.
@Test
public void test_nitzThenCountry() throws Exception {
Scenario scenario = UNIQUE_US_ZONE_SCENARIO1;
TimestampedValue<NitzData> nitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
String networkCountryIsoCode = scenario.getNetworkCountryIsoCode();
// Capture test expectations from the real suggester and confirm we can tell the difference
// between them.
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion1 = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, null, /* countryIsoCode */
nitzSignal);
TelephonyTimeZoneSuggestion expectedTimeZoneSuggestion2 = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, networkCountryIsoCode, nitzSignal);
assertNotEquals(expectedTimeZoneSuggestion1, expectedTimeZoneSuggestion2);
Script script = new Script().initializeSystemClock(ARBITRARY_SYSTEM_CLOCK_TIME).networkAvailable();
// Simulate receiving the NITZ signal.
script.nitzReceived(nitzSignal);
// Verify the state machine did the right thing.
TelephonyTimeSuggestion expectedTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, nitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedTimeSuggestion, expectedTimeZoneSuggestion1);
// Check NitzStateMachine exposed state.
assertEquals(nitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
// Simulate country being known and verify the behavior.
script.countryReceived(networkCountryIsoCode).verifyOnlyTimeZoneWasSuggestedAndReset(expectedTimeZoneSuggestion2);
// Check NitzStateMachine exposed state.
assertEquals(nitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
}
use of android.app.timedetector.TelephonyTimeSuggestion in project android_frameworks_opt_telephony by LineageOS.
the class NitzStateMachineImplTest method test_handleNetworkUnavailableClearsNetworkState.
/**
* Confirm losing the network / NITZ doesn't clear country state.
*/
@Test
public void test_handleNetworkUnavailableClearsNetworkState() throws Exception {
Scenario scenario = UNIQUE_US_ZONE_SCENARIO1.mutableCopy();
int timeStepMillis = (int) TimeUnit.HOURS.toMillis(3);
String countryIsoCode = scenario.getNetworkCountryIsoCode();
Script script = new Script().initializeSystemClock(ARBITRARY_SYSTEM_CLOCK_TIME).networkAvailable();
// Simulate a device receiving signals that allow it to detect time and time zone.
TimestampedValue<NitzData> initialNitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
TelephonyTimeSuggestion expectedInitialTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, initialNitzSignal);
// Simulate receiving the NITZ signal and country.
script.nitzReceived(initialNitzSignal).countryReceived(countryIsoCode);
// Verify the state machine did the right thing.
TelephonyTimeZoneSuggestion expectedInitialTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, countryIsoCode, initialNitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedInitialTimeSuggestion, expectedInitialTimeZoneSuggestion);
// Check state that NitzStateMachine must expose.
assertEquals(initialNitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate network being lost.
script.networkUnavailable();
// Check the "no NITZ" time and time zone suggestions are made.
TelephonyTimeZoneSuggestion expectedMiddleTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, countryIsoCode, null);
script.verifyTimeAndTimeZoneSuggestedAndReset(EMPTY_TIME_SUGGESTION, expectedMiddleTimeZoneSuggestion);
// Check state that NitzStateMachine must expose.
assertNull(mNitzStateMachineImpl.getCachedNitzData());
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate the network being found.
script.networkAvailable().verifyNothingWasSuggested();
// Check the state that NitzStateMachine must expose.
assertNull(mNitzStateMachineImpl.getCachedNitzData());
// Simulate the passage of time and update the device realtime clock.
scenario.incrementTime(timeStepMillis);
script.incrementTime(timeStepMillis);
// Simulate the device receiving NITZ signal again. Now the NitzStateMachine should be
// opinionated again.
TimestampedValue<NitzData> finalNitzSignal = scenario.createNitzSignal(mFakeDeviceState.elapsedRealtime());
script.nitzReceived(finalNitzSignal);
// Verify the state machine did the right thing.
TelephonyTimeSuggestion expectedFinalTimeSuggestion = createTimeSuggestionFromNitzSignal(SLOT_INDEX, finalNitzSignal);
TelephonyTimeZoneSuggestion expectedFinalTimeZoneSuggestion = mRealTimeZoneSuggester.getTimeZoneSuggestion(SLOT_INDEX, countryIsoCode, finalNitzSignal);
script.verifyTimeAndTimeZoneSuggestedAndReset(expectedFinalTimeSuggestion, expectedFinalTimeZoneSuggestion);
// Check state that NitzStateMachine must expose.
assertEquals(finalNitzSignal.getValue(), mNitzStateMachineImpl.getCachedNitzData());
}
Aggregations