@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)); } }
@Test public void logTransferStatsAfterMegabyte() { byte[] data = streamer.serializeForStream(message); for(int i = 0; i < 10000; i++) { streamer.receive(data, data.length); } for(int i = 0; i < 10000; i++) { VehicleMessage deserialized = streamer.parseNextMessage(); assertEquals(message, deserialized); } } }
@Test public void deserializeSerialized() { byte[] data = streamer.serializeForStream(message); streamer.receive(data, data.length); VehicleMessage deserialized = streamer.parseNextMessage(); assertEquals(message, deserialized); }
@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); }