<testsuites name='Ably-tvOS-Tests.xctest' tests='800' failures='0'>
  <testsuite name='Ably_tvOS_Tests.ARTDefaultTests' tests='1' failures='0'>
    <testcase classname='Ably_tvOS_Tests.ARTDefaultTests' name='testVersions' time='0.007'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.AuthTests' tests='154' failures='0'>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__001__should_not_force_token_auth_when_clientId_is_set' time='1.839'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__002__should_accept_authURL_response_with_timestamp_argument_as_string' time='0.490'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__003__Basic__should_work_over_HTTPS_only' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__004__Basic__should_send_the_API_key_in_the_Authorization_header' time='0.349'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__005__Basic__should_be_default_when_an_API_key_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__006__Token__TTL_should_default_to_be_omitted' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__007__Token__should_URL_query_be_correctly_encoded' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__008__Token__should_omit_capability_field_if_it_is_not_specified' time='0.103'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__009__Token__should_add_capability_field_if_the_user_specifies_it' time='0.101'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__010__Token__token_auth__should_work_over_HTTP' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__011__Token__token_auth__should_work_over_HTTPS' time='0.263'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__012__Token__token_auth__for_REST_requests__should_send_the_token_in_the_Authorization_header' time='0.263'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__013__Token__token_auth__for_Realtime_connections__should_send_the_token_in_the_querystring_as_a_param_named_accessToken' time='0.170'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__014__Token__authentication_method__should_be_default_auth_method_when_options__useTokenAuth_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__015__Token__authentication_method__should_be_default_auth_method_when_options__authUrl_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__016__Token__authentication_method__should_be_default_auth_method_when_options__authCallback_is_set' time='0.009'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__017__Token__authentication_method__should_be_default_auth_method_when_options__tokenDetails_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__018__Token__authentication_method__should_be_default_auth_method_when_options__token_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__019__Token__authentication_method__should_be_default_auth_method_when_options__key_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__020__Token__authentication_method__should_indicate_an_error_and_not_retry_the_request_when_the_server_responds_with_a_token_error_and_there_is_no_way_to_renew_the_token' time='0.102'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__021__Token__authentication_method__should_transition_the_connection_to_the_FAILED_state_when_the_server_responds_with_a_token_error_and_there_is_no_way_to_renew_the_token' time='0.621'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__022__Token__authentication_method__on_token_error__reissues_token_and_retries_REST_requests' time='0.336'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__023__Token__authentication_method__in_REST__if_the_token_creation_failed_or_the_subsequent_request_with_the_new_token_failed_due_to_a_token_error__then_the_request_should_result_in_an_error' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__024__Token__authentication_method__in_Realtime__if_the_token_creation_failed_then_the_connection_should_move_to_the_DISCONNECTED_state_and_reports_the_error' time='0.007'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__025__Token__authentication_method__in_Realtime__if_the_connection_fails_due_to_a_terminal_token_error__then_the_connection_should_move_to_the_FAILED_state_and_reports_the_error' time='0.517'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__026__Token__authentication_method__if_a_request_by_a_realtime_client_to_an_authUrl_results_in_an_HTTP_403_the_client_library_should_transition_to_the_FAILED_state' time='0.562'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__027__Token__authentication_method__if_an_authCallback_results_in_an_HTTP_403_the_client_library_should_transition_to_the_FAILED_state' time='0.009'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__028__Token__authentication_method__local_token_validity_check__should_be_done_if_queryTime_is_true_and_local_time_is_in_sync_with_server' time='6.488'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__029__Token__authentication_method__local_token_validity_check__should_NOT_be_done_if_queryTime_is_false_and_local_time_is_NOT_in_sync_with_server' time='6.056'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__030__Token__options__should_stop_client_when_useTokenAuth_and_no_key_occurs' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__031__Token__options__should_stop_client_when_authCallback_and_authUrl_occurs' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__032__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authUrl_fails__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful' time='0.320'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__033__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authUrl_fails__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED' time='0.865'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__034__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authCallback_fails__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__035__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authCallback_fails__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED' time='0.396'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__036__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_provided_token_is_in_an_invalid_format__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful' time='0.314'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__037__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_provided_token_is_in_an_invalid_format__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED' time='0.874'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__038__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_attempt_times_out_after_realtimeRequestTimeout__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful' time='0.502'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__039__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_attempt_times_out_after_realtimeRequestTimeout__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED' time='0.899'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__040__Token__token_auth_and_clientId__should_permit_to_be_unauthenticated' time='0.197'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__041__Token__token_auth_and_clientId__should_check_clientId_consistency__on_rest' time='0.095'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__042__Token__token_auth_and_clientId__should_check_clientId_consistency__on_realtime' time='0.404'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__043__Token__token_auth_and_clientId__should_check_clientId_consistency__with_wildcard' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__044__Token__token_auth_and_clientId__Incompatible_client__with_Realtime__it_should_change_the_connection_state_to_FAILED_and_emit_an_error' time='0.389'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__045__Token__token_auth_and_clientId__Incompatible_client__with_Rest__it_should_result_in_an_appropriate_error_response' time='0.114'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__046__Token__clientId_and_authenticated_clients__should_not_pass_clientId_with_published_message' time='0.128'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__047__Token__clientId_and_authenticated_clients__should_obtain_a_token_if_clientId_is_assigned' time='0.107'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__048__Token__clientId_and_authenticated_clients__should_convenience_clientId_return_a_string' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__049__Token__clientId_and_authenticated_clients__ClientOptions_clientId_takes_precendence_when_a_clientId_value_is_provided_in_both_ClientOptions_clientId_and_ClientOptions_defaultTokenParams' time='0.268'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__050__Token__clientId_and_authenticated_clients__should_clientId_be_null_or_string' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__051__Token__clientId_and_authenticated_clients__Auth_clientId_attribute_is_null__identity_should_be_anonymous_for_all_operations' time='0.297'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__052__Token__clientId_and_authenticated_clients__Auth_clientId_attribute_is_null__identity_may_change_and_become_identified' time='0.397'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__053__Token__clientId_and_authenticated_clients__auth_clientId_not_null__when_clientId_attribute_is_assigned_on_client_options' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__054__Token__clientId_and_authenticated_clients__auth_clientId_not_null__when_tokenRequest_or_tokenDetails_has_clientId_not_null_or_wildcard_string' time='0.098'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__055__Token__clientId_and_authenticated_clients__auth_clientId_not_null__should_CONNECTED_ProtocolMessages_contain_a_clientId' time='0.386'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__056__Token__clientId_and_authenticated_clients__auth_clientId_not_null__client_does_not_have_an_identity_when_a_wildcard_string_____is_present' time='0.387'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__057__requestToken__implicitly_creates_a_TokenRequest_and_requests_a_token' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__058__requestToken__ensure_the_message_published_does_not_have_a_clientId' time='0.341'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__059__requestToken__ensure_that_the_message_is_rejected' time='0.191'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__060__requestToken__ensure_the_message_published_with_a_wildcard_____does_not_have_a_clientId' time='0.539'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__061__requestToken__ensure_the_message_published_with_a_wildcard_____has_the_provided_clientId' time='0.294'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__062__requestToken__arguments__should_not_merge_with_the_configured_params_and_options_but_instead_replace_all_corresponding_values__even_when__null_' time='0.204'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__063__requestToken__arguments__should_use_configured_defaults_if_the_object_arguments_are_omitted' time='0.505'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__064__requestToken__authUrl__query_will_provide_a_token_string' time='0.587'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__065__requestToken__authUrl__query_will_provide_a_TokenDetails' time='0.402'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__066__requestToken__authUrl__query_will_provide_a_TokenRequest' time='0.408'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__067__requestToken__authUrl__TokenParams_should_take_precedence_over_any_configured_authParams_when_a_name_conflict_occurs' time='0.042'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__068__requestToken__authUrl__should_override_previously_configured_parameters' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__069__requestToken__authUrl__parameters__should_be_added_to_the_URL_when_auth_method_is_GET' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__070__requestToken__authUrl__parameters__should_added_on_the_body_request_when_auth_method_is_POST' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__071__requestToken__should_support_all_TokenParams__using_defaults' time='0.089'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__072__requestToken__should_support_all_TokenParams__overriding_defaults' time='0.073'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__073__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_token_string' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__074__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_TokenDetails' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__075__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_TokenRequest' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__076__createTokenRequest__should_not_merge_with_the_configured_params_and_options_but_instead_replace_all_corresponding_values__even_when__null_' time='0.421'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__077__createTokenRequest__should_override_defaults_if_AuthOptions_provided' time='0.093'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__078__createTokenRequest__should_use_defaults_if_no_AuthOptions_is_provided' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__079__createTokenRequest__should_replace_defaults_if__nil__option_s_field_passed' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__080__createTokenRequest__should_use_configured_defaults_if_the_object_arguments_are_omitted' time='0.099'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__081__createTokenRequest__should_create_and_sign_a_TokenRequest' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__082__createTokenRequest__should_support_AuthOptions' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__083__createTokenRequest__should_generate_a_unique_16_plus_character_nonce_if_none_is_provided' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__084__createTokenRequest__should_provide_capability_has_json_text' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__085__createTokenRequest__should_generate_a_valid_HMAC' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__086__createTokenRequest__should_respect_all_requirements' time='0.161'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__087__createTokenRequest__should_generate_a_timestamp__from_current_time_if_not_provided' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__088__createTokenRequest__should_generate_a_timestamp__will_retrieve_the_server_time_if_queryTime_is_true' time='0.088'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__089__createTokenRequest__TTL__should_be_optional' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__090__createTokenRequest__TTL__should_be_specified_in_milliseconds' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__091__createTokenRequest__TTL__should_be_valid_to_request_a_token_for_24_hours' time='0.089'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__092__authorize__should_always_create_a_token' time='0.651'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__093__authorize__should_create_a_new_token_if_one_already_exist_and_ensure_Token_Auth_is_used_for_all_future_requests' time='0.306'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__094__authorize__should_create_a_token_immediately_and_ensures_Token_Auth_is_used_for_all_future_requests' time='0.166'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__095__authorize__should_supports_all_TokenParams_and_AuthOptions' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__096__authorize__should_use_the_requestToken_implementation' time='0.113'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__097__authorize__should_return_TokenDetails_with_valid_token_metadata' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__098__authorize__should_use_the_configured_Auth_clientId__if_not_null__by_default' time='0.206'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__099__authorize__on_subsequent_authorisations__should_store_the_AuthOptions_with_authUrl' time='0.594'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__100__authorize__on_subsequent_authorisations__should_store_the_AuthOptions_with_authCallback' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__101__authorize__on_subsequent_authorisations__should_not_store_queryTime' time='0.235'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__102__authorize__on_subsequent_authorisations__should_store_the_TokenParams' time='2.295'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__103__authorize__on_subsequent_authorisations__should_use_configured_defaults_if_the_object_arguments_are_omitted' time='0.191'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__104__authorize__should_adhere_to_all_requirements_relating_to__TokenParams' time='0.097'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__105__authorize__should_adhere_to_all_requirements_relating_to__authCallback' time='0.093'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__106__authorize__should_adhere_to_all_requirements_relating_to__authUrl' time='0.309'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__107__authorize__should_adhere_to_all_requirements_relating_to__authUrl_with_json' time='0.736'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__108__authorize__should_adhere_to_all_requirements_relating_to__authUrl_returning_TokenRequest_decodes_TTL_as_expected' time='0.391'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__109__authorize__should_adhere_to_all_requirements_relating_to__authUrl_with_plain_text' time='0.702'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__110__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_key__even_if_arguments_objects_are_empty' time='1.263'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__111__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_authUrl__even_if_arguments_objects_are_empty' time='0.798'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__112__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_authCallback__even_if_arguments_objects_are_empty' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__113__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_params_and_options_even_if_arguments_objects_are_empty' time='0.417'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__114__authorize__when_TokenParams_and_AuthOptions_are_provided__example__if_a_client_is_initialised_with_TokenParams_ttl_configured_with_a_custom_value__and_a_TokenParams_object_is_passed_in_as_an_argument_to__authorize_with_a_null_value_for_ttl__then_the_ttl_used_for_every_subsequent_authorization_will_be_null' time='0.167'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__116__authorize__server_time_offset__should_be_consistent_the_timestamp_request_with_the_server_time' time='0.097'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__117__authorize__server_time_offset__should_be_possible_by_lib_Client_to_discard_the_cached_local_clock_offset' time='0.235'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__118__authorize__server_time_offset__should_use_the_local_clock_offset_to_calculate_the_server_time' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__119__authorize__server_time_offset__should_request_server_time_when_queryTime_is_true_even_if_the_time_offset_is_assigned' time='0.169'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__120__authorize__server_time_offset__should_discard_the_time_offset_in_situations_in_which_it_may_have_been_invalidated' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__121__authorize__two_consecutive_authorizations__using_REST__should_call_each_authorize_callback' time='0.102'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__122__authorize__two_consecutive_authorizations__using_Realtime_and_connection_is_CONNECTING__should_call_each_Realtime_authorize_callback' time='0.678'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__123__authorize__two_consecutive_authorizations__using_Realtime_and_connection_is_CONNECTED__should_call_each_Realtime_authorize_callback' time='0.516'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__124__TokenParams__timestamp__if_explicitly_set__should_be_returned_by_the_getter' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__125__TokenParams__timestamp__if_explicitly_set__the_value_should_stick' time='0.252'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__126__TokenParams__timestamp__object_has_no_timestamp_value_unless_explicitly_set' time='0.000'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__127__Reauth__should_use_authorize__force__true___to_reauth_with_a_token_with_a_different_set_of_capabilities' time='0.680'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__128__Reauth__for_a_token_change_that_fails_due_to_an_incompatible_token__which_should_result_in_the_connection_entering_the_FAILED_state' time='0.446'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__129__TokenParams__timestamp_should_not_be_a_member_of_any_default_token_params' time='0.089'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__130__TokenRequest__fromJson__rejects_invalid_JSON' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__131__TokenRequest__fromJson__rejects_non_object_JSON' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__132__TokenRequest__fromJson__with_TTL__accepts_a_string__which_should_be_interpreted_as_JSON' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__133__TokenRequest__fromJson__with_TTL__accepts_a_NSDictionary' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__134__TokenRequest__fromJson__without_TTL__accepts_a_string__which_should_be_interpreted_as_JSON' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__135__TokenRequest__fromJson__without_TTL__accepts_a_NSDictionary' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__136__TokenDetails__fromJson__accepts_a_string__which_should_be_interpreted_as_JSON' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__137__TokenDetails__fromJson__accepts_a_NSDictionary' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__138__TokenDetails__fromJson__rejects_invalid_JSON' time='0.000'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__139__TokenDetails__fromJson__rejects_non_object_JSON' time='0.000'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__141__JWT_and_realtime__client_initialized_with_a_JWT_token_in_ClientOptions__with_invalid_credentials__fails_to_connect_with_reason__invalid_signature_' time='0.824'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__142__JWT_and_realtime__when_using_authUrl__with_valid_credentials__fetches_a_channels_and_posts_a_message' time='0.936'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__143__JWT_and_realtime__when_using_authUrl__with_wrong_credentials__fails_to_connect_with_reason__invalid_signature_' time='1.187'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__144__JWT_and_realtime__when_using_authUrl__when_token_expires__receives_a_40142_error_from_the_server' time='5.307'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__145__JWT_and_realtime__when_using_authUrl__when_the_server_sends_and_AUTH_protocol_message__client_reauths_correctly_without_going_through_a_disconnection' time='5.214'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__147__JWT_and_realtime__when_using_authCallback__with_invalid_credentials__fails_to_connect' time='1.594'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__148__JWT_and_realtime__when_token_expires_and_has_a_means_to_renew__reconnects_using_authCallback_and_obtains_a_new_token' time='3.975'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__149__JWT_and_realtime__when_the_token_request_includes_a_clientId__the_clientId_is_the_same_specified_in_the_JWT_token_request' time='0.858'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__150__JWT_and_realtime__when_the_token_request_includes_subscribe_only_capabilities__fails_to_publish_to_a_channel_with_subscribe_only_capability' time='0.863'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__151__currentTokenDetails__should_hold_a__TokenDetails__instance_in_which_only_the__token__attribute_is_populated_with_that_token_string' time='0.281'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__152__currentTokenDetails__should_be_set_with_the_current_token__if_applicable__on_instantiation_and_each_time_it_is_replaced' time='0.087'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__153__currentTokenDetails__should_be_empty_if_there_is_no_current_token' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__154__JWT_and_rest__when_the_JWT_token_embeds_an_Ably_token__pulls_stats_successfully' time='0.727'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__155__JWT_and_rest__when_the_JWT_token_embeds_an_Ably_token_and_it_is_requested_as_encrypted__pulls_stats_successfully' time='0.722'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__156__JWT_and_rest__when_the_JWT_token_is_returned_with_application_jwt_content_type__the_client_successfully_connects_and_pulls_stats' time='0.576'/>
    <testcase classname='Ably_tvOS_Tests.AuthTests' name='test__157__JWT_and_rest__when_the_JWT_token_is_returned_with_application_jwt_content_type__the_client_can_request_a_new_token_to_initilize_another_client_that_connects_and_pulls_stats' time='0.259'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.ClientOptionsTests' tests='1' failures='0'>
    <testcase classname='Ably_tvOS_Tests.ClientOptionsTests' name='testAddAgent' time='0.001'/>
  </testsuite>
  <testsuite name='CryptoTest' tests='1' failures='0'>
    <testcase classname='CryptoTest' name='testEncryptAndDecrypt' time='0.002'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.CryptoTests' tests='14' failures='0'>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__001__Crypto__getDefaultParams__returns_a_complete_CipherParams_instance__using_the_default_values_for_any_field_not_supplied' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__002__Crypto__getDefaultParams__calculates_a_keyLength_from_the_key__its_size_in_bits_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__003__Crypto__getDefaultParams__should_check_that_keyLength_is_valid_for_algorithm' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__004__Crypto__getDefaultParams__key_parameter__can_be_a_binary' time='0.000'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__005__Crypto__getDefaultParams__key_parameter__can_be_a_base64_encoded_string_with_standard_encoding' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__006__Crypto__getDefaultParams__key_parameter__can_be_a_base64_encoded_string_with_URL_encoding' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__007__Crypto__generateRandomKey__takes_a_single_length_argument_and_returns_a_binary' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__008__Crypto__generateRandomKey__takes_no_arguments_and_returns_the_default_algorithm_s_default_length' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__009__Crypto__generateHashSHA256__takes_data_and_returns_a_SHA256_digest' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__010__Crypto__encrypt__should_generate_a_new_IV_every_time_it_s_called__and_should_be_the_first_block_encrypted' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__011__Crypto__with_fixtures_from_crypto_data_128_json__should_encrypt_messages_as_expected_in_the_fixtures' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__012__Crypto__with_fixtures_from_crypto_data_128_json__should_decrypt_messages_as_expected_in_the_fixtures' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__013__Crypto__with_fixtures_from_crypto_data_256_json__should_encrypt_messages_as_expected_in_the_fixtures' time='0.032'/>
    <testcase classname='Ably_tvOS_Tests.CryptoTests' name='test__014__Crypto__with_fixtures_from_crypto_data_256_json__should_decrypt_messages_as_expected_in_the_fixtures' time='0.028'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.DeltaCodecTests' tests='3' failures='0'>
    <testcase classname='Ably_tvOS_Tests.DeltaCodecTests' name='test__001__DeltaCodec__decoding__should_decode_vcdiff_encoded_messages' time='0.463'/>
    <testcase classname='Ably_tvOS_Tests.DeltaCodecTests' name='test__002__DeltaCodec__decoding__should_fail_and_recover_when_the_vcdiff_messages_are_out_of_order' time='0.564'/>
    <testcase classname='Ably_tvOS_Tests.DeltaCodecTests' name='test__003__DeltaCodec__decoding__should_recover_when_the_vcdiff_message_decoding_fails' time='0.508'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.GCDTests' tests='1' failures='0'>
    <testcase classname='Ably_tvOS_Tests.GCDTests' name='testScheduledBlockHandleDerefsBlockAfterInvoke' time='0.001'/>
  </testsuite>
  <testsuite name='ObjcppTest' tests='1' failures='0'>
    <testcase classname='ObjcppTest' name='testPrintVersionInfo' time='0.000'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.ObjectLifetimesTests' tests='5' failures='0'>
    <testcase classname='Ably_tvOS_Tests.ObjectLifetimesTests' name='test__001__ObjectLifetimes__user_code_releases_public_object__the_object_s_internal_child_s_back_reference_is_released_too' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.ObjectLifetimesTests' name='test__002__ObjectLifetimes__user_code_holds_only_reference_to_public_object_s_public_child__still_can_access_parent_s_internal_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.ObjectLifetimesTests' name='test__003__ObjectLifetimes__user_code_holds_only_reference_to_public_object_s_public_child__when_it_s_released__schedules_async_release_of_parent_s_internal_object_in_internal_queue' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.ObjectLifetimesTests' name='test__004__ObjectLifetimes__when_user_leaves_Realtime_open__still_works' time='0.475'/>
    <testcase classname='Ably_tvOS_Tests.ObjectLifetimesTests' name='test__005__ObjectLifetimes__when_Realtime_is_closed_and_user_loses_its_reference__channels_don_t_leak' time='0.427'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.ReadmeExamplesTests' tests='16' failures='0'>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__001__testMakeKeyInstance' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__002__testMakeTokenInstance' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__003__testListenToConnectionStateChanges' time='0.093'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__004__testNoAutoConnect' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__005__testSubscribeAndPublishingToChannel' time='0.101'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__006__testQueryingTheHistory' time='0.099'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__007__testPresenceOnAChannel' time='0.117'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__008__testQueryingThePresenceHistory' time='0.099'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__009__testMakeRestClientAndChannel' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__010__testRestPublishMessage' time='0.114'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__011__testRestQueryingTheHistory' time='0.109'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__012__testRestPresenceOnAChannel' time='0.103'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__013__testRestQueryingThePresenceHistory' time='0.298'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__014__testGenerateToken' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__015__testFetchingStats' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.ReadmeExamplesTests' name='test__016__testFetchingTime' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RealtimeClientChannelTests' tests='137' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__002__Channel__should_not_crash_when_an_ATTACH_request_is_responded_with_a_DETACHED' time='0.380'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__003__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_state_changes' time='0.495'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__004__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_FAILED_state_changes' time='0.440'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__005__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_SUSPENDED_state_changes' time='0.348'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__006__Channel__EventEmitter__channel_states_and_events__can_emit_an_UPDATE_event' time='0.345'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__007__Channel__EventEmitter__channel_states_and_events__should_not_emit_detached_event_on_an_already_detached_channel' time='0.495'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__008__Channel__EventEmitter__channel_states_and_events__state_attribute_should_be_the_current_state_of_the_channel' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__009__Channel__EventEmitter__channel_states_and_events__should_contain_an_ErrorInfo_object_with_details_when_an_error_occurs' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__010__Channel__EventEmitter__channel_states_and_events__a_ChannelStateChange_is_emitted_as_the_first_argument_for_every_channel_state_change' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__011__Channel__EventEmitter__channel_states_and_events__ChannelStateChange_will_contain_a_resumed_boolean_attribute_with_value__true__if_the_bit_flag_RESUMED_was_included' time='5.458'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__012__Channel__EventEmitter__channel_states_and_events__bit_flag_RESUMED_was_included' time='0.382'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__013__Channel__connection_state__if_the_connection_state_enters_the_CONNECTED_state__then_a_SUSPENDED_channel_will_initiate_an_attach_operation' time='1.649'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__014__Channel__connection_state__if_the_attach_operation_for_the_channel_times_out_and_the_channel_returns_to_the_SUSPENDED_state' time='0.408'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__015__Channel__connection_state__should_attach_successfully_and_remain_attached_when_the_connection_state_without_a_successful_recovery_gets_CONNECTED' time='8.375'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__016__Channel__connection_state__if_the_connection_state_enters_the_DISCONNECTED_state__it_will_have_no_effect_on_the_channel_states' time='5.091'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__017__Channel__connection_state__changes_to_FAILED__ATTACHING_channel_should_transition_to_FAILED' time='0.007'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__018__Channel__connection_state__changes_to_FAILED__ATTACHED_channel_should_transition_to_FAILED' time='0.370'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__019__Channel__connection_state__changes_to_FAILED__channel_being_released_waiting_for_DETACH_shouldn_t_crash__issue__918_' time='0.031'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__020__Channel__connection_state__changes_to_FAILED__should_immediately_fail_if_not_in_the_connected_state' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__021__Channel__connection_state__changes_to_FAILED__should_keep_the_channels_attached_when_client_reconnected_successfully_and_queue_messages_is_disabled' time='0.631'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__022__Channel__connection_state__changes_to_CLOSED__ATTACHING_channel_should_transition_to_DETACHED' time='0.363'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__023__Channel__connection_state__changes_to_CLOSED__ATTACHED_channel_should_transition_to_DETACHED' time='0.435'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__024__Channel__connection_state__changes_to_SUSPENDED__ATTACHING_channel_should_transition_to_SUSPENDED' time='0.283'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__025__Channel__connection_state__changes_to_SUSPENDED__ATTACHED_channel_should_transition_to_SUSPENDED' time='0.363'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__026__Channel__connection_state__changes_to_SUSPENDED__channel_being_released_waiting_for_DETACH_shouldn_t_crash__issue__918_' time='0.043'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__027__Channel__attach__if_already_ATTACHED_or_ATTACHING_nothing_is_done' time='0.359'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__028__Channel__attach__if_the_user_does_not_have_sufficient_permissions_to_attach__then_the_channel_will_transition_to_FAILED_and_set_the_errorReason' time='0.452'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__029__Channel__attach__if_the_channel_is_in_the_FAILED_state__the_attach_request_sets_its_errorReason_to_null__and_proceeds_with_a_channel_attach' time='0.432'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__030__Channel__attach__should_send_an_ATTACH_ProtocolMessage__change_state_to_ATTACHING_and_change_state_to_ATTACHED_after_confirmation' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__031__Channel__attach__should_transition_the_channel_state_to_FAILED_if_the_user_does_not_have_sufficient_permissions' time='0.437'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__032__Channel__attach__should_transition_the_channel_state_to_SUSPENDED_if_ATTACHED_ProtocolMessage_is_not_received' time='2.418'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__033__Channel__attach__if_called_with_a_callback_should_call_it_once_attached' time='0.351'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__034__Channel__attach__if_called_with_a_callback_and_already_attaching_should_call_the_callback_once_attached' time='0.346'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__035__Channel__attach__if_called_with_a_callback_and_already_attached_should_call_the_callback_with_nil_error' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__036__Channel__attach__if_the_channel_is_in_a_pending_state_ATTACHING__do_the_attach_operation_after_the_completion_of_the_pending_request' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__037__Channel__attach__if_the_channel_is_in_a_pending_state_DETACHING__do_the_attach_operation_after_the_completion_of_the_pending_request' time='0.483'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__038__Channel__attach__a_channel_in_DETACHING_can_actually_move_back_to_ATTACHED_if_it_fails_to_detach' time='1.422'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__039__Channel__attach__results_in_an_error_if_the_connection_state_is__CLOSING' time='0.285'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__040__Channel__attach__results_in_an_error_if_the_connection_state_is__CLOSED' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__041__Channel__attach__results_in_an_error_if_the_connection_state_is__SUSPENDED' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__042__Channel__attach__results_in_an_error_if_the_connection_state_is__FAILED' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__043__Channel__attach__happens_when_connection_is_CONNECTED_if_it_s_currently__INITIALIZED' time='0.446'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__044__Channel__attach__happens_when_connection_is_CONNECTED_if_it_s_currently__CONNECTING' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__046__Channel__attach__attach_resume__should_pass_attach_resume_flag_in_attach_message' time='0.433'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__047__Channel__attach__attach_resume__should_have_correct_AttachResume_value' time='0.383'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__048__Channel__attach__attach_resume__should_encode_correctly_the_AttachResume_flag' time='2.803'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__049__Channel__detach__if_state_is_INITIALIZED_or_DETACHED_nothing_is_done' time='0.414'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__050__Channel__detach__if_the_channel_is_in_a_pending_state_DETACHING__do_the_detach_operation_after_the_completion_of_the_pending_request' time='1.445'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__051__Channel__detach__if_the_channel_is_in_a_pending_state_ATTACHING__do_the_detach_operation_after_the_completion_of_the_pending_request' time='0.359'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__052__Channel__detach__results_in_an_error_if_the_connection_state_is_FAILED' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__053__Channel__detach__should_send_a_DETACH_ProtocolMessage__change_state_to_DETACHING_and_change_state_to_DETACHED_after_confirmation' time='0.435'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__054__Channel__detach__if_called_with_a_callback_should_call_it_once_detached' time='0.420'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__055__Channel__detach__if_called_with_a_callback_and_already_detaching_should_call_the_callback_once_detached' time='0.429'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__056__Channel__detach__if_called_with_a_callback_and_already_detached_should_should_call_the_callback_with_nil_error' time='0.425'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__057__Channel__detach__if_a_DETACHED_is_not_received_within_the_default_realtime_request_timeout__the_detach_request_should_be_treated_as_though_it_has_failed_and_the_channel_will_return_to_its_previous_state' time='1.397'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__058__Channel__detach__if_the_channel_state_is_SUSPENDED__the__detach__request_transitions_the_channel_immediately_to_the_DETACHED_state' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__059__Channel__detach__results_in_an_error_if_the_connection_state_is__CLOSING' time='0.366'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__060__Channel__detach__results_in_an_error_if_the_connection_state_is__FAILED' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__061__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__INITIALIZED' time='0.417'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__062__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__CONNECTING' time='0.420'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__063__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__DISCONNECTED' time='0.742'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__064__Channel__publish__should_encode_messages_in_the_same_way_as_the_RestChannel' time='0.551'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__065__Channel__publish__Message_connectionId_should_match_the_current_Connection_id_for_all_published_messages' time='0.371'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__066__Channel__publish__should_provide_an_optional_argument_that_allows_the_clientId_value_to_be_specified' time='0.350'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__067__Channel__publish__should_invoke_callback__when_the_message_is_successfully_delivered' time='0.414'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__068__Channel__publish__should_invoke_callback__upon_failure' time='0.511'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__069__Channel__publish__should_invoke_callback__for_all_messages_published' time='1.094'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__070__Channel__publish__Connection_state_conditions__publish_should_not_trigger_an_implicit_attach' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__071__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__ATTACHED_then_the_messages_should_be_published_immediately' time='0.420'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__072__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__INITIALIZED_then_the_messages_should_be_published_immediately' time='0.349'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__073__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__DETACHED_then_the_messages_should_be_published_immediately' time='0.478'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__074__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__ATTACHING_then_the_messages_should_be_published_immediately' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__075__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__DETACHING_then_the_messages_should_be_published_immediately' time='0.416'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__076__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__INITIALIZED' time='0.440'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__077__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__CONNECTING' time='0.466'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__078__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__DISCONNECTED' time='0.821'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__079__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__INITIALIZED' time='0.445'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__080__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__ATTACHING' time='0.451'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__081__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__ATTACHED' time='5.952'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__082__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_SUSPENDED' time='0.285'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__083__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_CLOSING' time='0.295'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__084__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_CLOSED' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__085__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_FAILED' time='0.283'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__086__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__channel_is_SUSPENDED' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__087__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__channel_is_FAILED' time='0.353'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__088__Channel__publish__message_bundling__Messages_are_delivered_using_a_single_ProtocolMessage_where_possible_by_bundling_in_all_messages_for_that_channel' time='0.857'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__089__Channel__publish__message_bundling__The_resulting_ProtocolMessage_must_not_exceed_the_maxMessageSize' time='3.086'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__091__Channel__publish__message_bundling__should_publish_only_once_on_multiple_explicit_publish_requests_for_a_given_message_with_client_supplied_ids' time='0.426'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__092__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_with_different__non_empty__clientIds_are_posted_via_different_protocol_messages' time='0.352'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__093__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_with_mixed_empty_non_empty_clientIds_are_posted_via_different_protocol_messages' time='0.863'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__094__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_bundled_by_the_user_are_posted_in_a_single_protocol_message_even_if_they_have_mixed_clientIds' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__095__Channel__publish__Unidentified_clients_using_Basic_Auth__should_have_the_provided_clientId_on_received_message_when_it_was_published_with_clientId' time='0.376'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__096__Channel__publish__expect_either__an_array_of_Message_objects' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__097__Channel__publish__expect_either__a_name_string_and_data_payload' time='0.353'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__098__Channel__publish__expect_either__allows_name_to_be_null' time='0.376'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__099__Channel__publish__expect_either__allows_data_to_be_null' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__100__Channel__publish__expect_either__allows_name_and_data_to_be_assigned' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__101__Channel__publish__Identified_clients_with_clientId__when_publishing_a_Message_with_the_clientId_attribute_value_set_to_the_identified_client_s_clientId' time='0.365'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__102__Channel__publish__Identified_clients_with_clientId__when_publishing_a_Message_with_a_different_clientId_attribute_value_from_the_identified_client_s_clientId__it_should_reject_that_publish_operation_immediately' time='0.352'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__103__Channel__publish__Identified_clients_with_clientId__message_should_be_published_following_authentication_and_received_back_with_the_clientId_intact' time='0.446'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__104__Channel__publish__Identified_clients_with_clientId__message_should_be_rejected_by_the_Ably_service_and_the_message_error_should_contain_the_server_error' time='0.452'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__105__Channel__publish__Identified_clients_with_clientId__When_publishing_a_Message_with_clientId_set_to_null__should_be_unnecessary_to_set_clientId_of_the_Message_before_publishing_and_have_clientId_value_set_for_the_Message_when_received' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__106__Channel__subscribe__with_no_arguments_subscribes_a_listener_to_all_messages' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__107__Channel__subscribe__with_a_single_name_argument_subscribes_a_listener_to_only_messages_whose_name_member_matches_the_string_name' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__108__Channel__subscribe__with_a_attach_callback_should_subscribe_and_call_the_callback_when_attached' time='0.441'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__109__Channel__subscribe__should_implicitly_attach_the_channel' time='0.354'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__110__Channel__subscribe__should_result_in_an_error_if_channel_is_in_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__111__Channel__subscribe__should_exist_ensuring_published_messages_are_not_echoed_back_to_the_subscriber_when_echoMessages_is_false' time='1.510'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__112__Channel__subscribe__should_deliver_the_message_even_if_there_is_an_error_while_decoding__using_crypto_data_128' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__113__Channel__subscribe__should_deliver_the_message_even_if_there_is_an_error_while_decoding__using_crypto_data_256' time='0.389'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__114__Channel__subscribe__message_cannot_be_decoded_or_decrypted__should_deliver_with_encoding_attribute_set_indicating_the_residual_encoding_and_error_should_be_emitted' time='0.353'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__115__Channel__unsubscribe__with_no_arguments_unsubscribes_the_provided_listener_to_all_messages_if_subscribed' time='0.376'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__116__Channel__unsubscribe__with_a_single_name_argument_unsubscribes_the_provided_listener_if_previously_subscribed_with_a_name_specific_subscription' time='0.375'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__117__Channel__history__should_support_all_the_same_params_as_Rest' time='0.270'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__118__Channel__history__should_return_a_PaginatedResult_page' time='0.450'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__119__Channel__history__should_retrieve_all_available_messages' time='0.703'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__120__Channel__history__attached_channel_may_receive_an_additional_ATTACHED_ProtocolMessage' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__121__Channel__history__If_an_ERROR_ProtocolMessage_is_received_for_this_channel_then_the_channel_should_immediately_transition_to_the_FAILED_state__the_errorReason_should_be_set_and_an_error_should_be_emitted_on_the_channel' time='0.348'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__122__Channel__history__should_not_emit_messages_to_subscribers_if_the_channel_is_in_any_state_other_than_ATTACHED' time='3.644'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__123__Channel__history__supports_the_param_untilAttach__should_be_false_as_default' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__124__Channel__history__supports_the_param_untilAttach__should_invoke_an_error_when_the_untilAttach_is_specified_and_the_channel_is_not_attached' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__125__Channel__history__supports_the_param_untilAttach__where_value_is_true__should_pass_the_querystring_param_fromSerial_with_the_serial_number_assigned_to_the_channel' time='0.464'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__126__Channel__history__supports_the_param_untilAttach__where_value_is_false__should_pass_the_querystring_param_fromSerial_with_the_serial_number_assigned_to_the_channel' time='0.451'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__127__Channel__history__supports_the_param_untilAttach__should_retrieve_messages_prior_to_the_moment_that_the_channel_was_attached' time='1.038'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__128__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__the_channel_is_in_the_ATTACHED_states__an_attempt_to_reattach_the_channel_should_be_made_immediately_by_sending_a_new_ATTACH_message_and_the_channel_should_transition_to_the_ATTACHING_state_with_the_error_emitted_in_the_ChannelStateChange_event' time='0.359'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__129__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__the_channel_is_in_the_SUSPENDED_state__an_attempt_to_reattach_the_channel_should_be_made_immediately_by_sending_a_new_ATTACH_message_and_the_channel_should_transition_to_the_ATTACHING_state_with_the_error_emitted_in_the_ChannelStateChange_event' time='1.299'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__130__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_attempt_to_re_attach_fails_the_channel_will_transition_to_the_SUSPENDED_state_and_the_error_will_be_emitted_in_the_ChannelStateChange_event' time='2.453'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__131__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_channel_was_already_in_the_ATTACHING_state__the_channel_will_transition_to_the_SUSPENDED_state_and_the_error_will_be_emitted_in_the_ChannelStateChange_event' time='0.360'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__132__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_connection_is_no_longer_CONNECTED__then_the_automatic_attempts_to_re_attach_the_channel_must_be_cancelled' time='1.450'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__133__Channel__history__Channel_options__setOptions__should_send_an_ATTACH_message_with_params___modes_if_the_channel_is_attached' time='0.456'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__134__Channel__history__Channel_options__setOptions__should_send_an_ATTACH_message_with_params___modes_if_the_channel_is_attaching' time='0.350'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__135__Channel__history__Channel_options__setOptions__should_success_immediately_if_channel_is_not_attaching_or_attached' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__136__Channel__history__Channel_options__setOptions__should_fail_if_the_attach_moves_to_FAILED' time='0.433'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__137__Channel__history__Channel_options__setOptions__should_fail_if_the_attach_moves_to_DETACHED' time='0.351'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__138__Channel__crypto__if_configured_for_encryption__channels_encrypt_and_decrypt_messages__data' time='1.075'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__139__message_attributes__if_the_message_does_not_contain_an_id__it_should_be_set_to_protocolMsgId_index' time='0.351'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelTests' name='test__Channel_options__setOptions__shouldUpdateOptionsOfRestChannel' time='0.282'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RealtimeClientChannelsTests' tests='5' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelsTests' name='test__001__Channels__should_exist_methods_to_check_if_a_channel_exists_or_iterate_through_the_existing_channels' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelsTests' name='test__002__Channels__get__should_create_a_new_Channel_if_none_exists_or_return_the_existing_one' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelsTests' name='test__003__Channels__get__should_be_possible_to_specify_a_ChannelOptions' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelsTests' name='test__004__Channels__get__accessing_an_existing_Channel_with_options_should_update_the_options_and_then_return_the_object' time='0.012'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientChannelsTests' name='test__005__Channels__release__should_release_a_channel' time='0.998'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RealtimeClientConnectionTests' tests='96' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__001__Connection__should_connect_automatically' time='0.294'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__002__Connection__should_connect_manually' time='2.313'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__003__Connection__API_version_param_must_be_included_in_all_connections' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__004__Connection__Library_and_version_param__agent__should_include_the__Ably_Agent__header_value' time='0.283'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__005__Connection__basic_operations_should_work_simultaneously' time='1.016'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__006__Connection__should_have_an_opened_websocket_connection_and_received_a_CONNECTED_ProtocolMessage' time='0.276'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__007__Connection__should_make_a_new_connection_with_a_new_transport_instance_if_the_state_is_CLOSING' time='0.564'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__008__Connection__it_should_make_sure_that__when_the_CLOSED_ProtocolMessage_arrives_for_the_old_connection__it_doesn_t_affect_the_new_one' time='0.570'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__009__Connection__should_enter_FAILED_state_when_API_key_is_invalid' time='0.275'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__010__Connection__attributes_within_ConnectionDetails_should_be_used_as_defaults' time='0.280'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__011__Connection__should_disconnect_the_transport_when_no_activity_exist' time='4.085'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__012__Connection__the_client_may_receive_a_CONNECTED_ProtocolMessage_from_Ably_at_any_point_and_should_emit_an_UPDATE_event' time='0.805'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__013__Connection__should_set_the_Connection_reason_attribute_based_on_the_Error_member_of_the_CONNECTED_ProtocolMessage' time='0.369'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__014__Connection__should_not_move_to_FAILED_if_received_DISCONNECT_with_an_error' time='0.283'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__015__Connection__should_abort_reconnection_with_new_token_if_the_server_has_requested_it_to_authorize_and_after_it_the_connection_has_been_closed' time='0.360'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__016__Connection__ConnectionDetails__maxMessageSize_overrides_the_default_maxMessageSize' time='0.277'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__017__Connection__url__should_connect_to_the_default_host' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__018__Connection__url__should_connect_with_query_string_params' time='0.297'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__019__Connection__url__should_connect_with_query_string_params_including_clientId' time='0.381'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__020__Connection__event_emitter__should_emit_events_for_state_changes' time='1.010'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__021__Connection__event_emitter__should_never_emit_a_ConnectionState_event_for_a_state_equal_to_the_previous_state' time='0.584'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__022__Connection__event_emitter__should_emit_states_on_a_new_connection' time='0.277'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__023__Connection__event_emitter__should_emit_states_when_connection_is_closed' time='0.345'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__024__Connection__event_emitter__should_have_the_current_state' time='0.297'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__025__Connection__event_emitter__should_have_a_ConnectionStateChange_as_first_argument_for_every_connection_state_change' time='0.280'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__026__Connection__event_emitter__should_have_the_reason_which_contains_an_ErrorInfo' time='0.327'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__027__Connection__event_emitter__any_state_change_triggered_by_a_ProtocolMessage_that_contains_an_Error_member_should_populate_the_Reason_property' time='0.382'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__028__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__successful_receipt_and_acceptance_of_message' time='0.518'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__029__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__successful_receipt_and_acceptance_of_presence' time='0.428'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__030__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__message_failure' time='0.510'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__031__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__presence_failure' time='0.416'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__032__Connection__ACK_and_NACK__ProtocolMessage__should_contain_unique_serially_incrementing_msgSerial_along_with_the_count' time='0.926'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__033__Connection__ACK_and_NACK__ProtocolMessage__should_continue_incrementing_msgSerial_serially_if_the_connection_resumes_successfully' time='5.533'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__034__Connection__ACK_and_NACK__ProtocolMessage__should_reset_msgSerial_serially_if_the_connection_does_not_resume' time='1.385'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__035__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__connection_is_closed' time='2.539'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__036__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__connection_state_enters_FAILED' time='1.390'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__037__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__lost_connection_state' time='1.873'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__038__Connection__connection_id__should_be_null_until_connected' time='0.280'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__039__Connection__connection_id__should_have_unique_IDs' time='0.655'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__040__Connection__connection_key__should_be_null_until_connected' time='0.307'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__041__Connection__connection_key__should_have_unique_connection_keys' time='0.613'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__042__Connection__serial__should_be_minus_1_once_connected' time='0.281'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__043__Connection__serial__should_not_update_when_a_message_is_sent_but_increments_by_one_when_ACK_is_received' time='1.425'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__044__Connection__serial__should_have_last_known_connection_serial_from_restored_connection' time='1.943'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__045__Connection__close__if_CONNECTING__do_the_operation_once_CONNECTED' time='0.396'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__046__Connection__close__if_CONNECTED__should_send_a_CLOSE_action__change_state_to_CLOSING_and_receive_a_CLOSED_action' time='0.346'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__047__Connection__close__should_transition_to_CLOSED_action_when_the_close_process_timeouts' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__048__Connection__close__transitions_to_the_CLOSING_state_and_then_to_the_CLOSED_state_if_the_transport_is_abruptly_closed' time='0.343'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__049__Connection__close__if_DISCONNECTED__aborts_the_retry_and_moves_immediately_to_CLOSED' time='1.861'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__050__Connection__close__if_SUSPENDED__aborts_the_retry_and_moves_immediately_to_CLOSED' time='1.819'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__051__Connection__ping__fails_if_in_the_INITIALIZED__SUSPENDED__CLOSING__CLOSED_or_FAILED_state' time='0.767'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__052__Connection__ping__should_send_a_ProtocolMessage_with_action_HEARTBEAT_and_expects_a_HEARTBEAT_message_in_response' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__053__Connection__ping__should_fail_if_a_HEARTBEAT_ProtocolMessage_is_not_received_within_the_default_realtime_request_timeout' time='3.460'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__054__Connection__connection_request_fails__on_DISCONNECTED_after_CONNECTED__should_not_emit_error_with_a_renewable_token' time='3.477'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__055__Connection__connection_request_fails__on_token_error_while_CONNECTING__reissues_token_and_reconnects' time='5.046'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__056__Connection__connection_request_fails__should_transition_to_disconnected_when_the_token_renewal_fails' time='3.098'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__057__Connection__connection_request_fails__should_transition_to_Failed_state_because_the_token_is_invalid_and_not_renewable' time='1.433'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__058__Connection__connection_request_fails__connection_attempt_should_fail_if_not_connected_within_the_default_realtime_request_timeout' time='0.506'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__059__Connection__connection_request_fails__connection_attempt_fails_for_any_recoverable_reason' time='3.617'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__060__Connection__connection_request_fails__connection_state_has_been_in_the_DISCONNECTED_state_for_more_than_the_default_connectionStateTtl_should_change_the_state_to_SUSPENDED' time='1.017'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__061__Connection__connection_request_fails__should_change_the_state_to_SUSPENDED_when_the_connection_state_has_been_in_the_DISCONNECTED_state_for_more_than_the_connectionStateTtl' time='12.977'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__062__Connection__connection_request_fails__on_CLOSE_the_connection_should_stop_connection_retries' time='3.758'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__063__Connection__connection_failures_once_CONNECTED__should_not_receive_published_messages_until_the_connection_reconnects_successfully' time='0.753'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__064__Connection__connection_failures_once_CONNECTED__if_a_Connection_transport_is_disconnected_unexpectedly_or_if_a_token_expires__then_the_Connection_manager_will_immediately_attempt_to_reconnect' time='3.478'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__066__Connection__connection_failures_once_CONNECTED__ACK_and_NACK_responses_for_published_messages_can_only_ever_be_received_on_the_transport_connection_on_which_those_messages_were_sent' time='0.759'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__067__Connection__connection_failures_once_CONNECTED__reconnects_to_the_websocket_endpoint_with_additional_querystring_params__resume_is_the_private_connection_key_and_connection_serial_is_the_most_recent_ProtocolMessage_connectionSerial_received' time='0.670'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__068__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_the_same_connectionId_as_the_current_client__and_no_error' time='0.688'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__069__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_the_same_connectionId_as_the_current_client_and_an_non_fatal_error' time='0.675'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__070__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_a_new_connectionId_and_an_error' time='0.874'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__071__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__ERROR_ProtocolMessage_indicating_a_fatal_error_in_the_connection' time='0.387'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__073__Connection__connection_failures_once_CONNECTED__when_a_connection_is_resumed__the_connection_key_may_change_and_will_be_provided_in_the_first_CONNECTED_ProtocolMessage_connectionDetails' time='0.752'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__075__Connection__connection_failures_once_CONNECTED__when_connection__ttl_plus_idle_interval__period_has_passed_since_last_activity__reattaches_to_the_same_channels_after_a_new_connection_has_been_established' time='6.127'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__076__Connection__connection_failures_once_CONNECTED__when_connection__ttl_plus_idle_interval__period_has_NOT_passed_since_last_activity__uses_the_same_connection' time='0.668'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__078__Connection__connection_failures_once_CONNECTED__DISCONNECTED_message_contains_a_token_error__and_the_library_does_not_have_a_means_to_renew_the_token__the_connection_will_transition_to_the_FAILED_state' time='3.097'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__080__Connection__Connection_recovery__connection_state_should_recover_explicitly_with_a_recover_key' time='1.277'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__082__Connection__Connection_recovery__when_a_connection_is_successfully_recovered__Connection_id_will_be_identical_to_the_id_of_the_connection_that_was_recovered_and_Connection_key_will_always_be_updated_to_the_ConnectionDetails_connectionKey_provided_in_the_first_CONNECTED_ProtocolMessage' time='0.578'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__084__Connection__Connection_recovery__should_connect_anyway_if_the_recoverKey_is_no_longer_valid' time='0.288'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__085__Connection__Connection_recovery__should_use_msgSerial_from_recoveryKey_to_set_the_client_internal_msgSerial_but_is_not_sent_to_Ably' time='0.306'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__086__Connection__Host_Fallback__failing_connections_with_custom_endpoint_should_result_in_an_error_immediately' time='0.104'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__087__Connection__Host_Fallback__failing_connections_with_custom_endpoint_should_result_in_time_outs' time='0.104'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__088__Connection__Host_Fallback__applies_when_the_default_realtime_ably_io_endpoint_is_being_used' time='1.007'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__089__Connection__Host_Fallback__applies_when_an_array_of_ClientOptions_fallbackHosts_is_provided' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__090__Connection__Host_Fallback__should_not_use_an_alternative_host_when_the_client_receives_a_bad_request' time='0.107'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__091__Connection__Host_Fallback__every_connection_is_first_attempted_to_the_primary_host_realtime_ably_io' time='1.051'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__092__Connection__Host_Fallback__should_retry_hosts_in_random_order_after_checkin_if_an_internet_connection_is_available' time='0.745'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__093__Connection__Host_Fallback__doesn_t_try_fallback_host_if_Internet_connection_check_fails' time='0.105'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__095__Connection__Host_Fallback__won_t_use_fallback_hosts_feature_if_an_empty_array_is_provided' time='0.103'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__096__Connection__Host_Fallback__client_is_connected_to_a_fallback_host_endpoint_should_do_HTTP_requests_to_the_same_data_centre' time='0.893'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__100__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_NSPOSIXErrorDomain_with_code_57' time='0.295'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__101__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_NSPOSIXErrorDomain_with_code_50' time='0.286'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__102__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_any_kCFErrorDomainCFNetwork' time='0.290'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__106__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_attempt_to_connect_if_the_operating_system_indicates_that_the_underlying_internet_connection_is_now_available_when_DISCONNECTED_or_SUSPENDED' time='0.284'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__107__Connection__Operating_System_events_for_network_internet_connectivity_changes__Ably_can_request_that_a_connected_client_re_authenticates_by_sending_the_client_an_AUTH_ProtocolMessage' time='0.690'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__108__Connection__Operating_System_events_for_network_internet_connectivity_changes__re_authenticate_and_resume_the_connection_when_the_client_is_forcibly_disconnected_following_a_DISCONNECTED_message_containing_an_error_code_greater_than_or_equal_to_40140_and_less_than_40150' time='5.563'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__109__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_change_the_state_to_DISCONNECTED_if_the_operating_system_indicates_that_the_underlying_internet_connection_is_no_longer_available__when_CONNECTING' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientConnectionTests' name='test__110__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_change_the_state_to_DISCONNECTED_if_the_operating_system_indicates_that_the_underlying_internet_connection_is_no_longer_available__when_CONNECTED' time='0.279'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RealtimeClientPresenceTests' tests='84' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__004__Presence__callback_can_be_provided_that_will_be_called_upon_success' time='0.424'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__005__Presence__callback_can_be_provided_that_will_be_called_upon_failure' time='0.468'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__006__Presence__should_also_ensure_that_using_updateClient_has_no_side_effects_on_a_client_that_has_entered_normally_using_Presence_enter' time='0.944'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__007__Presence__should_indicate_an_error_if_the_client_is_identified_and_has_a_valid_clientId_and_the_clientId_argument_does_not_match_the_client_s_clientId' time='0.493'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__015__Presence__subscribe__with_no_arguments_should_subscribe_a_listener_to_all_presence_messages' time='1.015'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__016__Presence__unsubscribe__with_no_arguments_unsubscribes_the_listener_if_previously_subscribed_with_an_action_specific_subscription' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__018__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_FAILED_state__all_queued_presence_messages_should_fail_immediately' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__020__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_DETACHED_state__all_queued_presence_messages_should_fail_immediately' time='0.433'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__021__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_DETACHED_state__should_clear_the_PresenceMap_including_local_members_and_does_not_emit_any_presence_events' time='0.501'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__022__Presence__Channel_state_change_side_effects__channel_enters_the_SUSPENDED_state__all_queued_presence_messages_should_fail_immediately' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__023__Presence__Channel_state_change_side_effects__channel_enters_the_SUSPENDED_state__should_maintain_the_PresenceMap_and_any_members_present_before_and_after_the_sync_should_not_emit_presence_events' time='6.553'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__025__Presence__unsubscribe__with_a_single_action_argument_unsubscribes_the_provided_listener_to_all_presence_messages_for_that_action' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__026__Presence__subscribe__should_implicitly_attach_the_channel' time='0.507'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__027__Presence__subscribe__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__028__Presence__subscribe__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__029__Presence__subscribe__with_a_single_action_argument' time='1.046'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__032__Presence__enter__entering_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection' time='0.421'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__033__Presence__enter__should_result_in_an_error_immediately_if_the_client_is_anonymous' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__034__Presence__enter__should_result_in_an_error_immediately_if_the_channel_is_DETACHED' time='0.429'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__035__Presence__enter__should_result_in_an_error_immediately_if_the_channel_is_FAILED' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__036__Presence__enter__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__037__Presence__update__should_update_the_data_for_the_present_member_with_a_value' time='0.510'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__040__Presence__update__optionally_a_callback_can_be_provided_that_is_called_for_success' time='0.427'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__041__Presence__update__optionally_a_callback_can_be_provided_that_is_called_for_failure' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__042__Presence__update__update_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection' time='0.927'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__048__Presence__PresenceMap__if_action_of_PRESENT_arrives__it_should_be_added_to_the_presence_map_with_the_action_set_to_PRESENT' time='0.832'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__052__Presence__PresenceMap__compare_for_newness__split_the_id_of_both_presence_messages' time='29.236'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__053__Presence__PresenceMap__compare_for_newness__presence_message_has_a_connectionId_which_is_not_an_initial_substring_of_its_id__compares_them_by_timestamp_numerically' time='29.219'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__056__Presence__enter__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission' time='0.440'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__057__Presence__update__should_result_in_an_error_immediately_if_the_client_is_anonymous' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__058__Presence__update__should_result_in_an_error_immediately_if_the_channel_is_DETACHED' time='0.424'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__059__Presence__update__should_result_in_an_error_immediately_if_the_channel_is_FAILED' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__060__Presence__update__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission' time='0.435'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__061__Presence__update__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__062__Presence__leave__optionally_a_callback_can_be_provided_that_is_called_for_success' time='0.936'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__063__Presence__leave__optionally_a_callback_can_be_provided_that_is_called_for_failure' time='0.487'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__064__Presence__leave__should_raise_an_error_if_client_is_not_present' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__065__Presence__leave__entering_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection' time='0.949'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__066__Presence__leave__if_the_client_is_not_currently_ENTERED__Ably_will_respond_with_an_ACK_and_the_request_will_succeed' time='1.482'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__067__Presence__enter__implicitly_attaches_the_Channel' time='0.422'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__068__Presence__enter__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__069__Presence__enter__should_result_in_an_error_if_the_channel_is_in_the_DETACHED_state' time='0.425'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__070__Presence__leave__should_result_in_an_error_immediately_if_the_client_is_anonymous' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__071__Presence__leave__should_result_in_an_error_immediately_if_the_channel_is_DETACHED' time='0.423'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__072__Presence__leave__should_result_in_an_error_immediately_if_the_channel_is_FAILED' time='0.421'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__073__Presence__leave__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission' time='0.436'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__074__Presence__leave__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__075__Presence__subscribe__should_implicitly_attach_the_channel' time='0.508'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__076__Presence__subscribe__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__077__Presence__subscribe__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__078__Presence__enter__optional_data_can_be_included_when_entering_a_channel' time='0.450'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__079__Presence__enter__should_emit_the_data_attribute_in_the_LEAVE_event_when_data_is_provided_when_entering_but_no_data_is_provided_when_leaving' time='0.945'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__084__Presence__enterClient__should_implicitly_attach_the_Channel' time='0.416'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__085__Presence__enterClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__086__Presence__enterClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__087__Presence__updateClient__should_implicitly_attach_the_Channel' time='0.434'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__088__Presence__updateClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__089__Presence__updateClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__090__Presence__leaveClient__should_implicitly_attach_the_Channel' time='0.442'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__091__Presence__leaveClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__092__Presence__leaveClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__093__Presence__Connection_state_conditions__all_presence_messages_are_published_immediately_if_the_connection_is_CONNECTED' time='0.440'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__094__Presence__Connection_state_conditions__all_presence_messages_will_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED' time='0.797'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__095__Presence__Connection_state_conditions__all_presence_messages_will_be_lost_if_queueMessages_has_been_explicitly_set_to_false' time='0.353'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__096__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is_INITIALIZED_and_queueMessages_has_been_explicitly_set_to_false' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__097__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__suspended' time='0.350'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__098__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__closed' time='0.424'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__099__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__failed' time='0.361'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__101__Presence__get__should_implicitly_attach_the_channel' time='0.514'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__102__Presence__get__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__103__Presence__get__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__104__Presence__get__should_result_in_an_error_if_the_channel_is_in_the_DETACHED_state' time='0.437'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__105__Presence__get__should_result_in_an_error_if_the_channel_moves_to_the_DETACHED_state' time='34.580'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__106__Presence__get__query__waitForSync_should_be_true_by_default' time='0.000'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__107__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__by_default__results_in_an_error' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__108__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__if_waitForSync_is_true__results_in_an_error' time='0.008'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__109__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__if_waitForSync_is_false__returns_the_members_in_the_current_PresenceMap' time='0.010'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__111__Presence__get__Query__set_of_params___waitForSync_is_false__should_return_immediately_the_known_set_of_presence_members' time='43.380'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__112__Presence__get__Query__set_of_params___should_return_members_filtered_by_clientId' time='0.425'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__113__Presence__get__Query__set_of_params___should_return_members_filtered_by_connectionId' time='29.221'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__114__Presence__history__should_support_all_the_same_params_as_Rest' time='0.340'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__115__Presence__history__should_return_a_PaginatedResult_page' time='43.637'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__117__Presence__enterClient__should_be_present_all_the_registered_members_on_a_presence_channel' time='0.966'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientPresenceTests' name='test__118__Presence__presence_message_attributes__if_the_presence_message_does_not_contain_an_id__it_should_be_set_to_protocolMsgId_index' time='0.282'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RealtimeClientTests' tests='42' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__001__RealtimeClient__All_WebSocket_connections_should_include_the_current_API_version' time='0.373'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__002__RealtimeClient__should_have_access_to_the_underlying_Connection_object' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__003__RealtimeClient__should_provide_access_to_the_underlying_Channels_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__004__RealtimeClient__should_use_the_configured_timeouts_specified' time='6.479'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__006__RealtimeClient__should_accept_acks_with_different_order' time='0.448'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__007__RealtimeClient__transport_should_guarantee_the_incoming_message_order' time='0.304'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__008__RealtimeClient__subscriber_should_receive_messages_in_the_same_order_in_which_they_have_been_sent' time='0.506'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__009__RealtimeClient__should_dispatch_in_user_queue_when_removing_an_observer' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__010__RealtimeClient__should_never_register_any_connection_listeners_for_internal_use_with_the_public_EventEmitter' time='0.355'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__011__RealtimeClient__should_never_register_any_message_and_channel_listeners_for_internal_use_with_the_public_EventEmitter' time='0.697'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__013__RealtimeClient__options__should_support_the_same_options_as_the_Rest_client' time='0.282'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__014__RealtimeClient__options__should_echoMessages_option_be_true_by_default' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__015__RealtimeClient__options__should_autoConnect_option_be_true_by_default' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__016__RealtimeClient__options__should_attempt_to_recover_the_connection_state_if_recover_string_is_assigned' time='0.559'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__017__RealtimeClient__options__should_modify_the_realtime_endpoint_host_if_realtimeHost_is_assigned' time='0.018'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__018__RealtimeClient__options__should_modify_both_the_REST_and_realtime_endpoint_if_environment_string_is_assigned' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__019__RealtimeClient__options__url_should_contains_transport_params' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__020__RealtimeClient__Auth_object__should_provide_access_to_the_Auth_object' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__021__RealtimeClient__Auth_object__clientId_may_be_populated_when_the_connection_is_established' time='0.311'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__022__RealtimeClient__stats__should_present_an_async_interface' time='0.299'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__024__RealtimeClient__time__should_present_an_async_interface' time='0.092'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__025__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__in_the_CONNECTED_state_and_auth_authorize_is_called__the_client_must_obtain_a_new_token__send_an_AUTH_ProtocolMessage_with_an_auth_attribute' time='0.708'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__026__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_authentication_token_change_is_successful__then_the_client_should_receive_a_new_CONNECTED_ProtocolMessage' time='0.530'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__027__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__performs_an_upgrade_of_capabilities_without_any_loss_of_continuity_or_connectivity_during_the_upgrade_process' time='0.685'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__028__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_capabilities_are_downgraded__client_should_receive_an_ERROR_ProtocolMessage_with_a_channel_property' time='0.606'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__029__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_authentication_token_change_fails__client_should_receive_an_ERROR_ProtocolMessage_triggering_the_connection_to_transition_to_the_FAILED_state' time='0.450'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__030__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_request_fails' time='0.374'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__031__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_be_indicated_as_completed_with_the_new_token_or_error_only_once_realtime_has_responded_to_the_AUTH_with_either_a_CONNECTED_or_ERROR_respectively' time='0.747'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__032__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_connection_is_CONNECTING__all_current_connection_attempts_should_be_halted__and_after_obtaining_a_new_token_the_library_should_immediately_initiate_a_connection_attempt_using_the_new_token' time='0.671'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__033__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_the_new_token_once_the_connection_has_moved_to_the_CONNECTED_state' time='0.463'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__034__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_connection_moves_to_the_FAILED_state' time='0.369'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__035__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_connection_moves_to_the_SUSPENDED_state' time='0.377'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__037__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_SUSPENDED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token' time='0.735'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__038__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_CLOSED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token' time='0.822'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__039__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_DISCONNECTED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token' time='0.752'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__040__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_FAILED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token' time='0.742'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__041__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_the_publish_and_indicate_an_error' time='0.294'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__042__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__enter_' time='0.280'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__043__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__leave_' time='0.278'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__044__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__update_' time='0.276'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__045__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__updateClient_' time='0.277'/>
    <testcase classname='Ably_tvOS_Tests.RealtimeClientTests' name='test__046__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__leaveClient_' time='0.296'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestClientChannelTests' tests='45' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__001__publish__should_not_fail_sending_a_message_with_no_clientId_in_the_client_options_and_credentials_that_can_assume_any_clientId' time='0.280'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__002__publish__should_provide_an_optional_argument_that_allows_the_clientId_value_to_be_specified' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__003__publish__should_provide_an_optional_argument_that_allows_the_extras_value_to_be_specified' time='0.361'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__004__publish__should_include_attributes_supplied_by_the_caller_in_the_encoded_message' time='0.098'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__005__publish__with_name_and_data_arguments__publishes_the_message_and_invokes_callback_with_success' time='0.184'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__006__publish__with_name_only__publishes_the_message_and_invokes_callback_with_success' time='0.183'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__007__publish__with_data_only__publishes_the_message_and_invokes_callback_with_success' time='0.182'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__008__publish__with_neither_name_nor_data__publishes_the_message_and_invokes_callback_with_success' time='0.215'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__009__publish__with_a_Message_object__publishes_the_message_and_invokes_callback_with_success' time='0.233'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__010__publish__with_an_array_of_Message_objects__publishes_the_messages_in_a_single_request_and_invokes_callback_with_success' time='0.204'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__011__publish__Unidentified_clients_using_Basic_Auth__should_publish_message_with_the_provided_clientId' time='0.248'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__012__publish__ClientOptions_clientId__should_include_the_clientId_as_a_querystring_parameter_in_realtime_connection_requests' time='0.350'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__013__publish__ClientOptions_clientId__should_include_an_X_Ably_ClientId_header_with_value_set_to_the_clientId_as_Base64_encoded_string_in_REST_connection_requests' time='0.176'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__014__publish__Message_clientId__publishing_with_no_clientId_when_the_clientId_is_set_to_some_value_in_the_client_options_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value' time='0.470'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__015__publish__Message_clientId__publishing_with_a_clientId_set_to_the_same_value_as_the_clientId_in_the_client_options_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value' time='0.494'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__016__publish__Message_clientId__publishing_with_a_clientId_set_to_a_value_from_an_unidentified_client_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value' time='0.450'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__017__publish__Message_clientId__publishing_with_a_clientId_set_to_a_different_value_from_the_clientId_in_the_client_options_should_result_in_a_message_being_rejected_by_the_server' time='0.359'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__018__publish__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_the_publish_and_indicate_an_error' time='0.024'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__019__publish__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__also_when_using_publish_data_clientId_extras' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__020__publish__idempotent_publishing__idempotentRestPublishing_option' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__021__publish__idempotent_publishing__should_not_generate_for_message_with_a_non_empty_id' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__022__publish__idempotent_publishing__should_generate_for_internal_message_that_is_created_in_publish_name_data___method' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__023__publish__idempotent_publishing__should_not_generate_for_multiple_messages_with_a_non_empty_id' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__024__publish__idempotent_publishing__should_not_generate_when_idempotentRestPublishing_flag_is_off' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__025__publish__idempotent_publishing__should_have_only_one_published_message' time='0.593'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__026__publish__idempotent_publishing__should_publish_a_message_with_implicit_Id_only_once' time='0.627'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__027__publish__idempotent_publishing__random_idempotent_publish_id__should_generate_for_one_message_with_empty_id' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__028__publish__idempotent_publishing__random_idempotent_publish_id__should_generate_for_multiple_messages_with_empty_id' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__029__history__should_return_a_PaginatedResult_page_containing_the_first_page_of_messages' time='0.092'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__030__history__query_arguments__start_and_end_should_filter_messages_between_those_two_times' time='0.629'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__031__history__query_arguments__start_must_be_equal_to_or_less_than_end_and_is_unaffected_by_the_request_direction' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__032__history__query_arguments__direction_backwards_or_forwards' time='0.180'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__033__history__query_arguments__limit_items_result' time='0.194'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__034__history__query_arguments__limit_supports_up_to_1000_items' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__036__message_encoding__payloads_should_be_binary__strings__or_objects_capable_of_JSON_representation' time='0.786'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__037__message_encoding__encoding_attribute_should_represent_the_encoding_s__applied_in_right_to_left' time='0.362'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__038__message_encoding__json__binary_payload_should_be_encoded_as_Base64_and_represented_as_a_JSON_string' time='0.106'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__039__message_encoding__json__string_payload_should_be_represented_as_a_JSON_string' time='0.101'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__040__message_encoding__json__messages_received_should_be_decoded_based_on_the_encoding_field' time='0.740'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__041__message_encoding__json__json_payload_should_be_stringified_either__as_a_JSON_Array' time='0.096'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__042__message_encoding__json__json_payload_should_be_stringified_either__as_a_JSON_Object' time='0.098'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__043__message_payload_encryption__should_support_AES_encryption__128_CBC_mode' time='0.186'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__044__message_payload_encryption__should_support_AES_encryption__256_CBC_mode' time='0.179'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__045__message_decoding__should_deliver_with_a_binary_payload_when_the_payload_was_successfully_decoded_but_it_could_not_be_decrypted' time='0.198'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelTests' name='test__046__message_decoding__should_deliver_with_encoding_attribute_set_indicating_the_residual_encoding_and_error_should_be_emitted' time='0.176'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestClientChannelsTests' tests='8' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__001__RestClient__channels__should_return_collection_of_channels' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__002__RestClient__channels__should_be_enumerable' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__003__RestClient__channels__get__should_return_a_channel' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__004__RestClient__channels__get__should_return_a_channel_with_the_provided_options' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__005__RestClient__channels__get__should_not_replace_the_options_on_an_existing_channel_when_none_are_provided' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__006__RestClient__channels__get__should_replace_the_options_on_an_existing_channel_when_new_ones_are_provided' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__007__RestClient__channels__channelExists__should_check_if_a_channel_exists' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientChannelsTests' name='test__008__RestClient__channels__releaseChannel__should_release_a_channel' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestClientPresenceTests' tests='9' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__001__Presence__presence_messages_retrieved_are_decoded_in_the_same_way_that_messages_are_decoded' time='0.671'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__003__Presence__get__limit_should_support_up_to_1000_items' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__004__Presence__get__clientId_should_filter_members_by_the_provided_clientId' time='0.556'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__005__Presence__get__connectionId_should_filter_members_by_the_provided_connectionId' time='3.140'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__006__Presence__history__should_return_a_PaginatedResult_page_containing_the_first_page_of_members' time='43.318'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__008__Presence__history__connectionId_should_filter_members_by_the_provided_connectionId' time='3.201'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__009__Presence__history__query_argument__limit_supports_up_to_1000_members' time='0.564'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__010__Presence__history__query_argument__start_and_end_should_filter_members_between_those_two_times' time='13.218'/>
    <testcase classname='Ably_tvOS_Tests.RestClientPresenceTests' name='test__011__Presence__history__query_argument__start_must_be_equal_to_or_less_than_end_and_is_unaffected_by_the_request_direction' time='0.002'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestClientStatsTests' tests='9' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__002__RestClient__stats__result__should_match_hour_level_inbound_and_outbound_fixture_data__forwards_' time='2.161'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__003__RestClient__stats__result__should_match_day_level_inbound_and_outbound_fixture_data__forwards_' time='2.163'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__006__RestClient__stats__result__should_contain_only_one_item_when_limit_is_1__forwards' time='1.936'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__007__RestClient__stats__result__should_be_paginated_according_to_the_limit__backwards' time='2.309'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__009__RestClient__stats__query__start__should_return_an_error_when_later_than_end' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__010__RestClient__stats__query__direction__should_be_backwards_by_default' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__011__RestClient__stats__query__limit__should_have_a_default_value_of_100' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__012__RestClient__stats__query__limit__should_return_an_error_when_greater_than_1000' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientStatsTests' name='test__013__RestClient__stats__query__unit__should_default_to_minute' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestClientTests' tests='96' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__001__RestClient__All_REST_requests_should_include_the_current_API_version' time='0.121'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__002__RestClient__should_provide_access_to_the_AuthOptions_object_passed_in_ClientOptions' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__003__RestClient__REST_endpoint_host_should_be_configurable_in_the_Client_constructor_with_the_option_restHost' time='0.025'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__004__RestClient__should_send_requests_over_http_and_https' time='0.488'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__005__RestClient__should_use_Auth_to_manage_authentication' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__006__RestClient__should_request_another_token_after_current_one_is_no_longer_valid' time='1.525'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__007__RestClient__should_result_in_an_error_when_user_does_not_have_sufficient_permissions' time='0.186'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__008__RestClient__should_use_MsgPack_binary_protocol' time='0.496'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__009__RestClient__should_use_JSON_text_protocol' time='0.457'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__010__RestClient__X_Ably_Version_must_be_included_in_all_REST_requests' time='0.109'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__011__RestClient__The_Agent_library_identifier_is_composed_of_a_series_of_key__value__entries_joined_by_spaces' time='0.098'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__012__RestClient__should_indicate_an_error_if_there_is_no_way_to_renew_the_token' time='0.318'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__013__RestClient__background_behaviour' time='0.815'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__014__RestClient__client_should_handle_error_messages_in_plaintext_and_HTML_format' time='0.049'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__015__RestClient__initializer__should_accept_an_API_key' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__016__RestClient__initializer__should_throw_when_provided_an_invalid_key' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__017__RestClient__initializer__should_result_in_error_status_when_provided_a_bad_key' time='0.062'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__018__RestClient__initializer__should_accept_a_token' time='0.094'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__019__RestClient__initializer__should_accept_an_options_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__020__RestClient__initializer__should_accept_an_options_object_with_token_authentication' time='0.312'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__021__RestClient__initializer__should_result_in_error_status_when_provided_a_bad_token' time='0.122'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__022__RestClient__logging__should_output_to_the_system_log_and_the_log_level_should_be_Warn' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__023__RestClient__logging__should_have_a_mutable_log_level' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__024__RestClient__logging__should_accept_a_custom_logger' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__025__RestClient__endpoint__should_accept_a_custom_host_and_send_requests_to_the_specified_host' time='0.011'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__027__RestClient__endpoint__should_accept_an_environment_when_restHost_is_left_unchanged' time='0.013'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__028__RestClient__endpoint__should_default_to_https___rest_ably_io' time='0.012'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__029__RestClient__endpoint__should_connect_over_plain_http____when_tls_is_off' time='0.118'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__030__RestClient__endpoint__should_not_prepend_the_environment_if_environment_is_configured_as__production_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__031__RestClient__should_use_the_the_connection_and_request_timeouts_specified__timeout_for_any_single_HTTP_request_and_response' time='1.014'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__032__RestClient__should_use_the_the_connection_and_request_timeouts_specified__max_number_of_fallback_hosts' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__033__RestClient__should_use_the_the_connection_and_request_timeouts_specified__max_elapsed_time_in_which_fallback_host_retries_for_HTTP_requests_will_be_attempted' time='0.428'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__034__RestClient__time__should_return_server_time' time='0.102'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__035__RestClient__Authentication__should_support_basic_authentication_when_an_API_key_is_provided_with_the_key_option' time='0.095'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__036__RestClient__Authentication__should_error_when_expired_token_and_no_means_to_renew' time='3.210'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__037__RestClient__Authentication__should_renew_the_token_when_it_has_expired' time='3.595'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__038__RestClient__Authentication__basic_authentication_flag__should_be_true_when_initialized_with_a_key' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__039__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__useTokenAuth_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__040__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__authUrl_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__041__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__authCallback_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__042__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__tokenDetails_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__043__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__token_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__044__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__key_is_set' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__045__RestClient__Host_Fallback__failing_HTTP_requests_with_custom_endpoint_should_result_in_an_error_immediately' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__046__RestClient__Host_Fallback__applies_when_ClientOptions_fallbackHostsUseDefault_is_true' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__047__RestClient__Host_Fallback__won_t_apply_fallback_hosts_if_ClientOptions_fallbackHosts_array_is_empty' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__048__RestClient__Host_Fallback__won_t_apply_custom_fallback_hosts_if_ClientOptions_fallbackHosts_and_ClientOptions_environment_are_not_set__use_defaults_instead' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__049__RestClient__Host_Fallback__every_new_HTTP_request_is_first_attempted_to_the_default_primary_host_rest_ably_io' time='1.197'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__050__RestClient__Host_Fallback__should_not_use_an_alternative_host_when_the_client_receives_an_bad_request' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__051__RestClient__Host_Fallback__fallbackHostsUseDefault_option__allows_the_default_fallback_hosts_to_be_used_when__environment__is_not_production' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__052__RestClient__Host_Fallback__fallbackHostsUseDefault_option__allows_the_default_fallback_hosts_to_be_used_when_a_custom_Realtime_or_REST_host_endpoint_is_being_used' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__053__RestClient__Host_Fallback__fallbackHostsUseDefault_option__should_be_inactive_by_default' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__054__RestClient__Host_Fallback__fallbackHostsUseDefault_option__should_never_accept_to_configure__fallbackHost__and_set__fallbackHostsUseDefault__to__true_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__055__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_restHost__port_and_tlsPort_has_not_been_set_to_an_explicit_value' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__056__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_restHost_has_been_set' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__057__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_port_has_been_set' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__058__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_tlsPort_has_been_set' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__059__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_ClientOptions_fallbackHosts_is_provided' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__060__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_ClientOptions_fallbackHosts_is_not_provided_and_deprecated_fallbackHostsUseDefault_is_on' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__061__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_ClientOptions_fallbackHosts_when_list_is_provided' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__062__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_environment_fallback_hosts_when_ClientOptions_environment_is_set_to_a_value_other_than__production__and_ClientOptions_fallbackHosts_is_not_set' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__063__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_NOT_use_environment_fallback_hosts_when_ClientOptions_environment_is_set_to__production_' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__064__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_default_fallback_hosts_when_both_ClientOptions_fallbackHosts_and_ClientOptions_environment_are_not_set' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__065__RestClient__Host_Fallback__retry_hosts_in_random_order__default_fallback_hosts_should_match__a_e__ably_realtime_com' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__066__RestClient__Host_Fallback__retry_hosts_in_random_order__environment_fallback_hosts_have_the_format__environment___a_e__fallback_ably_realtime_com' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__067__RestClient__Host_Fallback__retry_hosts_in_random_order__until_httpMaxRetryCount_has_been_reached' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__068__RestClient__Host_Fallback__retry_hosts_in_random_order__use_custom_fallback_hosts_if_set' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__069__RestClient__Host_Fallback__retry_hosts_in_random_order__until_all_fallback_hosts_have_been_tried' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__070__RestClient__Host_Fallback__retry_hosts_in_random_order__until_httpMaxRetryCount_has_been_reached__if_custom_fallback_hosts_are_provided_in_ClientOptions_fallbackHosts__then_they_will_be_used_instead' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__071__RestClient__Host_Fallback__retry_hosts_in_random_order__until_all_fallback_hosts_have_been_tried__if_custom_fallback_hosts_are_provided_in_ClientOptions_fallbackHosts__then_they_will_be_used_instead' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__072__RestClient__Host_Fallback__retry_hosts_in_random_order__all_fallback_requests_headers_should_contain__Host__header_with_fallback_host_address' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__073__RestClient__Host_Fallback__retry_hosts_in_random_order__if_an_empty_array_of_fallback_hosts_is_provided__then_fallback_host_functionality_is_disabled' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__074__RestClient__Host_Fallback__should_use_an_alternative_host_when___hostUnreachable' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__075__RestClient__Host_Fallback__should_use_an_alternative_host_when___requestTimeout_timeout__0_1_' time='0.112'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__076__RestClient__Host_Fallback__should_use_an_alternative_host_when___hostInternalError_code__501_' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__077__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___hostUnreachable' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__078__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___requestTimeout_timeout__0_1_' time='0.106'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__079__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___hostInternalError_code__501_' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__080__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___hostUnreachable' time='1.162'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__081__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___requestTimeout_timeout__0_1_' time='1.280'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__082__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___hostInternalError_code__501_' time='1.165'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__083__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___hostUnreachable' time='0.006'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__084__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___requestTimeout_timeout__0_1_' time='0.209'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__085__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___hostInternalError_code__501_' time='0.006'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__086__RestClient__request__method_signature_and_arguments__should_add_query_parameters' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__087__RestClient__request__method_signature_and_arguments__should_add_a_HTTP_body' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__088__RestClient__request__method_signature_and_arguments__should_add_a_HTTP_header' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__089__RestClient__request__method_signature_and_arguments__should_error_if_method_is_invalid' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__090__RestClient__request__method_signature_and_arguments__should_error_if_path_is_invalid' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__091__RestClient__request__method_signature_and_arguments__should_error_if_body_is_not_a_Dictionary_or_an_Array' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__092__RestClient__request__method_signature_and_arguments__should_do_a_request_and_receive_a_valid_response' time='0.190'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__093__RestClient__request__method_signature_and_arguments__should_handle_response_failures' time='0.190'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__094__RestClient__if_in_the_course_of_a_REST_request_an_attempt_to_authenticate_using_authUrl_fails_due_to_a_timeout__the_request_should_result_in_an_error_with_code_40170__statusCode_401__and_a_suitable_error_message' time='3.110'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__095__RestClient__request_IDs__should_add__request_id__query_parameter' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__096__RestClient__request_IDs__should_remain_the_same_if_a_request_is_retried_to_a_fallback_host' time='0.009'/>
    <testcase classname='Ably_tvOS_Tests.RestClientTests' name='test__097__RestClient__request_IDs__ErrorInfo_should_have__requestId__property' time='0.002'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.RestPaginatedTests' tests='2' failures='0'>
    <testcase classname='Ably_tvOS_Tests.RestPaginatedTests' name='test__001__RestPaginated__should_extract_links_from_the_response' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.RestPaginatedTests' name='test__002__RestPaginated__should_create_next_first_last_request_from_extracted_link_path' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.StatsTests' tests='38' failures='0'>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__001__Stats__all__should_return_a_MessagesTypes_object' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__002__Stats__all__should_return_value_for_message_counts' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__003__Stats__all__should_return_value_for_all_data_transferred' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__004__Stats__all__should_return_zero_for_empty_values' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__005__Stats__persisted__should_return_a_MessagesTypes_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__006__Stats__persisted__should_return_value_for_message_counts' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__007__Stats__persisted__should_return_value_for_all_data_transferred' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__008__Stats__persisted__should_return_zero_for_empty_values' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__009__Stats__inbound__should_return_a_MessageTraffic_object' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__010__Stats__inbound__should_return_value_for_realtime_message_counts' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__011__Stats__inbound__should_return_value_for_all_presence_data' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__012__Stats__outbound__should_return_a_MessageTraffic_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__013__Stats__outbound__should_return_value_for_realtime_message_counts' time='0.005'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__014__Stats__outbound__should_return_value_for_all_presence_data' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__015__Stats__connections__should_return_a_ConnectionTypes_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__016__Stats__connections__should_return_value_for_tls_opened_counts' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__017__Stats__connections__should_return_value_for_all_peak_connections' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__018__Stats__connections__should_return_zero_for_empty_values' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__019__Stats__channels__should_return_a_ResourceCount_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__020__Stats__channels__should_return_value_for_opened_counts' time='0.004'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__021__Stats__channels__should_return_value_for_peak_channels' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__022__Stats__channels__should_return_zero_for_empty_values' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__023__Stats__apiRequests__should_return_a_RequestCount_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__024__Stats__apiRequests__should_return_value_for_succeeded' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__025__Stats__apiRequests__should_return_value_for_failed' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__026__Stats__tokenRequests__should_return_a_RequestCount_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__027__Stats__tokenRequests__should_return_value_for_succeeded' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__028__Stats__tokenRequests__should_return_value_for_failed' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__029__Stats__interval__should_return_a_Date_object_representing_the_start_of_the_interval' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__030__Stats__push__should_return_a_ARTStatsPushCount_object' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__031__Stats__push__should_return_value_for_messages_count' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__032__Stats__push__should_return_value_for_invalid_notifications' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__033__Stats__push__should_return_value_for_attempted_notifications' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__034__Stats__push__should_return_value_for_successful_notifications' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__035__Stats__push__should_return_value_for_failed_notifications' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__036__Stats__push__should_return_value_for_directPublishes' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__037__Stats__inProgress__should_return_a_Date_object_representing_the_last_sub_interval_included_in_this_statistic' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.StatsTests' name='test__038__Stats__count__should_return_value_for_number_of_lower_level_stats' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.StringifiableTests' tests='9' failures='0'>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__001__Stringifiable__type_conversion__as_string' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__002__Stringifiable__type_conversion__as_bool__true_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__003__Stringifiable__type_conversion__as_bool__false_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__004__Stringifiable__type_conversion__as_integer_that_is_not_treated_as_bool__false_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__005__Stringifiable__type_conversion__as_integer_that_is_not_treated_as_bool__true_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__006__Stringifiable__type_conversion__as_number__Int_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__007__Stringifiable__type_conversion__as_number__Float_1_decimal_digit_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__008__Stringifiable__type_conversion__as_number__Float_2_decimal_digits_' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.StringifiableTests' name='test__009__Stringifiable__type_conversion__as_number__Float_4_decimal_digits_' time='0.001'/>
  </testsuite>
  <testsuite name='Ably_tvOS_Tests.UtilitiesTests' tests='23' failures='0'>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__001__Utilities__JSON_Encoder__should_decode_a_protocol_message_that_has_an_error_without_a_message' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__002__Utilities__JSON_Encoder__should_encode_a_protocol_message_that_has_invalid_data' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__003__Utilities__JSON_Encoder__should_decode_data_with_malformed_JSON' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__004__Utilities__JSON_Encoder__should_decode_data_with_malformed_MsgPack' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__005__Utilities__JSON_Encoder__in_Realtime__should_handle_and_emit_the_invalid_data_error' time='0.007'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__006__Utilities__JSON_Encoder__in_Realtime__should_ignore_invalid_transport_message' time='0.364'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__007__Utilities__JSON_Encoder__in_Rest__should_handle_and_emit_the_invalid_data_error' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__008__Utilities__JSON_Encoder__in_Rest__should_ignore_invalid_response_payload' time='0.003'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__009__Utilities__EventEmitter__should_emit_events_to_all_relevant_listeners' time='0.002'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__010__Utilities__EventEmitter__should_only_call_once_listeners_once_for_its_event' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__011__Utilities__EventEmitter__calling_off_with_a_single_listener_argument__should_stop_receiving_events_when_calling_off_with_a_single_listener_argument' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__013__Utilities__EventEmitter__calling_off_with_listener_and_event_arguments__should_still_receive_events_if_off_doesn_t_match_the_listener_s_criteria' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__014__Utilities__EventEmitter__calling_off_with_listener_and_event_arguments__should_stop_receive_events_if_off_matches_the_listener_s_criteria' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__015__Utilities__EventEmitter__calling_off_with_no_arguments__should_remove_all_listeners' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__016__Utilities__EventEmitter__calling_off_with_no_arguments__should_allow_listening_again' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__017__Utilities__EventEmitter__calling_off_with_no_arguments__should_remove_all_timeouts' time='0.159'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__018__Utilities__EventEmitter__the_timed_method__should_not_call_onTimeout_if_the_deadline_isn_t_reached' time='0.316'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__019__Utilities__EventEmitter__the_timed_method__should_call_onTimeout_and_off_the_listener_if_the_deadline_is_reached' time='0.358'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__020__Utilities__EventEmitter__set_of_listeners__should_not_change_over_the_course_of_the_emit' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__021__Utilities__Logger__should_have_a_history_of_logs' time='0.356'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__022__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name_and_data' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__023__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name__data_and_extras' time='0.001'/>
    <testcase classname='Ably_tvOS_Tests.UtilitiesTests' name='test__024__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name__data__clientId_and_extras' time='0.002'/>
  </testsuite>
</testsuites>