<testsuites name='UITests.xctest' tests='123' failures='0'>
  <testsuite name='CoreTests.GeoJSONGeometryCLLocationTests' tests='7' failures='0'>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_CheckValues' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_InRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_OutOfRange_Above' time='0.004'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_OutOfRange_Below' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_InRange' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_OutOfRange_Above' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_OutOfRange_Below' time='0.001'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONGeometryCodableTests' tests='11' failures='0'>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryCoding' time='0.004'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_EmptyArray' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_ToLittle' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_TooMuch' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidLatitude_AboveRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidLatitude_BelowRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidLongitude_AboveRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidLongitude_BelowRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_ValidCoordinatesCount' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_ValidLatitude' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_ValidLongitude' time='0.001'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONMessageCodableTests' tests='5' failures='0'>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testEncodedJSON' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_InvalidJson' time='0.015'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_Type' time='0.034'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_ValidJson' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_ValidJson_CheckValues' time='0.003'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONPropertiesCLLocationTests' tests='15' failures='0'>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidBearingAccuracy' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidBearing' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidHorizontalAccuracy_LessThanZero' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidSpeedAccuracy' time='0.006'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidSpeed' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidVerticalAccuracy' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_Timestamp' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidBearingAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidBearing' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy_CheckValue' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy_EqualZero' time='0.006'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidSpeedAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidSpeed' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidVerticalAccuracy' time='0.002'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONPropertiesCodableTests' tests='15' failures='0'>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidBearing_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidBearingAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidHorizontalAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidSpeed_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidSpeedAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidVerticalAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_Timestamp' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidBearingAccuracy' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidBearing' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidHorizontalAccuracy_EqualZero' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidHorizontalAccuracy_MoreThanZero' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidSpeedAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidSpeed' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidVerticalAccuracy' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJsonCoding' time='0.001'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJsonMessageCLLocationTests' tests='3' failures='0'>
    <testcase classname='CoreTests.GeoJsonMessageCLLocationTests' name='testGeoJsonMessageFromCLLocation_CheckValues' time='0.002'/>
    <testcase classname='CoreTests.GeoJsonMessageCLLocationTests' name='testGeoJsonMessageFromCLLocation_InvalidLocation' time='0.001'/>
    <testcase classname='CoreTests.GeoJsonMessageCLLocationTests' name='testGeoJsonMessageFromCLLocation_ValidLocation' time='0.002'/>
  </testsuite>
  <testsuite name='CoreTests.TrackableTests' tests='3' failures='0'>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackableComparision_ShouldBeEqual' time='0.003'/>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackablesContainsTrackable_ShouldContain' time='0.001'/>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackablesContainsTrackable_ShouldNotContain' time='0.001'/>
  </testsuite>
  <testsuite name='CoreTests.VersionTest' tests='1' failures='0'>
    <testcase classname='CoreTests.VersionTest' name='testCurrentVersionIsSetAndSemantic' time='0.001'/>
  </testsuite>
  <testsuite name='InternalTests.ConnectionConfigurationTests' tests='6' failures='0'>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='test_getClientOptions_populatesClientId' time='0.012'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testBasicAuthenticationConstructor' time='0.006'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testRemainPresentForMillisecondsPassesToAblySDK' time='0.005'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationPassesTokenStringToAblySdk' time='0.006'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationReturningTokenDetailsPassesItToAblySDK' time='0.008'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationReturningTokenRequestPassedItToAblySDK' time='0.005'/>
  </testsuite>
  <testsuite name='InternalTests.DefaultInternalLogHandlerTests' tests='3' failures='0'>
    <testcase classname='InternalTests.DefaultInternalLogHandlerTests' name='test_addSubsystem_causesLoggedMessagesToIncludeSubsystemName' time='0.008'/>
    <testcase classname='InternalTests.DefaultInternalLogHandlerTests' name='test_init_withNilLogHandler_returnsNil' time='0.002'/>
    <testcase classname='InternalTests.DefaultInternalLogHandlerTests' name='test_logMessage_withNonNilCodeLocation_includesLastPathComponentOfFileAndIncludesLineNumber' time='0.002'/>
  </testsuite>
  <testsuite name='InternalTests.InternalLogHandlerTests' tests='1' failures='0'>
    <testcase classname='InternalTests.InternalLogHandlerTests' name='test_protocolExtension_logMessage_defaultArguments_populatesFileAndLine' time='0.002'/>
  </testsuite>
  <testsuite name='InternalTests.PresenceDataTests' tests='5' failures='0'>
    <testcase classname='InternalTests.PresenceDataTests' name='testDeserializationFailure' time='0.006'/>
    <testcase classname='InternalTests.PresenceDataTests' name='testDeserializationPublisher' time='0.003'/>
    <testcase classname='InternalTests.PresenceDataTests' name='testDeserializationSubscriber' time='0.002'/>
    <testcase classname='InternalTests.PresenceDataTests' name='testSerializationPublisher' time='0.002'/>
    <testcase classname='InternalTests.PresenceDataTests' name='testSerializationSubscriber' time='0.001'/>
  </testsuite>
  <testsuite name='InternalTests.UtilsTests' tests='1' failures='0'>
    <testcase classname='InternalTests.UtilsTests' name='testARTErrorInfoHrefIsMappedProperlyToErrorInformationHref' time='0.009'/>
  </testsuite>
  <testsuite name='PublisherTests.DefaultResolutionPolicyTests' tests='11' failures='0'>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_batteryMultiplier' time='0.011'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_constrained_multipleRemoteResolutions' time='0.002'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_constrained_multipleRemoteResolutions_battery' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_multipleRemoteResolutions' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_noRemoteRequests' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_oneRemoteResolution' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_withConstraints_noRemoteRequests' time='0.002'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveResolutions_farWithoutSubscriber' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveResolutions_farWithSubscriber' time='0.002'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveResolutions_nearWithoutSubscriber' time='0.003'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveResolutions_nearWithSubscriber' time='0.001'/>
  </testsuite>
  <testsuite name='PublisherTests.LocationHistoryDataTests' tests='7' failures='0'>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testAgents' time='0.008'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_decodesTestResource_version1_validAndroid' time='0.011'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_decodesTestResource_version2_valid2_0_0' time='0.004'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_withMajorVersionGreaterThan2_throwsUnsupportedVersionError' time='0.006'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testEncodable_encodesAgents' time='0.002'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testEncodable_encodesVersionAsSemanticVersionString' time='0.002'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testVersionAlwaysReturns1' time='0.001'/>
  </testsuite>
  <testsuite name='PublisherTests.TemporaryFileTests' tests='2' failures='0'>
    <testcase classname='PublisherTests.TemporaryFileTests' name='testDeinit_removesFile' time='0.009'/>
    <testcase classname='PublisherTests.TemporaryFileTests' name='testStayAlive_doesntRemoveFileWhilstExecutingAction' time='0.002'/>
  </testsuite>
  <testsuite name='SystemTests.PublisherAndSubscriberSystemTests' tests='1' failures='0'>
    <testcase classname='SystemTests.PublisherAndSubscriberSystemTests' name='testSubscriberNotReceivesAssetConnectionStatus' time='5.025'/>
  </testsuite>
  <testsuite name='SystemTests.PublisherAuthenticationSystemTests' tests='6' failures='0'>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisher_usingTokenAuth_addTrackable_whenEnterPresenceGivesCapabilityError_reauthorizesAblyAndEntersPresenceWithNewToken' time='1.549'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithApiKey' time='1.048'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithJWT' time='1.457'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenDetails' time='1.177'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenRequest' time='1.195'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenString' time='1.138'/>
  </testsuite>
  <testsuite name='SystemTests.PublisherSystemTests' tests='1' failures='0'>
    <testcase classname='SystemTests.PublisherSystemTests' name='test_addTrackable_thenRemoveIt_thenAddAnotherTrackableWithSameId' time='1.117'/>
  </testsuite>
  <testsuite name='SystemTests.SubscriberAuthenticationSystemTests' tests='6' failures='0'>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriber_usingTokenAuth_start_whenEnterPresenceGivesCapabilityError_reauthorizesAblyAndEntersPresenceWithNewToken' time='2.195'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithApiKey' time='0.896'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithJWT' time='1.333'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenDetails' time='1.221'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenRequest' time='1.081'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenString' time='1.161'/>
  </testsuite>
  <testsuite name='SystemTests.SubscriberSystemTests' tests='1' failures='0'>
    <testcase classname='SystemTests.SubscriberSystemTests' name='test_whenSubscriberReceivesMalformedMessageDataFromAbly_itEmitsAFailedConnectionStatus' time='1.182'/>
  </testsuite>
  <testsuite name='UITests.DefaultLocationAnimatorCalculatorTests' tests='12' failures='0'>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereAreLocationsAwaitingAnimation_andSomeOfTheDistanceBetweenTheFirstTwoLocationsHasAlreadyBeenAnimated_andTheNextLocationToEmitLiesBetweenTheFirstTwoLocations_itInterpolatesTheRemainderOfTheDistanceBetweenTheFirstTwoLocations_andDoesNotPopAnyLocations' time='0.009'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereAreLocationsAwaitingAnimation_andSomeOfTheDistanceBetweenTheFirstTwoLocationsHasAlreadyBeenAnimated_andTheNextLocationToEmitLiesBetweenTheSecondAndThirdLocations_itInterpolatesBetweenTheSecondAndThirdLocations_andPopsTheFirstLocation' time='0.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereAreLocationsAwaitingAnimation_andTheNextLocationToEmitLiesBetweenTheFirstTwoLocations_itInterpolatesBetweenTheFirstTwoLocations_andDoesNotPopAnyLocations' time='0.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereAreLocationsAwaitingAnimation_andTheNextLocationToEmitLiesBetweenTheSecondAndThirdLocations_itInterpolatesBetweenTheSecondAndThirdLocations_andPopsTheFirstLocation' time='0.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereIsOneLocationAwaitingAnimation_itEmitsThatLocation' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasNotFiredBefore_andThereAreLocationsAwaitingAnimation_itEmitsTheFirstLocationAwaitingAnimation' time='0.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasNotFiredBefore_andThereAreNoLocationsAwaitingAnimation_itReturnsANoOp' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenNextLocationUpdatePredictionIsNil_itReturnsANoOp' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenNumberOfLocationsPoppedSinceLastCameraUpdateIsNil_andThereIsAPositionToEmit_itEmitsACameraPositionUpdate' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenNumberOfLocationsPoppedSinceLastCameraUpdateIsOneLessThanAnimationStepsBetweenCameraUpdates_andThereIsALocationToPop_itEmitsACameraPositionUpdate' time='0.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenTheCurrentTimeExceedsTheExpectedNextLocationUpdateByMoreThanIntentionalAnimationDelay_itEmitsTheLastLocationAwaitingAnimation' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenThePredictedTimeToNextLocationUpdateHasPassed_itJustUsesTheIntentionalAnimationDelay' time='0.002'/>
  </testsuite>
</testsuites>