@Test
	public void testUpdateRaceInfo()
	{
		final Competitor competitor = getCompetitor();

		String[] tokens = {
			"$G", "3", "1234BE", "14", "01:12:47.872"
		};

		RaceInfo message = new RaceInfo(tokens);

		competitor.addPropertyChangeListener(new PropertyChangeListener() {

			@Override
			public void propertyChange(PropertyChangeEvent evt)
			{
				if ("position".equals(evt.getPropertyName())) {
					positionFired = true;
					assertEquals(3, evt.getNewValue());
					assertEquals(3, competitor.getPosition());
				}

				if ("lapsComplete".equals(evt.getPropertyName())) {
					lapsCompleteFired = true;
					assertEquals(14, evt.getNewValue());
					assertEquals(14, competitor.getLapsComplete());
				}

				if ("totalTime".equals(evt.getPropertyName())) {
					totalTimeFired = true;
					assertEquals(new Duration("01:12:47.872"), evt.getNewValue());
					assertEquals(new Duration("01:12:47.872"), competitor.getTotalTime());
				}
			}
		});

		Competitor.updateOrCreate(message);

		assertTrue(positionFired);
		assertTrue(lapsCompleteFired);
		assertTrue(totalTimeFired);
	}