@Test
	public void testUpdateHeartbeat()
	{
		Heartbeat message = new Heartbeat(new String[] {
			"$F", "14", "00:12:45", "13:34:23", "00:09:47", "Green"
		});

		Race race = new Race();

		race.addPropertyChangeListener(new PropertyChangeListener() {

			@Override
			public void propertyChange(PropertyChangeEvent evt)
			{
				if ("elapsedTime".equals(evt.getPropertyName())) {
					elapsedTimeFired = true;
					assertEquals(new Duration("00:09:47"), evt.getNewValue());
				}

				if ("lapsToGo".equals(evt.getPropertyName())) {
					lapsToGoFired = true;
					assertEquals(14, evt.getNewValue());
				}

				if ("timeToGo".equals(evt.getPropertyName())) {
					timeToGoFired = true;
					assertEquals(new Duration("00:12:45"), evt.getNewValue());
				}

				if ("scheduledTime".equals(evt.getPropertyName())) {
					scheduledTimeFired = true;
					assertEquals(new Duration("00:22:32"), evt.getNewValue());
				}

				if ("timeOfDay".equals(evt.getPropertyName())) {
					timeOfDayFired = true;
					assertEquals(new Duration("13:34:23"), evt.getNewValue());
				}

				if ("flagStatus".equals(evt.getPropertyName())) {
					flagStatusFired = true;
					assertEquals("Green", evt.getNewValue());
				}
			}
		});

		race.update(message);

		assertTrue(elapsedTimeFired);
		assertTrue(lapsToGoFired);
		assertTrue(timeToGoFired);
		assertTrue(scheduledTimeFired);
		assertTrue(timeOfDayFired);
		assertTrue(flagStatusFired);
	}