@Test
 public void gattBeaconExtraDataIsNotReturned() {
   Beacon extraDataBeacon = getGattBeaconExtraData();
   GattBeaconTracker tracker = new GattBeaconTracker();
   Beacon trackedBeacon = tracker.track(extraDataBeacon);
   assertNull("trackedBeacon should be null", trackedBeacon);
 }
 @Test
 public void trackingManufacturerBeaconReturnsSelf() {
   Beacon beacon = getManufacturerBeacon();
   GattBeaconTracker tracker = new GattBeaconTracker();
   Beacon trackedBeacon = tracker.track(beacon);
   assertEquals("Returns itself", trackedBeacon, beacon);
 }
 @Test
 public void gattBeaconExtraDataAreNotOverwritten() {
   Beacon beacon = getGattBeacon();
   Beacon extraDataBeacon = getGattBeaconExtraData();
   GattBeaconTracker tracker = new GattBeaconTracker();
   tracker.track(beacon);
   tracker.track(extraDataBeacon);
   Beacon trackedBeacon = tracker.track(beacon);
   assertEquals(
       "extra data should not be overwritten",
       extraDataBeacon.getDataFields(),
       trackedBeacon.getExtraDataFields());
 }
 @Test
 public void gattBeaconFieldsGetUpdated() {
   Beacon beacon = getGattBeacon();
   Beacon beaconUpdate = getGattBeaconUpdate();
   Beacon extraDataBeacon = getGattBeaconExtraData();
   GattBeaconTracker tracker = new GattBeaconTracker();
   tracker.track(beacon);
   Beacon trackedBeacon = tracker.track(beaconUpdate);
   assertEquals("rssi should be updated", beaconUpdate.getRssi(), trackedBeacon.getRssi());
   assertEquals(
       "data fields should be updated",
       beaconUpdate.getDataFields(),
       trackedBeacon.getDataFields());
 }
 @Test
 public void gattBeaconExtraDataGetUpdated() {
   Beacon beacon = getGattBeacon();
   Beacon extraDataBeacon = getGattBeaconExtraData();
   Beacon extraDataBeacon2 = getGattBeaconExtraData2();
   GattBeaconTracker tracker = new GattBeaconTracker();
   tracker.track(beacon);
   tracker.track(extraDataBeacon);
   tracker.track(extraDataBeacon2);
   Beacon trackedBeacon = tracker.track(beacon);
   assertEquals(
       "extra data is updated",
       extraDataBeacon2.getDataFields(),
       trackedBeacon.getExtraDataFields());
 }