@Before public void setup() { streamer = new JsonStreamer(); }
public void receive(VehicleMessage command) throws DataSinkException { if(isConnected()) { VehicleMessageStreamer streamer; synchronized(this) { streamer = mStreamHandler; if(streamer == null) { // See https://github.com/openxc/openxc-android/issues/181 streamer = new JsonStreamer(); Log.i(getTag(), "Payload format unknown, guessing JSON"); } } try { if(!write(streamer.serializeForStream(command))) { throw new DataSinkException("Unable to send command"); } } catch(SerializationException e) { throw new DataSinkException( "Unable to serialize command for sending", e); } } else { throw new DataSinkException("Not connected"); } }
@Test public void readMultipleMessageAtOnceReceivesAll() { source.start(); source.connect(); List<SimpleVehicleMessage> messages = new ArrayList<>(); messages.add(new SimpleVehicleMessage("1", "foo")); messages.add(new SimpleVehicleMessage("2", "bar")); messages.add(new SimpleVehicleMessage("3", "baz")); for(SimpleVehicleMessage message : messages) { source.inject(new JsonStreamer().serializeForStream(message), false); } source.signal(); TestUtils.pause(100); ArgumentCaptor<VehicleMessage> argument = ArgumentCaptor.forClass( VehicleMessage.class); verify(callback, times(3)).receive(argument.capture()); List<VehicleMessage> capturedMessages = argument.getAllValues(); for(int i = 0; i < messages.size(); i++) { VehicleMessage received = capturedMessages.get(i); received.untimestamp(); assertEquals(received, messages.get(i)); } }
if(mStreamHandler == null) { if(JsonStreamer.containsJson(new String(bytes))) { mStreamHandler = new JsonStreamer(); Log.i(getTag(), "Source is sending JSON"); } else {
@Test public void receiveValidJsonTriggersCallback() { source.start(); source.connect(); SimpleVehicleMessage message = new SimpleVehicleMessage("foo", "bar"); source.inject(new JsonStreamer().serializeForStream(message)); TestUtils.pause(100); ArgumentCaptor<VehicleMessage> argument = ArgumentCaptor.forClass( VehicleMessage.class); verify(callback).receive(argument.capture()); VehicleMessage received = argument.getValue(); received.untimestamp(); assertEquals(received, message); }