/**
  * Test setting extensions.
  */
 public function testSetExtensions()
 {
     $trackPoint = new TrackPoint(null, null, new DateTime());
     $em1 = $this->getExtensionMock('e1');
     $em2 = $this->getExtensionMock('e2');
     $em3 = $this->getExtensionMock('e3');
     $extensions = array($em1, $em2, $em3);
     $trackPoint->setExtensions($extensions);
     $this->assertEquals($extensions, array_values($trackPoint->getExtensions()));
     $this->assertCount(3, $trackPoint->getExtensions());
     $this->assertSame($em1, $trackPoint->getExtension('e1'));
     $this->assertSame($em2, $trackPoint->getExtension('e2'));
     $this->assertSame($em3, $trackPoint->getExtension('e3'));
 }
 /**
  * Flatten a track point to be posted on endomondo.
  *
  * @param TrackPoint $trackPoint The track point to flatten.
  * @param float $distance The total distance the point in meters.
  * @param float $speed The speed the point in km/h from the previous point.
  * @return string
  */
 private function flattenTrackPoint(TrackPoint $trackPoint, $distance, $speed)
 {
     $dateTime = clone $trackPoint->getDateTime();
     $dateTime->setTimezone(new \DateTimeZone('UTC'));
     return $this->formatEndomondoTrackPoint($dateTime, self::INSTRUCTION_START, $trackPoint->getLatitude(), $trackPoint->getLongitude(), $distance, $speed, $trackPoint->getElevation(), $trackPoint->hasExtension(HR::ID) ? $trackPoint->getExtension(HR::ID)->getValue() : '');
 }