### Question:
Settings { public synchronized void saveState(@NonNull final State state) { OPFLog.logMethod(state); preferences.put(KEY_STATE, state.getValue()); } private  Settings(@NonNull final Context context); @SuppressWarnings("PMD.NonThreadSafeSingleton") static Settings getInstance(@NonNull final Context context); @NonNull synchronized State getState(); synchronized void saveState(@NonNull final State state); synchronized void clear(); @Nullable synchronized String getLastProviderName(); synchronized void saveLastProvider(@Nullable final PushProvider provider); @Nullable synchronized String getLastAndroidId(); synchronized void saveLastAndroidId(@Nullable final String androidId); synchronized void saveUnregisteringProvider(@NonNull final String providerName); synchronized void removeUnregisteringProvider(@NonNull final String providerName); synchronized boolean isProviderUnregistrationPerforming(@NonNull final String providerName); synchronized void saveRegisteringProvider(@NonNull final String providerName); synchronized void removeRegisteringProvider(@NonNull final String providerName); synchronized boolean isProviderRegistrationPerforming(@NonNull final String providerName); synchronized void savePendingRegistrationProvider(@NonNull final String providerName); synchronized void removePendingRegistrationProvider(); @Nullable synchronized String getPendingRegistrationProvider(); synchronized void savePendingUnregistrationProvider(@NonNull final String providerName); synchronized void removePendingUnregistrationProvider(); @Nullable synchronized String getPendingUnregistrationProvider();  }### Answer:
@Test public void saveState() { State actualState; State expectedState; final int numStates = State.values().length; for (int i = 0; i < NUM_TESTS; ++i) { expectedState = State.values()[RND.nextInt(numStates)]; settings.saveState(expectedState); assertTrue(sharedPreferences.contains(KEY_STATE)); actualState = State.fromValue(sharedPreferences.getInt(KEY_STATE, numStates)); assertEquals(expectedState, actualState); } }