public static MessageKey getKeyForMeasurement( Class<? extends Measurement> measurementType) throws UnrecognizedMeasurementTypeException { if(!sMeasurementIdToClass.inverse().containsKey(measurementType)) { cacheMeasurementId(measurementType); } return new NamedVehicleMessage( sMeasurementIdToClass.inverse().get(measurementType)).getKey(); }
@Test public void differentNameDoesntEqual() { NamedVehicleMessage anotherMessage = new NamedVehicleMessage("bar"); assertThat(message, not(equalTo(anotherMessage))); }
@Before public void setup() { message = new NamedVehicleMessage("foo"); }
@Test(expected=SerializationException.class) public void serializeNamedMessageWithExtras() throws SerializationException { HashMap<String, Object> extras = new HashMap<>(); extras.put("foo", "bar"); extras.put("baz", 42.0); VehicleMessage message = new NamedVehicleMessage("foo"); message.setExtras(extras); BinaryFormatter.serialize(message); }
@Test public void serializeNamedMessageWithExtras() { HashMap<String, Object> extras = new HashMap<>(); extras.put("foo", "bar"); extras.put("baz", 42.0); VehicleMessage message = new NamedVehicleMessage("foo"); message.setExtras(extras); serializeDeserializeAndCheckEqual(message); }
@Test public void serializeNamedMessage() { serializeDeserializeAndCheckEqual(new NamedVehicleMessage("foo")); }
@Test public void receiveNonMatchingNotPropagated() throws DataSinkException { NamedVehicleMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener); message = new NamedVehicleMessage("bar"); sink.receive(message); sink.clearQueue(); assertThat(listener.received, nullValue()); }
@Test public void getKeyForUnrecognizedMeasurementWithProperId() throws UnrecognizedMeasurementTypeException { assertThat(BaseMeasurement.getKeyForMeasurement(NewMeasurement.class), equalTo(new NamedVehicleMessage(NewMeasurement.ID).getKey())); }
@Test public void keyMatches() { NamedVehicleMessage anotherMessage = new NamedVehicleMessage("foo"); assertThat(message.getKey(), equalTo(anotherMessage.getKey())); }
@Test public void readingGenericThenSpecific() throws SerializationException { NamedVehicleMessage namedMessage = new NamedVehicleMessage("baz"); byte[] bytes = streamer.serializeForStream(namedMessage); streamer.receive(bytes, bytes.length); bytes = streamer.serializeForStream(message); streamer.receive(bytes, bytes.length); assertThat(streamer.parseNextMessage(), equalTo((VehicleMessage) namedMessage)); assertThat(streamer.parseNextMessage(), equalTo((VehicleMessage) message)); }
@Test public void leavePartial() throws SerializationException { byte[] bytes = streamer.serializeForStream(message); streamer.receive(bytes, bytes.length); NamedVehicleMessage namedMessage = new NamedVehicleMessage("baz"); bytes = streamer.serializeForStream(namedMessage); streamer.receive(bytes, bytes.length / 2); assertThat(streamer.parseNextMessage(), notNullValue()); assertThat(streamer.parseNextMessage(), nullValue()); }
@Test public void nonpersistentRemovedAfterOne() throws DataSinkException { NamedVehicleMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener, false); sink.receive(message); sink.clearQueue(); assertThat(listener.received, notNullValue()); assertEquals(listener.received, message); listener.received = null; sink.receive(message); assertThat(listener.received, nullValue()); }
@Test public void listenerRecievesMessageContinually() throws DataSinkException { NamedVehicleMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener); sink.receive(message); sink.clearQueue(); assertThat(listener.received, notNullValue()); assertEquals(listener.received, message); listener.received = null; sink.receive(message); assertThat(listener.received, nullValue()); }
@Test public void completePartial() throws SerializationException { byte[] bytes = streamer.serializeForStream(message); streamer.receive(bytes, bytes.length); NamedVehicleMessage namedMessage = new NamedVehicleMessage("baz"); bytes = streamer.serializeForStream(namedMessage); streamer.receive(bytes, bytes.length / 2); assertThat(streamer.parseNextMessage(), notNullValue()); int remainingBytes = bytes.length / 2; byte[] remainder = new byte[remainingBytes]; System.arraycopy(bytes, remainingBytes, remainder, 0, remainingBytes); streamer.receive(remainder, remainingBytes); assertThat(streamer.parseNextMessage(), notNullValue()); assertThat(streamer.parseNextMessage(), nullValue()); }
@Test public void listenerRecievesMessage() throws DataSinkException { NamedVehicleMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener); sink.receive(message); sink.clearQueue(); assertThat(listener.received, notNullValue()); assertEquals(listener.received, message); }
@Test public void removeMessageListener() throws UnrecognizedMeasurementTypeException, DataSinkException { NamedVehicleMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener); sink.unregister(ExactKeyMatcher.buildExactMatcher(message), listener); sink.receive(message); sink.clearQueue(); assertThat(listener.received, nullValue()); }
@Test public void nonKeyedIgnored() throws DataSinkException { KeyedMessage message = new NamedVehicleMessage("foo"); sink.register(ExactKeyMatcher.buildExactMatcher(message), listener); sink.receive(new VehicleMessage()); }
return new NamedVehicleMessage(name); } else { return new SimpleVehicleMessage(name, value);