@Override public void onServiceDisconnected(ComponentName name) { setService(null, false); }
@Override public boolean connect() { mBilling.setService(mService, true); return true; }
@Override public Object answer(InvocationOnMock invocation) throws Throwable { mBilling.setService(service, true); return true; } });
@Override public void onServiceConnected(ComponentName name, IBinder service) { setService(IInAppBillingService.Stub.asInterface(service), true); } };
@Override public Object answer(InvocationOnMock invocation) throws Throwable { mBilling.setService(null, true); return true; } });
@Override public void disconnect() { mBilling.setService(null, false); } }
@Override public void run() { mBilling.setService(service, service != null); } });
@Test public void testShouldConnectOnlyIfConnecting() throws Exception { mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.FAILED); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.FAILED, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.CONNECTED, mBilling.getState()); }
@Test public void testShouldDisconnectServiceIfBillingIsInactive() throws Exception { final Billing.ServiceConnector connector = mock(Billing.ServiceConnector.class); mBilling.setConnector(connector); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.DISCONNECTED); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); verify(connector, times(1)).disconnect(); }
@Test public void testShouldJumpToDisconnectedStateIfWasConnecting() throws Exception { mBilling.setState(Billing.State.CONNECTING); mBilling.setService(null, false); assertEquals(Billing.State.FAILED, mBilling.getState()); }
@Test public void testStates() throws Exception { final Billing.ServiceConnector connector = mock(Billing.ServiceConnector.class); when(connector.connect()).thenReturn(true); mBilling.setConnector(connector); mBilling.connect(); assertEquals(Billing.State.CONNECTING, mBilling.getState()); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.CONNECTED, mBilling.getState()); mBilling.disconnect(); assertEquals(Billing.State.DISCONNECTING, mBilling.getState()); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); }
@Test public void testShouldDisconnectOnlyIfNotInInitialState() throws Exception { mBilling.setState(Billing.State.INITIAL); mBilling.setService(null, false); assertEquals(Billing.State.INITIAL, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.CONNECTED); mBilling.setState(Billing.State.DISCONNECTING); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.CONNECTED); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); }