<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.015'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_InRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_OutOfRange_Above' time='0.011'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Latitude_OutOfRange_Below' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_InRange' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_OutOfRange_Above' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONGeometryCLLocationTests' name='testGeoJsonGeometryFromLocation_Longitude_OutOfRange_Below' time='0.026'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONGeometryCodableTests' tests='11' failures='0'>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryCoding' time='0.005'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_EmptyArray' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_ToLittle' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidCoordinatesCount_TooMuch' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_InvalidLatitude_AboveRange' time='0.010'/>
    <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.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_ValidLatitude' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONGeometryCodableTests' name='testGeoJsonGeometryFromJson_ValidLongitude' time='0.002'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONMessageCodableTests' tests='5' failures='0'>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testEncodedJSON' time='0.004'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_InvalidJson' time='0.068'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_Type' time='0.005'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_ValidJson' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONMessageCodableTests' name='testGeoJsonMessageFromJson_ValidJson_CheckValues' time='0.005'/>
  </testsuite>
  <testsuite name='CoreTests.GeoJSONPropertiesCLLocationTests' tests='15' failures='0'>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidBearingAccuracy' time='0.006'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidBearing' time='0.005'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidHorizontalAccuracy_LessThanZero' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidSpeedAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidSpeed' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_InvalidVerticalAccuracy' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_Timestamp' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidBearingAccuracy' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidBearing' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy_CheckValue' time='0.006'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy_EqualZero' time='0.007'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidHorizontalAccuracy' time='0.006'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidSpeedAccuracy' time='0.004'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCLLocationTests' name='testGeoJsonPropertiesFromCLLocation_ValidSpeed' time='0.007'/>
    <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.086'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidBearingAccuracy_LessThanZero' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidHorizontalAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidSpeed_LessThanZero' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidSpeedAccuracy_LessThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_InvalidVerticalAccuracy_LessThanZero' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_Timestamp' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidBearingAccuracy' time='0.009'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidBearing' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidHorizontalAccuracy_EqualZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidHorizontalAccuracy_MoreThanZero' time='0.002'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidSpeedAccuracy' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidSpeed' time='0.001'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJson_ValidVerticalAccuracy' time='0.003'/>
    <testcase classname='CoreTests.GeoJSONPropertiesCodableTests' name='testGeoJsonPropertiesFromJsonCoding' time='0.006'/>
  </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.002'/>
    <testcase classname='CoreTests.GeoJsonMessageCLLocationTests' name='testGeoJsonMessageFromCLLocation_ValidLocation' time='0.023'/>
  </testsuite>
  <testsuite name='CoreTests.TrackableTests' tests='3' failures='0'>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackableComparision_ShouldBeEqual' time='0.002'/>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackablesContainsTrackable_ShouldContain' time='0.002'/>
    <testcase classname='CoreTests.TrackableTests' name='test_TrackablesContainsTrackable_ShouldNotContain' time='0.022'/>
  </testsuite>
  <testsuite name='CoreTests.VersionTest' tests='1' failures='0'>
    <testcase classname='CoreTests.VersionTest' name='testCurrentVersionIsSetAndSemantic' time='0.002'/>
  </testsuite>
  <testsuite name='InternalTests.ConnectionConfigurationTests' tests='6' failures='0'>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='test_getClientOptions_populatesClientId' time='0.011'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testBasicAuthenticationConstructor' time='0.005'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testRemainPresentForMillisecondsPassesToAblySDK' time='0.006'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationPassesTokenStringToAblySdk' time='0.008'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationReturningTokenDetailsPassesItToAblySDK' time='0.004'/>
    <testcase classname='InternalTests.ConnectionConfigurationTests' name='testTokenAuthenticationReturningTokenRequestPassedItToAblySDK' time='0.004'/>
  </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.003'/>
  </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.002'/>
    <testcase classname='InternalTests.PresenceDataTests' name='testDeserializationSubscriber' time='0.001'/>
    <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.003'/>
  </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.002'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_multipleRemoteResolutions' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_noRemoteRequests' time='0.002'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_oneRemoteResolution' time='0.001'/>
    <testcase classname='PublisherTests.DefaultResolutionPolicyTests' name='testResolutionPolicy_resolveRequest_withConstraints_noRemoteRequests' time='0.001'/>
    <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.001'/>
    <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.006'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_decodesTestResource_version1_validAndroid' time='0.012'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_decodesTestResource_version2_valid2_0_0' time='0.005'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testDecodable_withMajorVersionGreaterThan2_throwsUnsupportedVersionError' time='0.008'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testEncodable_encodesAgents' time='0.002'/>
    <testcase classname='PublisherTests.LocationHistoryDataTests' name='testEncodable_encodesVersionAsSemanticVersionString' time='0.001'/>
    <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.033'/>
  </testsuite>
  <testsuite name='SystemTests.PublisherAuthenticationSystemTests' tests='6' failures='0'>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisher_usingTokenAuth_addTrackable_whenEnterPresenceGivesCapabilityError_reauthorizesAblyAndEntersPresenceWithNewToken' time='1.373'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithApiKey' time='1.044'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithJWT' time='1.546'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenDetails' time='1.274'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenRequest' time='1.085'/>
    <testcase classname='SystemTests.PublisherAuthenticationSystemTests' name='testPublisherConnectsWithTokenString' time='0.999'/>
  </testsuite>
  <testsuite name='SystemTests.PublisherSystemTests' tests='1' failures='0'>
    <testcase classname='SystemTests.PublisherSystemTests' name='test_addTrackable_thenRemoveIt_thenAddAnotherTrackableWithSameId' time='0.939'/>
  </testsuite>
  <testsuite name='SystemTests.SubscriberAuthenticationSystemTests' tests='6' failures='0'>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriber_usingTokenAuth_start_whenEnterPresenceGivesCapabilityError_reauthorizesAblyAndEntersPresenceWithNewToken' time='1.874'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithApiKey' time='0.895'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithJWT' time='1.289'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenDetails' time='0.992'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenRequest' time='0.817'/>
    <testcase classname='SystemTests.SubscriberAuthenticationSystemTests' name='testSubscriberConnectsWithTokenString' time='0.958'/>
  </testsuite>
  <testsuite name='SystemTests.SubscriberSystemTests' tests='1' failures='0'>
    <testcase classname='SystemTests.SubscriberSystemTests' name='test_whenSubscriberReceivesMalformedMessageDataFromAbly_itEmitsAFailedConnectionStatus' time='1.188'/>
  </testsuite>
  <testsuite name='UITests.DefaultLocationAnimatorCalculatorTests' tests='12' failures='0'>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenDisplayLinkHasFiredBefore_andThereAreLocationsAwaitingAnimation_andSomeOfTheDistanceBetweenTheFirstTwoLocationsHasAlreadyBeenAnimated_andTheNextLocationToEmitLiesBetweenTheFirstTwoLocations_itInterpolatesTheRemainderOfTheDistanceBetweenTheFirstTwoLocations_andDoesNotPopAnyLocations' time='0.010'/>
    <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.001'/>
    <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.002'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenNumberOfLocationsPoppedSinceLastCameraUpdateIsOneLessThanAnimationStepsBetweenCameraUpdates_andThereIsALocationToPop_itEmitsACameraPositionUpdate' time='0.001'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenTheCurrentTimeExceedsTheExpectedNextLocationUpdateByMoreThanIntentionalAnimationDelay_itEmitsTheLastLocationAwaitingAnimation' time='0.003'/>
    <testcase classname='UITests.DefaultLocationAnimatorCalculatorTests' name='test_calculate_whenThePredictedTimeToNextLocationUpdateHasPassed_itJustUsesTheIntentionalAnimationDelay' time='0.002'/>
  </testsuite>
</testsuites>