@Override public String toString() { return MoreObjects.toStringHelper(this) .add("numListeners", getListenerCount()) .toString(); }
@Override public void register(VehicleServiceListener listener) { Log.i(TAG, "Adding listener " + listener); mNotifier.register(listener); }
@Override public void unregister(VehicleServiceListener listener) { Log.i(TAG, "Removing listener " + listener); mNotifier.unregister(listener); }
@Test public void testUnregisterValid() { notifier.register(listener); assertEquals(1, notifier.getListenerCount()); notifier.unregister(listener); assertEquals(0, notifier.getListenerCount()); }
@Test public void testRegister() { assertEquals(0, notifier.getListenerCount()); notifier.register(listener); assertEquals(1, notifier.getListenerCount()); }
@Test public void testUnregisterInvalid() { // this just shouldn't explode, it should ignore it...or should it? // failing silently is usually a bad thing assertEquals(0, notifier.getListenerCount()); notifier.unregister(listener); assertEquals(0, notifier.getListenerCount()); }
@Test public void testReceiveCorrectId() throws DataSinkException { notifier.register(listener); assertNull(receivedId); SimpleVehicleMessage message = new SimpleVehicleMessage(messageId, 1); notifier.receive(message); try { Thread.sleep(50); } catch(InterruptedException e) {} assertNotNull(receivedId); assertEquals(receivedId, messageId); } }
@Before public void setUp() { notifier = new RemoteCallbackSink(); listener = new VehicleServiceListener.Stub() { @Override public void receive(VehicleMessage value) { receivedId = ((NamedVehicleMessage)value).getName(); } }; }