@Override public boolean shouldRefreshView(KeyedMessage message, KeyedMessage existingMessage) { // We don't display timestamps in the Enabler for simple messages, don't // bother updating unless the value changed. return (((SimpleVehicleMessage)message).getValue()).equals( ((SimpleVehicleMessage)existingMessage).getValue()); } }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("timestamp", getTimestamp()) .add("name", getName()) .add("value", getValue()) .add("extras", getExtras()) .toString(); }
@Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeValue(getValue()); }
@Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView = LayoutInflater.from(mContext) .inflate(R.layout.dashboard_list_item, parent, false); } SimpleVehicleMessage message = getItem(position); TextView nameView = (TextView) convertView.findViewById(R.id.name); TextView valueView = (TextView) convertView.findViewById(R.id.value); try { Measurement measurement = BaseMeasurement.getMeasurementFromMessage(message); nameView.setText("" + measurement.getName(mContext)); valueView.setText("" + measurement.toString()); } catch(UnrecognizedMeasurementTypeException e) { nameView.setText("" + message.getName()); valueView.setText("" + message.getValue()); } catch(NoValueException e) { } return convertView; }
private static void serializeSimpleVehicleMessage(BinaryMessages.VehicleMessage.Builder builder, SimpleVehicleMessage message) { BinaryMessages.SimpleMessage.Builder messageBuilder = startBuildingSimple(builder, message); messageBuilder.setValue(buildDynamicField(message.getValue())); builder.setSimpleMessage(messageBuilder); }
@Test public void getNamed() { String name = "foo"; String value = "value"; KeyedMessage message = new SimpleVehicleMessage(name, value); pipeline.receive(message); SimpleVehicleMessage retreived = (SimpleVehicleMessage) pipeline.get( message.getKey()); assertThat(retreived, notNullValue()); assertThat((String)retreived.getValue(), equalTo(value)); }
@Test public void testDeserialize() throws UnrecognizedMessageTypeException { VehicleMessage message = JsonFormatter.deserialize( "{\"name\": \"" + messageName + "\", \"value\": " + value.toString() + "}"); assertThat(message, instanceOf(SimpleVehicleMessage.class)); SimpleVehicleMessage simpleMessage = (SimpleVehicleMessage) message; assertEquals(simpleMessage.getName(), messageName); assertEquals(simpleMessage.getValue(), value); }
@Test public void toVehicleMessage() { measurement = new TestMeasurement(10.1); VehicleMessage message = measurement.toVehicleMessage(); assertTrue(message instanceof SimpleVehicleMessage); SimpleVehicleMessage simpleMessage = message.asSimpleMessage(); assertEquals(simpleMessage.getName(), TestMeasurement.ID); assertEquals(simpleMessage.getValue(), measurement.getValue().doubleValue()); }
@Test public void deserializeNoErrors() throws IOException, UnrecognizedMessageTypeException { BinaryMessages.VehicleMessage.Builder builder = BinaryMessages.VehicleMessage.newBuilder(); builder.setType(BinaryMessages.VehicleMessage.Type.SIMPLE); BinaryMessages.SimpleMessage.Builder messageBuilder = BinaryMessages.SimpleMessage.newBuilder(); messageBuilder.setName(messageName); BinaryMessages.DynamicField.Builder fieldBuilder = BinaryMessages.DynamicField.newBuilder(); fieldBuilder.setType(BinaryMessages.DynamicField.Type.NUM); fieldBuilder.setNumericValue(42); messageBuilder.setValue(fieldBuilder); builder.setSimpleMessage(messageBuilder); BinaryMessages.VehicleMessage serialized = builder.build(); ByteArrayOutputStream output = new ByteArrayOutputStream(); serialized.writeTo(output); InputStream input = new ByteArrayInputStream(output.toByteArray()); try { message = (SimpleVehicleMessage) BinaryFormatter.deserialize(input); } catch(UnrecognizedMessageTypeException e) {} assertEquals(message.getName(), messageName); assertEquals(message.getValue(), value); }