<testsuite name="rspec1" tests="681" skipped="0" failures="0" errors="0" time="2.064105" timestamp="2026-10-13T15:35:48+00:00" hostname="runnervmmprz5">
<properties>
<property name="seed" value="19905"/>
</properties>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#initialize should subscribe to protocol messages from the connection" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.005607"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#dispatch_protocol_message should warn if a message is received for a non-existent channel" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.003202"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#dispatch_protocol_message should raise an exception if a message is sent that is not a ProtocolMessage" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001974"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with a regular message (no action) succeeds the message with itself" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001720"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with symbol-keyed publish_result handles symbol keys for serials" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.002043"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with multiple update messages and a publish_result with multiple serials assigns the correct version serial to each message by index" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001663"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with multiple regular messages and publish_result assigns the correct serial to each message by index" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001666"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with a MESSAGE_UPDATE action and publish_result succeeds with an UpdateDeleteResult" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.005949"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with a regular message and symbol-keyed publish_result handles symbol keys for serials" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001603"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with a regular message and publish_result (PublishResult) succeeds with a PublishResult" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001451"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with a MESSAGE_UPDATE action but no publish_result succeeds the message with itself (fallback)" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001367"></testcase>
<testcase classname="spec.unit.realtime.incoming_message_dispatcher_spec" name="Ably::PubSub::Realtime::Client::IncomingMessageDispatcher#ack_messages with presence messages succeeds with the message itself (no publish_result handling)" file="./spec/unit/realtime/incoming_message_dispatcher_spec.rb" time="0.001520"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#to_json with valid data converts the attribute back to Java mixedCase notation using string keys" file="./spec/unit/models/message_spec.rb" time="0.000967"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#to_json with binary data adds Base64 encoding" file="./spec/unit/models/message_spec.rb" time="0.001224"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#to_json with binary data encodes as Base64 so that it can be converted to UTF-8 automatically by JSON#dump" file="./spec/unit/models/message_spec.rb" time="0.001011"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Java naming converts the attribute to ruby symbol naming convention" file="./spec/unit/models/message_spec.rb" time="0.001157"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#created_at returns a Time object" file="./spec/unit/models/message_spec.rb" time="0.001128"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#created_at when not present returns nil" file="./spec/unit/models/message_spec.rb" time="0.001599"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with a Cipher encoding returns a message object with the residual incompatible transforms left in the encoding property" file="./spec/unit/models/message_spec.rb" time="0.001618"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with invalid Cipher encoding with a block calls the block with the exception" file="./spec/unit/models/message_spec.rb" time="0.001308"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with invalid Cipher encoding without a block raises an exception" file="./spec/unit/models/message_spec.rb" time="0.001564"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with an encoding returns a message object" file="./spec/unit/models/message_spec.rb" time="0.001395"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with a custom encoding returns a message object with the residual incompatible transforms left in the encoding property" file="./spec/unit/models/message_spec.rb" time="0.001473"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with no encoding returns a message object" file="./spec/unit/models/message_spec.rb" time="0.001346"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded (#TM3) with no encoding with a block does not call the block" file="./spec/unit/models/message_spec.rb" time="0.001392"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#id (#RSL1j) #as_json exposes the #id attribute" file="./spec/unit/models/message_spec.rb" time="0.001011"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#id (#RSL1j) exposes the #id attribute" file="./spec/unit/models/message_spec.rb" time="0.001113"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#version (#TM2s) returns the version attribute" file="./spec/unit/models/message_spec.rb" time="0.001425"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#version (#TM2s) when not present returns nil" file="./spec/unit/models/message_spec.rb" time="0.001123"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#updated_at returns a Time object" file="./spec/unit/models/message_spec.rb" time="0.001007"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#updated_at when not present returns nil" file="./spec/unit/models/message_spec.rb" time="0.001169"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message from REST request with embedded fields without protocol message #id uses embedded ID" file="./spec/unit/models/message_spec.rb" time="0.001103"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message from REST request with embedded fields without protocol message #timestamp uses embedded timestamp" file="./spec/unit/models/message_spec.rb" time="0.001652"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message from REST request with embedded fields with protocol message #id prefers embedded ID" file="./spec/unit/models/message_spec.rb" time="0.001183"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message from REST request with embedded fields with protocol message #timestamp prefers embedded timestamp" file="./spec/unit/models/message_spec.rb" time="0.001264"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json with action converts action to integer" file="./spec/unit/models/message_spec.rb" time="0.001287"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json with action includes name" file="./spec/unit/models/message_spec.rb" time="0.001083"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json without action does not include action key" file="./spec/unit/models/message_spec.rb" time="0.004044"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json excludes nil values does not include nil attributes" file="./spec/unit/models/message_spec.rb" time="0.000941"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json with serial and version includes serial" file="./spec/unit/models/message_spec.rb" time="0.000964"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#as_json with serial and version includes version" file="./spec/unit/models/message_spec.rb" time="0.001108"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#from_encoded_array (#TM3) with no encoding returns an Array of message objects" file="./spec/unit/models/message_spec.rb" time="0.001364"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model #== is false when attributes are not the same" file="./spec/unit/models/message_spec.rb" time="0.001080"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model #== is true when attributes are the same" file="./spec/unit/models/message_spec.rb" time="0.001016"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model #== is false when class type differs" file="./spec/unit/models/message_spec.rb" time="0.001079"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #[] provides accessor method to #attributes" file="./spec/unit/models/message_spec.rb" time="0.000891"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #name retrieves attribute :name" file="./spec/unit/models/message_spec.rb" time="0.001028"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #attributes provides access to #attributes" file="./spec/unit/models/message_spec.rb" time="0.000945"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #id retrieves attribute :id" file="./spec/unit/models/message_spec.rb" time="0.000947"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #client_id retrieves attribute :client_id" file="./spec/unit/models/message_spec.rb" time="0.001181"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #encoding retrieves attribute :encoding" file="./spec/unit/models/message_spec.rb" time="0.001159"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model attributes #data retrieves attribute :data" file="./spec/unit/models/message_spec.rb" time="0.001013"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model #to_msgpack returns a msgpack object with Ably payload naming" file="./spec/unit/models/message_spec.rb" time="0.002527"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model is immutable dups options" file="./spec/unit/models/message_spec.rb" time="0.000949"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model is immutable prevents changes" file="./spec/unit/models/message_spec.rb" time="0.001069"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message serialization of the Message object (#RSL1j) behaves like a model #to_json returns a JSON string with Ably payload naming" file="./spec/unit/models/message_spec.rb" time="0.001085"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message without ProtocolMessage has no ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000696"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message without ProtocolMessage initializes with the JSON" file="./spec/unit/models/message_spec.rb" time="0.000800"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message without ProtocolMessage raises an exception when accessing ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000748"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message without ProtocolMessage returns a Message object" file="./spec/unit/models/message_spec.rb" time="0.000694"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message with ProtocolMessage has a ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000837"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message with ProtocolMessage initializes with the JSON" file="./spec/unit/models/message_spec.rb" time="0.000918"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message with ProtocolMessage returns a Message object" file="./spec/unit/models/message_spec.rb" time="0.000763"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with another Message with ProtocolMessage provides access to ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000853"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON with ProtocolMessage has a ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000764"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON with ProtocolMessage initializes with the JSON" file="./spec/unit/models/message_spec.rb" time="0.000803"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON with ProtocolMessage returns a Message object" file="./spec/unit/models/message_spec.rb" time="0.000901"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON with ProtocolMessage provides access to ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.001005"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON without ProtocolMessage raises an exception when accessing ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.001132"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON without ProtocolMessage returns a Message object" file="./spec/unit/models/message_spec.rb" time="0.000806"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON without ProtocolMessage has no ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000719"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message Message conversion method with JSON without ProtocolMessage initializes with the JSON" file="./spec/unit/models/message_spec.rb" time="0.002645"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#size String (#TO3l8a) should return 33 bytes" file="./spec/unit/models/message_spec.rb" time="0.000869"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#size nil (#TO3l8e) should return 19 bytes" file="./spec/unit/models/message_spec.rb" time="0.000876"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#size Object (#TO3l8b) should return 38 bytes" file="./spec/unit/models/message_spec.rb" time="0.000863"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#size Array (#TO3l8b) should return 24 bytes" file="./spec/unit/models/message_spec.rb" time="0.000783"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#size extras (#TO3l8d) should return 57 bytes" file="./spec/unit/models/message_spec.rb" time="0.001094"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as UTF_8 string is permitted" file="./spec/unit/models/message_spec.rb" time="0.000856"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as UTF_8 string remains as UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000808"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as Integer raises an argument error" file="./spec/unit/models/message_spec.rb" time="0.000756"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as ASCII_8BIT string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000822"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as ASCII_8BIT string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000693"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as SHIFT_JIS string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.001364"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as SHIFT_JIS string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000819"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :encoding as Nil is permitted" file="./spec/unit/models/message_spec.rb" time="0.000803"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as ASCII_8BIT string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000795"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as ASCII_8BIT string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000806"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as Integer raises an argument error" file="./spec/unit/models/message_spec.rb" time="0.000705"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as SHIFT_JIS string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000744"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as SHIFT_JIS string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000843"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as Nil is permitted" file="./spec/unit/models/message_spec.rb" time="0.000729"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as UTF_8 string remains as UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000848"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :name as UTF_8 string is permitted" file="./spec/unit/models/message_spec.rb" time="0.000749"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as UTF_8 string remains as UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000893"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as UTF_8 string is permitted" file="./spec/unit/models/message_spec.rb" time="0.000741"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as SHIFT_JIS string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000780"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as SHIFT_JIS string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000858"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as Integer raises an argument error" file="./spec/unit/models/message_spec.rb" time="0.000848"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as Nil is permitted" file="./spec/unit/models/message_spec.rb" time="0.000761"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as ASCII_8BIT string gets converted to UTF-8" file="./spec/unit/models/message_spec.rb" time="0.000835"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message initialized with :client_id as ASCII_8BIT string is compatible with original encoding" file="./spec/unit/models/message_spec.rb" time="0.000738"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#protocol_message_index (#RTL21) should return correct protocol_message_index" file="./spec/unit/models/message_spec.rb" time="0.001458"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message part of ProtocolMessage should not modify the data payload" file="./spec/unit/models/message_spec.rb" time="0.000945"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message part of ProtocolMessage should generate a message ID from the index, serial and connection id" file="./spec/unit/models/message_spec.rb" time="0.001043"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message part of ProtocolMessage should not allow changes to the payload" file="./spec/unit/models/message_spec.rb" time="0.000912"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message part of ProtocolMessage with identical message objects provide a unique ID:index" file="./spec/unit/models/message_spec.rb" time="0.003136"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message part of ProtocolMessage with identical message objects recognises the index based on the object ID as opposed to message payload" file="./spec/unit/models/message_spec.rb" time="0.002062"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#timestamp retrieves attribute :timestamp as Time object from ProtocolMessage" file="./spec/unit/models/message_spec.rb" time="0.000980"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#delta_extras (TM2i) when no delta should return nil" file="./spec/unit/models/message_spec.rb" time="0.001152"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#delta_extras (TM2i) when delta should return 1234-1234-5678-9009 message id" file="./spec/unit/models/message_spec.rb" time="0.000923"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#delta_extras (TM2i) when delta should return vcdiff format" file="./spec/unit/models/message_spec.rb" time="0.000947"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#serial (#TM2r) returns the serial attribute" file="./spec/unit/models/message_spec.rb" time="0.001101"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#serial (#TM2r) when not present returns nil" file="./spec/unit/models/message_spec.rb" time="0.001160"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) when action is not present returns nil" file="./spec/unit/models/message_spec.rb" time="0.001135"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has message_update as 1" file="./spec/unit/models/message_spec.rb" time="0.000850"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has message_summary as 4" file="./spec/unit/models/message_spec.rb" time="0.000723"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has meta as 3" file="./spec/unit/models/message_spec.rb" time="0.000957"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has message_delete as 2" file="./spec/unit/models/message_spec.rb" time="0.000881"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has message_append as 5" file="./spec/unit/models/message_spec.rb" time="0.000739"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) ACTION enum values (#TM5) has message_create as 0" file="./spec/unit/models/message_spec.rb" time="0.000946"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) when action is present returns the action as an ACTION enum" file="./spec/unit/models/message_spec.rb" time="0.001158"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) when action is present can be compared with an integer" file="./spec/unit/models/message_spec.rb" time="0.000862"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#action (#TM2j) when action is present can be compared with a symbol" file="./spec/unit/models/message_spec.rb" time="0.001042"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#connection_id attribute when this model has a connectionId attribute with a protocol message with a different connectionId uses the model value" file="./spec/unit/models/message_spec.rb" time="0.001138"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#connection_id attribute when this model has a connectionId attribute but no protocol message uses the model value" file="./spec/unit/models/message_spec.rb" time="0.000996"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#connection_id attribute when this model has no connectionId attribute with a protocol message with a connectionId uses the model value" file="./spec/unit/models/message_spec.rb" time="0.001051"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#connection_id attribute when this model has no connectionId attribute and no protocol message uses the model value" file="./spec/unit/models/message_spec.rb" time="0.001181"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#extras (#TM2i) when a Json Array contains a Json Array object" file="./spec/unit/models/message_spec.rb" time="0.000758"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#extras (#TM2i) when missing is nil" file="./spec/unit/models/message_spec.rb" time="0.000709"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#extras (#TM2i) when a string raises an exception" file="./spec/unit/models/message_spec.rb" time="0.001277"></testcase>
<testcase classname="spec.unit.models.message_spec" name="Ably::Models::Message#extras (#TM2i) when a Hash contains a Hash Json object" file="./spec/unit/models/message_spec.rb" time="0.000992"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model #to_msgpack returns a msgpack object with Ably payload naming" file="./spec/unit/models/error_info_spec.rb" time="0.000718"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model #== is false when attributes are not the same" file="./spec/unit/models/error_info_spec.rb" time="0.000637"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model #== is true when attributes are the same" file="./spec/unit/models/error_info_spec.rb" time="0.000921"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model #== is false when class type differs" file="./spec/unit/models/error_info_spec.rb" time="0.000938"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model is immutable prevents changes" file="./spec/unit/models/error_info_spec.rb" time="0.001105"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model is immutable dups options" file="./spec/unit/models/error_info_spec.rb" time="0.000794"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #message retrieves attribute :message" file="./spec/unit/models/error_info_spec.rb" time="0.000852"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #request_id retrieves attribute :request_id" file="./spec/unit/models/error_info_spec.rb" time="0.001146"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #[] provides accessor method to #attributes" file="./spec/unit/models/error_info_spec.rb" time="0.000882"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #href retrieves attribute :href" file="./spec/unit/models/error_info_spec.rb" time="0.000752"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #status_code retrieves attribute :status_code" file="./spec/unit/models/error_info_spec.rb" time="0.000971"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #code retrieves attribute :code" file="./spec/unit/models/error_info_spec.rb" time="0.001202"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #attributes provides access to #attributes" file="./spec/unit/models/error_info_spec.rb" time="0.003082"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model attributes #cause retrieves attribute :cause" file="./spec/unit/models/error_info_spec.rb" time="0.001094"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#TI1, #TI4 behaves like a model #to_json returns a JSON string with Ably payload naming" file="./spec/unit/models/error_info_spec.rb" time="0.001141"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#status #TI1, #TI2 is an alias for #status_code" file="./spec/unit/models/error_info_spec.rb" time="0.000892"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#request_id #RSC7c should return request ID" file="./spec/unit/models/error_info_spec.rb" time="0.001003"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo log entries container help link #TI5 without an error code does not include the help URL" file="./spec/unit/models/error_info_spec.rb" time="0.001039"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo log entries container help link #TI5 with an error code and a message with a different error URL includes the specified error URL from the message and the error code URL in the stringified object" file="./spec/unit/models/error_info_spec.rb" time="0.001698"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo log entries container help link #TI5 with an error code and an href attribute includes the specified href in the stringified object" file="./spec/unit/models/error_info_spec.rb" time="0.001320"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo log entries container help link #TI5 with an error code and a message with the same error URL includes the specified error URL only once in the stringified object" file="./spec/unit/models/error_info_spec.rb" time="0.001176"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo log entries container help link #TI5 with a specified error code includes https://help.ably.io/error/[CODE] in the stringified object" file="./spec/unit/models/error_info_spec.rb" time="0.001087"></testcase>
<testcase classname="spec.unit.models.error_info_spec" name="Ably::Models::ErrorInfo#cause #TI1 should return cause attribute" file="./spec/unit/models/error_info_spec.rb" time="0.001020"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items Array conversion and nil handling #HP3 with empty response is an array" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001340"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items Array conversion and nil handling #HP3 with nil response is an array" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001167"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items Array conversion and nil handling #HP3 with Json Array is an array" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001429"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items Array conversion and nil handling #HP3 with Json Object is an array" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001203"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with non paged http response is the last page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001386"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with non paged http response returns nil when accessing first page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001290"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with non paged http response does not have next page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001161"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with non paged http response returns nil when accessing next page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001296"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with non paged http response does not support pagination" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001149"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response has next page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001473"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response supports pagination" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001470"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response is not the last page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001551"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page does not have a next page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001588"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page returns another HttpPaginatedResponse" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001461"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page returns nil when trying to access the last page when it is the last page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001634"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page is the last page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001639"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page retrieves the next page of results" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001486"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page and then first page returns a HttpPaginatedResponse" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001558"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 with paged http response accessing next page and then first page retrieves the first page of results" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001491"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items is iterable" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001210"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items #last gets the last item in page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001204"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items provides [] accessor method" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001242"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items returns correct length from body" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001127"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items #first gets the first item in page" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.002706"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items is Enumerable" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000866"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items #each returns an enumerator" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000913"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items #each yields each item" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001037"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 #items with coercion returns coerced objects" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001022"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata successful response #error_code to be empty" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000968"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata successful response #success? is true" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001004"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata successful response #status_code reflects status code" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000911"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata successful response #headers to be a hash" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001041"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata successful response #error_message to be empty" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000885"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata failed response #error_code to be populated" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000920"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata failed response #status_code reflects status code" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000987"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata failed response #success? is false" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001019"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata failed response #headers to be present" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000910"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 response metadata failed response #error_message to be populated" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.000961"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 paged transformations with option async_blocking_operations: true #next returns a SafeDeferrable that catches exceptions in callbacks and logs them" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.007100"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 paged transformations with option async_blocking_operations: true #next allows a success callback block to be added" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.003004"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 paged transformations with option async_blocking_operations: true #first calls the errback callback when first page headers are missing" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.002125"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 paged transformations with each block calls the block for each result after retrieving the results" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001086"></testcase>
<testcase classname="spec.unit.models.http_paginated_result_spec" name="Ably::Models::HttpPaginatedResponse: #HP1 -&gt; #HP8 paged transformations with each block calls the block for each result on second page after retrieving the results" file="./spec/unit/models/http_paginated_result_spec.rb" time="0.001167"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper #attributes returns raw Hash object" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000615"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper provides accessor set method to values using snake_case" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000643"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper provides methods to read values using snake_case" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000685"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper provides accessor method to values using snake_case" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000622"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper provides methods to write values using snake_case" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000781"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper does not provide methods for keys that are missing" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000739"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper recursively wrapping child objects wraps Hashes" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000712"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper recursively wrapping child objects ignores arrays" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000710"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper recursively wrapping child objects :stop_at option with symbol does not wrap the matching key" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000796"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper recursively wrapping child objects :stop_at option with string does not wrap the matching key" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000666"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData returns nil for non existent keys" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000833"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData symbol allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000631"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData symbol updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000723"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData symbol updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.001032"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_string allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000672"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_string updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.002598"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_string updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000802"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_string allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000635"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_string updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000868"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_string updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000770"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_symbol allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000727"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_symbol updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000747"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData lower_case_symbol updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000887"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData new keys uses mixedCase" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000703"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_symbol allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000617"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_symbol updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000636"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_symbol updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000819"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_symbol allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000676"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_symbol updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000775"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData camel_case_symbol updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000913"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_string allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000580"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_string updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000611"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData snake_case_string updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000824"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_string allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000700"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_string updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000902"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_string updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000869"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_symbol allows access to non conformant keys but prefers correct mixedCaseSyntax" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000962"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_symbol updates returns the new value in the JSON" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000841"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper non standard mixedCaseData mixed_case_symbol updates returns the new value" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000808"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper Kernel.Array like method to create a IdiomaticRubyWrapper will return the same IdiomaticRubyWrapper if passed in" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000673"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper Kernel.Array like method to create a IdiomaticRubyWrapper will return the same IdiomaticRubyWrapper if passed in" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000703"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck returns correct size" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000691"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck is Enumerable" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000641"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck supports Hash-like #keys" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000655"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_json returns child JSON objects in the JSON stringified" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000698"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck supports Hash-like #values" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000774"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_json returns JSON stringified" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000802"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #dup keeps the stop_at list intact" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000838"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #dup returns a new object with the underlying JSON duped" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000731"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #dup returns a new IdiomaticRubyWrapper with the same underlying Hash object" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000748"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_json with changes returns stringified JSON with changes" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000957"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_hash converts hashes within hashes" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000756"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_hash returns a hash" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000854"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #== returns false if comparing with a non Hash/IdiomaticRubyWrapper object" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000640"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #== returns false if different values to another IdiomaticRubyWrapper" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000724"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #== presents itself as a symbolized version of the object" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000701"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #== returns false if different values to another Hash" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000595"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #== compares with itself" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000745"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #to_msgpack returns a msgpack object" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000759"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck iterable yields key value pairs" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000704"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck iterable #each yields key value pairs" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000846"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck iterable #each returns an enumerator" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000706"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck with snake case JSON #to_json uses mixedCase for any non mixedCase keys" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000685"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #fetch fetches the key" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000659"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #fetch allows a default value argument" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000786"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #fetch raise an exception if key does not exist" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000689"></testcase>
<testcase classname="spec.unit.models.idiomatic_ruby_wrapper_spec" name="Ably::Models::IdiomaticRubyWrapper acts like a duck #fetch calls the block if key does not exist" file="./spec/unit/models/idiomatic_ruby_wrapper_spec.rb" time="0.000647"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#subscribers should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000720"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#presence_connections should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000619"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#publishers should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000645"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#presence_subscribers should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000649"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#connections should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000639"></testcase>
<testcase classname="spec.unit.models.channel_metrics_spec" name="Ably::Models::ChannelMetrics#presence_members should return integer" file="./spec/unit/models/channel_metrics_spec.rb" time="0.000663"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model #to_json returns a JSON string with Ably payload naming" file="./spec/unit/models/connection_details_spec.rb" time="0.001007"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model #== is true when attributes are the same" file="./spec/unit/models/connection_details_spec.rb" time="0.001094"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model #== is false when attributes are not the same" file="./spec/unit/models/connection_details_spec.rb" time="0.001029"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model #== is false when class type differs" file="./spec/unit/models/connection_details_spec.rb" time="0.000796"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model #to_msgpack returns a msgpack object with Ably payload naming" file="./spec/unit/models/connection_details_spec.rb" time="0.000957"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model is immutable prevents changes" file="./spec/unit/models/connection_details_spec.rb" time="0.000950"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model is immutable dups options" file="./spec/unit/models/connection_details_spec.rb" time="0.000865"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #max_message_size retrieves attribute :max_message_size" file="./spec/unit/models/connection_details_spec.rb" time="0.000875"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #max_frame_size retrieves attribute :max_frame_size" file="./spec/unit/models/connection_details_spec.rb" time="0.000832"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #max_inbound_rate retrieves attribute :max_inbound_rate" file="./spec/unit/models/connection_details_spec.rb" time="0.000887"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #client_id retrieves attribute :client_id" file="./spec/unit/models/connection_details_spec.rb" time="0.000913"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #connection_key retrieves attribute :connection_key" file="./spec/unit/models/connection_details_spec.rb" time="0.001145"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #[] provides accessor method to #attributes" file="./spec/unit/models/connection_details_spec.rb" time="0.001024"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails behaves like a model attributes #attributes provides access to #attributes" file="./spec/unit/models/connection_details_spec.rb" time="0.001065"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails ConnectionDetails conversion methods with a ConnectionDetails object returns the ConnectionDetails object" file="./spec/unit/models/connection_details_spec.rb" time="0.002966"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails ConnectionDetails conversion methods with a JSON object returns a new ConnectionDetails object from the JSON" file="./spec/unit/models/connection_details_spec.rb" time="0.001232"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails attributes #max_idle_interval (#CD2h) retrieves attribute :max_idle_interval and converts it from ms to s" file="./spec/unit/models/connection_details_spec.rb" time="0.001037"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails attributes #connection_state_ttl (#CD2f) retrieves attribute :connection_state_ttl and converts it from ms to s" file="./spec/unit/models/connection_details_spec.rb" time="0.000872"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails == is false when attributes are not the same" file="./spec/unit/models/connection_details_spec.rb" time="0.001210"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails == is true when attributes are the same" file="./spec/unit/models/connection_details_spec.rb" time="0.002145"></testcase>
<testcase classname="spec.unit.models.connection_details_spec" name="Ably::Models::ConnectionDetails == is false when class type differs" file="./spec/unit/models/connection_details_spec.rb" time="0.001505"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#attributes returns the underlying attributes" file="./spec/unit/models/publish_result_spec.rb" time="0.001111"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#attributes prevents modification" file="./spec/unit/models/publish_result_spec.rb" time="0.000850"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#serials (#RSL1n) when nil returns empty array" file="./spec/unit/models/publish_result_spec.rb" time="0.000872"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#serials (#RSL1n) when not provided returns empty array" file="./spec/unit/models/publish_result_spec.rb" time="0.000711"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#serials (#RSL1n) with nullable entries preserves nil entries" file="./spec/unit/models/publish_result_spec.rb" time="0.000642"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#serials (#RSL1n) when present returns the serials array" file="./spec/unit/models/publish_result_spec.rb" time="0.000786"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult#serials (#RSL1n) when empty array returns empty array" file="./spec/unit/models/publish_result_spec.rb" time="0.000793"></testcase>
<testcase classname="spec.unit.models.publish_result_spec" name="Ably::Models::PublishResult truthiness is truthy for backward compatibility with boolean publish returns" file="./spec/unit/models/publish_result_spec.rb" time="0.000797"></testcase>
<testcase classname="spec.unit.http.http_spec" name="Ably::PubSub::Http constructor refuses and points at the factory function" file="./spec/unit/http/http_spec.rb" time="0.000846"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with AES-256-CBC message with cipher payload strips the encoding" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001312"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with AES-256-CBC message with cipher payload decodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001467"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC with invalid cipher data raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001671"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with cipher payload before other payloads strips the encoding" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001619"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with cipher payload before other payloads decodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001324"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with cipher payload strips the encoding" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001480"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with cipher payload decodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001288"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with another payload leaves the message data intact" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000854"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with another payload leaves the encoding intact" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000876"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with binary payload returns ASCII_8BIT encoded binary data" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001347"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with binary payload strips the encoding" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001119"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC valid cipher data message with binary payload decodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001069"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC 256 bit key without any configured encryption raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000818"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#decode with channel set up for AES-128-CBC 256 bit key with invalid channel_option cipher params raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.002588"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with string payload encodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001332"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with string payload adds the encoding with utf-8" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000921"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with json payload adds the encoding with utf-8" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000991"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with json payload encodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001067"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true with encryption set to to false leaves message intact as encryption is not enable" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000811"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true with encryption set to to false leaves encoding intact" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000803"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with binary payload adds the encoding without utf-8 prefixed" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000923"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with binary payload encodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001106"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with binary payload returns ASCII_8BIT encoded binary data" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000955"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with existing cipher encoding before leaves encoding intact" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000741"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC with encrypted set to true message with existing cipher encoding before leaves message intact as it is already encrypted" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000755"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC channel_option cipher params have invalid key length raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000892"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC channel_option cipher params have invalid algorithm raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000831"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with channel set up for AES-128-CBC channel_option cipher params have missing key raise an exception" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000717"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with AES-256-CBC message with cipher payload strips the encoding" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.000903"></testcase>
<testcase classname="spec.unit.models.message_encoders.cipher_spec" name="Ably::Models::MessageEncoders::Cipher#encode with AES-256-CBC message with cipher payload decodes cipher" file="./spec/unit/models/message_encoders/cipher_spec.rb" time="0.001050"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels [] creates a channel" file="./spec/unit/http/channels_spec.rb" time="0.001047"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels is Enumerable provides #length" file="./spec/unit/http/channels_spec.rb" time="0.001058"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels is Enumerable allows enumeration" file="./spec/unit/http/channels_spec.rb" time="0.000998"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels is Enumerable #each returns an enumerator" file="./spec/unit/http/channels_spec.rb" time="0.000999"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels is Enumerable #each yields each channel" file="./spec/unit/http/channels_spec.rb" time="0.001025"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists hash is expected to be a kind of Hash" file="./spec/unit/http/channels_spec.rb" time="0.000772"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists hash will reuse a channel object if it exists (RSN3a)" file="./spec/unit/http/channels_spec.rb" time="0.000903"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists with new channel_options modes ChannelOptions object is expected to be a kind of Ably::Models::ChannelOptions" file="./spec/unit/http/channels_spec.rb" time="0.000835"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists with new channel_options modes ChannelOptions object will update channel with provided options modes (RSN3c)" file="./spec/unit/http/channels_spec.rb" time="0.000939"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists with new channel_options modes hash is expected to be a kind of Hash" file="./spec/unit/http/channels_spec.rb" time="0.000707"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists with new channel_options modes hash will update channel with provided options modes (RSN3c)" file="./spec/unit/http/channels_spec.rb" time="0.000988"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists ChannelOptions object is expected to be a kind of Ably::Models::ChannelOptions" file="./spec/unit/http/channels_spec.rb" time="0.000786"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when an existing channel exists ChannelOptions object will reuse a channel object if it exists (RSN3a)" file="./spec/unit/http/channels_spec.rb" time="0.000834"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when channel doesn&apos;t exist ChannelOptions object is expected to be a kind of Ably::Models::ChannelOptions" file="./spec/unit/http/channels_spec.rb" time="0.000720"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when channel doesn&apos;t exist ChannelOptions object creates a channel (RSN3a)" file="./spec/unit/http/channels_spec.rb" time="0.000943"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when channel doesn&apos;t exist hash is expected to be a kind of Hash" file="./spec/unit/http/channels_spec.rb" time="0.002137"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#get when channel doesn&apos;t exist hash creates a channel (RSN3a)" file="./spec/unit/http/channels_spec.rb" time="0.000894"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels destroying channels #release releases the channel resoures" file="./spec/unit/http/channels_spec.rb" time="0.000772"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#fetch retrieves a channel if it exists" file="./spec/unit/http/channels_spec.rb" time="0.000711"></testcase>
<testcase classname="spec.unit.http.channels_spec" name="Ably::PubSub::Http::Channels#fetch calls the block if channel is missing" file="./spec/unit/http/channels_spec.rb" time="0.000709"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with token sets the token" file="./spec/unit/http/client_spec.rb" time="0.001299"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with a string key instead of options hash sets the key" file="./spec/unit/http/client_spec.rb" time="0.000768"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with a string key instead of options hash uses basic auth" file="./spec/unit/http/client_spec.rb" time="0.000836"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with a string key instead of options hash sets the key_secret" file="./spec/unit/http/client_spec.rb" time="0.000802"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with a string key instead of options hash sets the key_name" file="./spec/unit/http/client_spec.rb" time="0.000799"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with token_details sets the token" file="./spec/unit/http/client_spec.rb" time="0.001114"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments key only connects to the Ably service" file="./spec/unit/http/client_spec.rb" time="0.000710"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments key only uses basic auth" file="./spec/unit/http/client_spec.rb" time="0.000772"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with token_params configures default_token_params" file="./spec/unit/http/client_spec.rb" time="0.001049"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments logger with custom logger and log_level sets the custom log level" file="./spec/unit/http/client_spec.rb" time="0.000765"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments logger with custom logger and log_level uses the custom logger" file="./spec/unit/http/client_spec.rb" time="0.000774"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments logger default specifies Logger::WARN log level" file="./spec/unit/http/client_spec.rb" time="0.000806"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments logger default uses Ruby Logger" file="./spec/unit/http/client_spec.rb" time="0.000756"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments logger with log_level :none silences all logging with a NilLogger" file="./spec/unit/http/client_spec.rb" time="0.000978"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) defaults to the main production fallback hosts (#REC2c1)" file="./spec/unit/http/client_spec.rb" time="0.000982"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with hostname foo.example.com has no default fallback hosts (#REC2c2)" file="./spec/unit/http/client_spec.rb" time="0.000932"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with custom fallback hosts configured and endpoint nonprod:sandbox uses the custom provided fallback hosts (#REC2a2)" file="./spec/unit/http/client_spec.rb" time="0.000958"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with custom fallback hosts configured and endpoint foo.example.com uses the custom provided fallback hosts (#REC2a2)" file="./spec/unit/http/client_spec.rb" time="0.001001"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with custom fallback hosts configured and endpoint main uses the custom provided fallback hosts (#REC2a2)" file="./spec/unit/http/client_spec.rb" time="0.000787"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with an empty fallback hosts list has no fallback hosts" file="./spec/unit/http/client_spec.rb" time="0.000885"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with a nonprod routing policy name uses the non-production fallback hosts for that routing policy (#REC2c3)" file="./spec/unit/http/client_spec.rb" time="0.000874"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with a custom port uses the default fallback hosts" file="./spec/unit/http/client_spec.rb" time="0.000977"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with hostname localhost has no default fallback hosts (#REC2c2)" file="./spec/unit/http/client_spec.rb" time="0.000795"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with hostname 127.0.0.1 has no default fallback hosts (#REC2c2)" file="./spec/unit/http/client_spec.rb" time="0.000780"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with a routing policy name uses the production fallback hosts for that routing policy (#REC2c4)" file="./spec/unit/http/client_spec.rb" time="0.000755"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with a custom TLS port uses the default fallback hosts" file="./spec/unit/http/client_spec.rb" time="0.000807"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments fallback hosts (#REC2) with hostname ::1 has no default fallback hosts (#REC2c2)" file="./spec/unit/http/client_spec.rb" time="0.000840"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments tls defaults to TLS" file="./spec/unit/http/client_spec.rb" time="0.000998"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments tls set to false uses HTTP" file="./spec/unit/http/client_spec.rb" time="0.000840"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments tls set to false uses plain text" file="./spec/unit/http/client_spec.rb" time="0.001320"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) uses the main production primary domain (#REC1a)" file="./spec/unit/http/client_spec.rb" time="0.000949"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) defaults to main" file="./spec/unit/http/client_spec.rb" time="0.002465"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with hostname localhost uses the hostname as the primary domain (#REC1b2)" file="./spec/unit/http/client_spec.rb" time="0.000798"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with hostname 127.0.0.1 uses the hostname as the primary domain (#REC1b2)" file="./spec/unit/http/client_spec.rb" time="0.000843"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with hostname ::1 uses the hostname as the primary domain (#REC1b2)" file="./spec/unit/http/client_spec.rb" time="0.000773"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with a routing policy name uses the production primary domain for that routing policy (#REC1b4)" file="./spec/unit/http/client_spec.rb" time="0.000739"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with a nonprod routing policy name uses the non-production primary domain for that routing policy (#REC1b3)" file="./spec/unit/http/client_spec.rb" time="0.000765"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with hostname foo.example.com uses the hostname as the primary domain (#REC1b2)" file="./spec/unit/http/client_spec.rb" time="0.000902"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with tls_port option and a TLS connection uses the custom port for TLS requests" file="./spec/unit/http/client_spec.rb" time="0.001000"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments endpoint (#REC1) with port option and non-TLS connections uses the custom port for non-TLS requests" file="./spec/unit/http/client_spec.rb" time="0.000854"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments key_name and key_secret constructs a key" file="./spec/unit/http/client_spec.rb" time="0.000653"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with valid arguments with a string token key instead of options hash sets the token" file="./spec/unit/http/client_spec.rb" time="0.001153"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments nil raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000789"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments empty hash raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000697"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments key: &quot;invalid:asdad&quot; raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000660"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments key: &quot;invalid&quot; raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000635"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments key and key_secret raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000605"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer with invalid arguments key and key_name raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000610"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer delegators delegates :auth_options to .auth" file="./spec/unit/http/client_spec.rb" time="0.001058"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client behaves like a client initializer delegators delegates :client_id to .auth" file="./spec/unit/http/client_spec.rb" time="0.000972"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client push #push returns a Push object" file="./spec/unit/http/client_spec.rb" time="0.000754"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client push #device is not supported and raises an exception" file="./spec/unit/http/client_spec.rb" time="0.000702"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options max_message_size is not present should return default 65536 (#TO3l8)" file="./spec/unit/http/client_spec.rb" time="0.000644"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options max_message_size is customized 131072 bytes should return 131072" file="./spec/unit/http/client_spec.rb" time="0.000777"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options max_message_size is nil should return default 65536 (#TO3l8)" file="./spec/unit/http/client_spec.rb" time="0.000672"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options use agent set agent to non-default value custom agent should overwrite client.agent" file="./spec/unit/http/client_spec.rb" time="0.000635"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options use agent set agent to non-default value default agent should return default ably agent" file="./spec/unit/http/client_spec.rb" time="0.000650"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options fallback_retry_timeout (#RSC15f) default is set to 10 minutes" file="./spec/unit/http/client_spec.rb" time="0.000617"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options fallback_retry_timeout (#RSC15f) when provided configures a new timeout" file="./spec/unit/http/client_spec.rb" time="0.000775"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options TLS disabled fails for any operation with basic auth and attempting to send an API key over a non-secure connection (#RSA1)" file="./spec/unit/http/client_spec.rb" time="0.001665"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options :use_token_auth set to false with a key and :tls =&gt; false fails for any operation with basic auth and attempting to send an API key over a non-secure connection" file="./spec/unit/http/client_spec.rb" time="0.001547"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options :use_token_auth set to false without a key fails as a key is required if not using token auth" file="./spec/unit/http/client_spec.rb" time="0.000818"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client initializer options :use_token_auth set to true without a key or token fails as a key is required to issue tokens" file="./spec/unit/http/client_spec.rb" time="0.000751"></testcase>
<testcase classname="spec.unit.http.client_spec" name="Ably::PubSub::Http::Client request_id generation includes request_id in URL" file="./spec/unit/http/client_spec.rb" time="0.000704"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #granularity_from_interval_id returns a :month interval_id for 2014-02" file="./spec/unit/models/stats_spec.rb" time="0.000764"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #granularity_from_interval_id fails with an invalid interval_id 14-20" file="./spec/unit/models/stats_spec.rb" time="0.000721"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #granularity_from_interval_id returns a :hour interval_id for 2014-02-03:05" file="./spec/unit/models/stats_spec.rb" time="0.000736"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #granularity_from_interval_id returns a :minute interval_id for 2014-02-03:05:06" file="./spec/unit/models/stats_spec.rb" time="0.002109"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #granularity_from_interval_id returns a :day interval_id for 2014-02-03" file="./spec/unit/models/stats_spec.rb" time="0.000711"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC fails with invalid time" file="./spec/unit/models/stats_spec.rb" time="0.000663"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC converts time 2014-02-03:05:06 with granularity :day into 2014-02-03" file="./spec/unit/models/stats_spec.rb" time="0.000628"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC fails with invalid granularity" file="./spec/unit/models/stats_spec.rb" time="0.000607"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC converts time 2014-02-03:05:06 with granularity :month into 2014-02" file="./spec/unit/models/stats_spec.rb" time="0.000608"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05" file="./spec/unit/models/stats_spec.rb" time="0.000610"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is UTC converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06" file="./spec/unit/models/stats_spec.rb" time="0.000587"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #to_interval_id when time zone of time argument is +02:00 converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00" file="./spec/unit/models/stats_spec.rb" time="0.000553"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #from_interval_id converts a day interval_id 2014-02-03 into a Time object in UTC 0" file="./spec/unit/models/stats_spec.rb" time="0.000782"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #from_interval_id converts a month interval_id 2014-02 into a Time object in UTC 0" file="./spec/unit/models/stats_spec.rb" time="0.000680"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #from_interval_id converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0" file="./spec/unit/models/stats_spec.rb" time="0.000642"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #from_interval_id converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0" file="./spec/unit/models/stats_spec.rb" time="0.000631"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats class methods #from_interval_id fails with an invalid interval_id 14-20" file="./spec/unit/models/stats_spec.rb" time="0.000630"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#app_id returns the application ID" file="./spec/unit/models/stats_spec.rb" time="0.000635"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#entries returns an empty hash when entries is not present" file="./spec/unit/models/stats_spec.rb" time="0.000576"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#entries returns the entries hash" file="./spec/unit/models/stats_spec.rb" time="0.000575"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#schema returns the schema URI" file="./spec/unit/models/stats_spec.rb" time="0.000590"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#in_progress returns nil when not present" file="./spec/unit/models/stats_spec.rb" time="0.000643"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#in_progress returns the in_progress string when present" file="./spec/unit/models/stats_spec.rb" time="0.000617"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#unit returns the unit from the JSON response" file="./spec/unit/models/stats_spec.rb" time="0.000568"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#interval_id returns the interval ID string" file="./spec/unit/models/stats_spec.rb" time="0.000610"></testcase>
<testcase classname="spec.unit.models.stats_spec" name="Ably::Models::Stats#interval_time returns a Time object representing the start of the interval" file="./spec/unit/models/stats_spec.rb" time="0.000648"></testcase>
<testcase classname="spec.unit.realtime.websocket_transport_spec" name="Ably::PubSub::Realtime::Connection::WebsocketTransport behaves like an incoming protocol message bus behaves like a protocol message bus __protocol_msgbus__ PubSub fail with unacceptable STATE event names" file="./spec/unit/realtime/websocket_transport_spec.rb" time="0.001114"></testcase>
<testcase classname="spec.unit.realtime.websocket_transport_spec" name="Ably::PubSub::Realtime::Connection::WebsocketTransport behaves like an incoming protocol message bus behaves like a protocol message bus __protocol_msgbus__ PubSub supports valid ProtocolMessage messages" file="./spec/unit/realtime/websocket_transport_spec.rb" time="0.002311"></testcase>
<testcase classname="spec.unit.realtime.websocket_transport_spec" name="Ably::PubSub::Realtime::Connection::WebsocketTransport behaves like an outgoing protocol message bus behaves like a protocol message bus __protocol_msgbus__ PubSub fail with unacceptable STATE event names" file="./spec/unit/realtime/websocket_transport_spec.rb" time="0.001341"></testcase>
<testcase classname="spec.unit.realtime.websocket_transport_spec" name="Ably::PubSub::Realtime::Connection::WebsocketTransport behaves like an outgoing protocol message bus behaves like a protocol message bus __protocol_msgbus__ PubSub supports valid ProtocolMessage messages" file="./spec/unit/realtime/websocket_transport_spec.rb" time="0.001133"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #callback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001231"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #callback adds a callback that is called when #succed is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001016"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #succeed calls the callbacks defined with #callback, but not the ones added for #errback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001022"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #errback adds a callback that is called when #fail is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000896"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #errback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001134"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::ProtocolMessage behaves like a safe Deferrable #fail calls the callbacks defined with #errback, but not the ones added for success #callback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000859"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block raises an Exception does not call the callback block of the SafeDeferrable" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.201742"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block raises an Exception does not call the provided block" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.202379"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block raises an Exception calls the errback block of the SafeDeferrable" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.102484"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result returns a SafeDeferrable that catches and logs exceptions in the provided callbacks" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.001603"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result returns a SafeDeferrable that calls the callback block" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.102287"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result does not call the errback" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.304559"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result calls the provided block with result when provided" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.102057"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result catches exceptions in the provided block and logs them to logger" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.102320"></testcase>
<testcase classname="spec.unit.modules.async_wrapper_spec" name="Ably::Modules::AsyncWrapper#async_wrap blocking block returns result does not block EventMachine" file="./spec/unit/modules/async_wrapper_spec.rb" time="0.101921"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #fail calls the callbacks defined with #errback, but not the ones added for success #callback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001023"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #succeed calls the callbacks defined with #callback, but not the ones added for #errback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000871"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #errback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001215"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #errback adds a callback that is called when #fail is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000896"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #callback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001195"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::PresenceMessage behaves like a safe Deferrable #callback adds a callback that is called when #succed is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000889"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#recipient and #recipient= setter accepts nil but always returns an empty hash" file="./spec/unit/models/device_push_details_spec.rb" time="0.000805"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#recipient and #recipient= setter accepts a Hash value and getter returns the new value" file="./spec/unit/models/device_push_details_spec.rb" time="0.000805"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#recipient and #recipient= rejects non Hash or nil values" file="./spec/unit/models/device_push_details_spec.rb" time="0.000721"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails camelCase constructor attributes are rubyfied and exposed as underscore case" file="./spec/unit/models/device_push_details_spec.rb" time="0.000714"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails camelCase constructor attributes are generated when the object is serialised to JSON" file="./spec/unit/models/device_push_details_spec.rb" time="0.000769"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#state and #state= rejects non string or nil values" file="./spec/unit/models/device_push_details_spec.rb" time="0.000669"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#state and #state= setter accepts a string value and getter returns the new value" file="./spec/unit/models/device_push_details_spec.rb" time="0.000771"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#state and #state= setter accepts nil" file="./spec/unit/models/device_push_details_spec.rb" time="0.000761"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#error_reason and #error_reason= rejects non Hash, ErrorInfo or nil values" file="./spec/unit/models/device_push_details_spec.rb" time="0.000653"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#error_reason and #error_reason= setter accepts nil values" file="./spec/unit/models/device_push_details_spec.rb" time="0.000833"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#error_reason and #error_reason= setter accepts a Hash value and getter returns a ErrorInfo object" file="./spec/unit/models/device_push_details_spec.rb" time="0.000822"></testcase>
<testcase classname="spec.unit.models.device_push_details_spec" name="Ably::Models::DevicePushDetails#error_reason and #error_reason= setter accepts a ErrorInfo object and getter returns a ErrorInfo object" file="./spec/unit/models/device_push_details_spec.rb" time="0.000853"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_time_from_epoch with Time leaves intact" file="./spec/unit/modules/conversions_spec.rb" time="0.000687"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_time_from_epoch with any other object raises an exception" file="./spec/unit/modules/conversions_spec.rb" time="0.000689"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_time_from_epoch with numeric converts to Time from milliseconds by default" file="./spec/unit/modules/conversions_spec.rb" time="0.000697"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_time_from_epoch with numeric converts to Time from seconds" file="./spec/unit/modules/conversions_spec.rb" time="0.000772"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_since_epoch with time converted to seconds" file="./spec/unit/modules/conversions_spec.rb" time="0.000690"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_since_epoch with time converts to milliseconds by default" file="./spec/unit/modules/conversions_spec.rb" time="0.000666"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_since_epoch with any other object raises an exception" file="./spec/unit/modules/conversions_spec.rb" time="0.000639"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_since_epoch with numeric accepts integers" file="./spec/unit/modules/conversions_spec.rb" time="0.000633"></testcase>
<testcase classname="spec.unit.modules.conversions_spec" name="Ably::Modules::Conversions#as_since_epoch with numeric converts to integer" file="./spec/unit/modules/conversions_spec.rb" time="0.000634"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with another payload leaves the message data intact" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.000762"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with another payload leaves the encoding intact" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.000729"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with utf8 payload strips the encoding" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.000695"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with utf8 payload sets the encoding" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.000764"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with utf8 payload before other payloads sets the encoding" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.000698"></testcase>
<testcase classname="spec.unit.models.message_encoders.utf8_spec" name="Ably::Models::MessageEncoders::Utf8#decode message with utf8 payload before other payloads strips the encoding" file="./spec/unit/models/message_encoders/utf8_spec.rb" time="0.002387"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #callback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001153"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #callback adds a callback that is called when #succed is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000903"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #fail calls the callbacks defined with #errback, but not the ones added for success #callback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000944"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #errback adds a callback that is called when #fail is called" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000910"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #errback catches exceptions in the callback and logs the error to the logger" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.001184"></testcase>
<testcase classname="spec.unit.realtime.safe_deferrable_spec" name="Ably::Models::Message behaves like a safe Deferrable #succeed calls the callbacks defined with #callback, but not the ones added for #errback" file="./spec/unit/realtime/safe_deferrable_spec.rb" time="0.000915"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel is available in the #push attribute of the channel" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000913"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel is constructed with a channel" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000839"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel raises an exception if constructed with an invalid type" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000705"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel exposes the channel as attribute #channel" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000863"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel methods not implemented as push notifications #get_subscriptions raises an unsupported exception" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000834"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel methods not implemented as push notifications #unsubscribe_client_id raises an unsupported exception" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000865"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel methods not implemented as push notifications #subscribe_device raises an unsupported exception" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000833"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel methods not implemented as push notifications #subscribe_client_id raises an unsupported exception" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000844"></testcase>
<testcase classname="spec.unit.realtime.push_channel_spec" name="Ably::PubSub::Realtime::Channel::PushChannel methods not implemented as push notifications #unsubscribe_device raises an unsupported exception" file="./spec/unit/realtime/push_channel_spec.rb" time="0.000850"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails from_json (#TD7) with JSON-like object returns a valid TokenDetails object" file="./spec/unit/models/token_details_spec.rb" time="0.000798"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails from_json (#TD7) with JSON string returns a valid TokenDetails object" file="./spec/unit/models/token_details_spec.rb" time="0.000765"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails from_json (#TD7) with Ruby idiomatic Hash object returns a valid TokenDetails object" file="./spec/unit/models/token_details_spec.rb" time="0.000706"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails to_json with only a token string returns populated attributes" file="./spec/unit/models/token_details_spec.rb" time="0.000699"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails to_json with all attributes and values returns all attributes" file="./spec/unit/models/token_details_spec.rb" time="0.000715"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model #== is false when attributes are not the same" file="./spec/unit/models/token_details_spec.rb" time="0.000724"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model #== is false when class type differs" file="./spec/unit/models/token_details_spec.rb" time="0.000659"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model #== is true when attributes are the same" file="./spec/unit/models/token_details_spec.rb" time="0.000777"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model #to_json returns a JSON string with Ably payload naming" file="./spec/unit/models/token_details_spec.rb" time="0.000775"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model attributes #client_id retrieves attribute :client_id" file="./spec/unit/models/token_details_spec.rb" time="0.000699"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model attributes #attributes provides access to #attributes" file="./spec/unit/models/token_details_spec.rb" time="0.000742"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model attributes #key_name retrieves attribute :key_name" file="./spec/unit/models/token_details_spec.rb" time="0.000757"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model attributes #[] provides accessor method to #attributes" file="./spec/unit/models/token_details_spec.rb" time="0.000715"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model attributes #token retrieves attribute :token" file="./spec/unit/models/token_details_spec.rb" time="0.000788"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model #to_msgpack returns a msgpack object with Ably payload naming" file="./spec/unit/models/token_details_spec.rb" time="0.000888"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model is immutable dups options" file="./spec/unit/models/token_details_spec.rb" time="0.000743"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails behaves like a model is immutable prevents changes" file="./spec/unit/models/token_details_spec.rb" time="0.000745"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails TokenDetails conversion methods with a TokenDetails object returns the TokenDetails object" file="./spec/unit/models/token_details_spec.rb" time="0.000692"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails TokenDetails conversion methods with a JSON object returns a new TokenDetails object from the JSON" file="./spec/unit/models/token_details_spec.rb" time="0.002005"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #capability retrieves attribute :capability as parsed JSON" file="./spec/unit/models/token_details_spec.rb" time="0.000843"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #issued when converted to JSON is in milliseconds" file="./spec/unit/models/token_details_spec.rb" time="0.000706"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #expires with :expires option as a Time in constructor retrieves attribute :expires as Time" file="./spec/unit/models/token_details_spec.rb" time="0.000725"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #expires with :expires option as milliseconds in constructor retrieves attribute :expires as Time" file="./spec/unit/models/token_details_spec.rb" time="0.000664"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #issued with :issued option as milliseconds in constructor retrieves attribute :issued as Time" file="./spec/unit/models/token_details_spec.rb" time="0.000659"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #expires when converted to JSON is in milliseconds" file="./spec/unit/models/token_details_spec.rb" time="0.000714"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes  #issued with :issued option as a Time in constructor retrieves attribute :issued as Time" file="./spec/unit/models/token_details_spec.rb" time="0.000629"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #expired? within grace period buffer is false" file="./spec/unit/models/token_details_spec.rb" time="0.000639"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #expired? with :from attribute is true" file="./spec/unit/models/token_details_spec.rb" time="0.000636"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #expired? with :from attribute is false" file="./spec/unit/models/token_details_spec.rb" time="0.000696"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #expired? when expires is not available (i.e. string tokens) is always false" file="./spec/unit/models/token_details_spec.rb" time="0.000777"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails attributes #expired? once grace period buffer has passed is true" file="./spec/unit/models/token_details_spec.rb" time="0.000729"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails == is false when attributes are not the same" file="./spec/unit/models/token_details_spec.rb" time="0.000726"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails == is false when class type differs" file="./spec/unit/models/token_details_spec.rb" time="0.000713"></testcase>
<testcase classname="spec.unit.models.token_details_spec" name="Ably::Models::TokenDetails == is true when attributes are the same" file="./spec/unit/models/token_details_spec.rb" time="0.000769"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) without serial (#RSL15a) raises an InvalidRequest exception" file="./spec/unit/http/channel_spec.rb" time="0.001069"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a MessageOperation object serializes the operation via as_json" file="./spec/unit/http/channel_spec.rb" time="0.001545"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) does not mutate the original message (#RSL15c) the original message is unchanged" file="./spec/unit/http/channel_spec.rb" time="0.001495"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a valid message containing serial sends a PATCH request" file="./spec/unit/http/channel_spec.rb" time="0.001664"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a valid message containing serial sets action to MESSAGE_UPDATE" file="./spec/unit/http/channel_spec.rb" time="0.001422"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a valid message containing serial returns an UpdateDeleteResult" file="./spec/unit/http/channel_spec.rb" time="0.001381"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with query params (#RSL15f) passes params as qs_params" file="./spec/unit/http/channel_spec.rb" time="0.001414"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a Hash message converts to Message and validates serial" file="./spec/unit/http/channel_spec.rb" time="0.001120"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with a Hash message works when serial is present" file="./spec/unit/http/channel_spec.rb" time="0.001401"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#update_message (#RSL15) with an operation parameter includes the operation as version in the payload" file="./spec/unit/http/channel_spec.rb" time="0.002779"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#append_message (#RSL15) without serial raises an InvalidRequest exception" file="./spec/unit/http/channel_spec.rb" time="0.001026"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#append_message (#RSL15) with an operation parameter includes the operation as version in the payload" file="./spec/unit/http/channel_spec.rb" time="0.001461"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#append_message (#RSL15) does not mutate the original message the original message is unchanged" file="./spec/unit/http/channel_spec.rb" time="0.001422"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#append_message (#RSL15) with a valid message containing serial sends a PATCH request with action MESSAGE_APPEND" file="./spec/unit/http/channel_spec.rb" time="0.001410"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#append_message (#RSL15) with a valid message containing serial returns an UpdateDeleteResult" file="./spec/unit/http/channel_spec.rb" time="0.001351"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish returns PublishResult (#RSL1n) with serials in response body returns a PublishResult with serials" file="./spec/unit/http/channel_spec.rb" time="0.001170"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish returns PublishResult (#RSL1n) with empty response body (204) returns a PublishResult with empty serials" file="./spec/unit/http/channel_spec.rb" time="0.001228"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish returns PublishResult (#RSL1n) with non-hash response body returns a PublishResult with empty serials" file="./spec/unit/http/channel_spec.rb" time="0.001227"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#delete_message (#RSL15) does not mutate the original message the original message is unchanged" file="./spec/unit/http/channel_spec.rb" time="0.001405"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#delete_message (#RSL15) without serial raises an InvalidRequest exception" file="./spec/unit/http/channel_spec.rb" time="0.000982"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#delete_message (#RSL15) with a valid message containing serial returns an UpdateDeleteResult" file="./spec/unit/http/channel_spec.rb" time="0.001258"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#delete_message (#RSL15) with a valid message containing serial sends a PATCH request with action MESSAGE_DELETE" file="./spec/unit/http/channel_spec.rb" time="0.001604"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#delete_message (#RSL15) with an operation parameter includes the operation as version in the payload" file="./spec/unit/http/channel_spec.rb" time="0.001926"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument as UTF_8 string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.001176"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument as frozen UTF_8 string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.001266"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument as SHIFT_JIS string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.001217"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument as Integer raises an argument error" file="./spec/unit/http/channel_spec.rb" time="0.000882"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument as ASCII_8BIT string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.002402"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument max message size exceeded when max_message_size is nil and a message size is 65537 bytes should raise Ably::Exceptions::MaxMessageSizeExceeded" file="./spec/unit/http/channel_spec.rb" time="0.001008"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument max message size exceeded when max_message_size is 65536 bytes and a message size is 10 bytes should send a message" file="./spec/unit/http/channel_spec.rb" time="0.001296"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument max message size exceeded when max_message_size is 65536 bytes and a message size is 65537 bytes should raise Ably::Exceptions::MaxMessageSizeExceeded" file="./spec/unit/http/channel_spec.rb" time="0.001000"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument max message size exceeded when max_message_size is 10 bytes and a message size is 11 bytes should raise Ably::Exceptions::MaxMessageSizeExceeded" file="./spec/unit/http/channel_spec.rb" time="0.000970"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#publish name argument max message size exceeded when max_message_size is 10 bytes and a message size is 2 bytes should send a message" file="./spec/unit/http/channel_spec.rb" time="0.001134"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as frozen UTF_8 string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.000807"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as frozen UTF_8 string remains as UTF-8" file="./spec/unit/http/channel_spec.rb" time="0.000805"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as Integer raises an argument error" file="./spec/unit/http/channel_spec.rb" time="0.000848"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as SHIFT_JIS string is compatible with original encoding" file="./spec/unit/http/channel_spec.rb" time="0.000821"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as SHIFT_JIS string gets converted to UTF-8" file="./spec/unit/http/channel_spec.rb" time="0.000827"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as Nil raises an argument error" file="./spec/unit/http/channel_spec.rb" time="0.000920"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as UTF_8 string is permitted" file="./spec/unit/http/channel_spec.rb" time="0.000946"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as UTF_8 string remains as UTF-8" file="./spec/unit/http/channel_spec.rb" time="0.000883"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as ASCII_8BIT string gets converted to UTF-8" file="./spec/unit/http/channel_spec.rb" time="0.000824"></testcase>
<testcase classname="spec.unit.http.channel_spec" name="Ably::PubSub::Http::Channel#initializer as ASCII_8BIT string is compatible with original encoding" file="./spec/unit/http/channel_spec.rb" time="0.000874"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with nil payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000779"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with nil payload leaves the message data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000716"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with binary payload adds the encoding" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000759"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with binary payload encodes binary data as base64" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000792"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with UTF-8 payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000750"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport message with UTF-8 payload leaves the data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000806"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport already encoded message with binary payload adds the encoding" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000759"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over text transport already encoded message with binary payload encodes binary data as base64" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000777"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with UTF-8 payload leaves the data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000688"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with UTF-8 payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000724"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with nil payload leaves the message data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000668"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with nil payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000676"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport already encoded message with binary payload leaves the message data intact as Base64 encoding is not necessary" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000729"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport already encoded message with binary payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000761"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with binary payload leaves the message data intact as Base64 encoding is not necessary" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000720"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with binary payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000815"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with empty binary string payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000753"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#encode over binary transport message with empty binary string payload leaves the message data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.002080"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with another payload leaves the encoding intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.001064"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with another payload leaves the message data intact" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.001064"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with base64 payload strips the encoding" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.001118"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with base64 payload decodes base64" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000781"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with base64 payload before other payloads decodes base64" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000772"></testcase>
<testcase classname="spec.unit.models.message_encoders.base64_spec" name="Ably::Models::MessageEncoders::Base64#decode message with base64 payload before other payloads strips the encoding" file="./spec/unit/models/message_encoders/base64_spec.rb" time="0.000745"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model is immutable dups options" file="./spec/unit/models/auth_details_spec.rb" time="0.000678"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model is immutable prevents changes" file="./spec/unit/models/auth_details_spec.rb" time="0.000757"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model #to_json returns a JSON string with Ably payload naming" file="./spec/unit/models/auth_details_spec.rb" time="0.000742"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model attributes #[] provides accessor method to #attributes" file="./spec/unit/models/auth_details_spec.rb" time="0.000698"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model attributes #attributes provides access to #attributes" file="./spec/unit/models/auth_details_spec.rb" time="0.000661"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model attributes #access_token retrieves attribute :access_token" file="./spec/unit/models/auth_details_spec.rb" time="0.000607"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model #to_msgpack returns a msgpack object with Ably payload naming" file="./spec/unit/models/auth_details_spec.rb" time="0.000648"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model #== is false when class type differs" file="./spec/unit/models/auth_details_spec.rb" time="0.000577"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model #== is true when attributes are the same" file="./spec/unit/models/auth_details_spec.rb" time="0.000699"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails behaves like a model #== is false when attributes are not the same" file="./spec/unit/models/auth_details_spec.rb" time="0.000690"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails AuthDetails conversion methods with a AuthDetails object returns the AuthDetails object" file="./spec/unit/models/auth_details_spec.rb" time="0.000753"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails AuthDetails conversion methods with a JSON object returns a new AuthDetails object from the JSON" file="./spec/unit/models/auth_details_spec.rb" time="0.000712"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails == is false when class type differs" file="./spec/unit/models/auth_details_spec.rb" time="0.000648"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails == is false when attributes are not the same" file="./spec/unit/models/auth_details_spec.rb" time="0.000670"></testcase>
<testcase classname="spec.unit.models.auth_details_spec" name="Ably::Models::AuthDetails == is true when attributes are the same" file="./spec/unit/models/auth_details_spec.rb" time="0.000732"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server declares an identifier whose -server suffix billing classification depends on" file="./spec/unit/pubsub/server_spec.rb" time="0.000653"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server releases in lockstep with ably-pubsub-core" file="./spec/unit/pubsub/server_spec.rb" time="0.000695"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client appends the side-declaring agent entry to the base agent, versionless" file="./spec/unit/pubsub/server_spec.rb" time="0.000790"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client returns an HTTP (REST) client" file="./spec/unit/pubsub/server_spec.rb" time="0.000781"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client sends the side-declaring agent entry in the Ably-Agent header" file="./spec/unit/pubsub/server_spec.rb" time="0.000858"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client with an options hash passes the options through and stamps the side" file="./spec/unit/pubsub/server_spec.rb" time="0.001258"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client when the caller tries to override the side entry the package wins the collision on its own identifier" file="./spec/unit/pubsub/server_spec.rb" time="0.000790"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client when the caller tries to override the side entry does not mutate the caller options" file="./spec/unit/pubsub/server_spec.rb" time="0.000763"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client with a token string constructs a token-auth client with the side stamped" file="./spec/unit/pubsub/server_spec.rb" time="0.001168"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_http_client when the caller supplies their own agents preserves the caller entries and appends the side entry" file="./spec/unit/pubsub/server_spec.rb" time="0.000739"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_realtime_client returns a realtime client" file="./spec/unit/pubsub/server_spec.rb" time="0.000931"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_realtime_client appends the side-declaring agent entry sent as the realtime agent connection param" file="./spec/unit/pubsub/server_spec.rb" time="0.000897"></testcase>
<testcase classname="spec.unit.pubsub.server_spec" name="Ably::PubSub::Server.create_realtime_client with an API key string constructs a key-auth client with the side stamped" file="./spec/unit/pubsub/server_spec.rb" time="0.000894"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult#attributes prevents modification" file="./spec/unit/models/update_delete_result_spec.rb" time="0.000705"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult#attributes returns the underlying attributes" file="./spec/unit/models/update_delete_result_spec.rb" time="0.000679"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult#version_serial (#UDR2a) when present returns the version serial" file="./spec/unit/models/update_delete_result_spec.rb" time="0.002232"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult#version_serial (#UDR2a) when nil returns nil" file="./spec/unit/models/update_delete_result_spec.rb" time="0.000662"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult#version_serial (#UDR2a) when not provided returns nil" file="./spec/unit/models/update_delete_result_spec.rb" time="0.000670"></testcase>
<testcase classname="spec.unit.models.update_delete_result_spec" name="Ably::Models::UpdateDeleteResult with camelCase keys from wire converts to snake_case access" file="./spec/unit/models/update_delete_result_spec.rb" time="0.000627"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#channel and #channel= setter accepts nil" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000823"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#channel and #channel= rejects non string or nil values" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000703"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#channel and #channel= setter accepts a string value and getter returns the new value" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000720"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#client_id and #client_id= rejects non string or nil values" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000714"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#client_id and #client_id= setter accepts nil" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000769"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#client_id and #client_id= setter accepts a string value and getter returns the new value" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000742"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#device_id and #device_id= rejects non string or nil values" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000756"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#device_id and #device_id= setter accepts nil" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000760"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#device_id and #device_id= setter accepts a string value and getter returns the new value" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000732"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription conversion method PushChannelSubscription accepts a PushChannelSubscription object" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000739"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription camelCase constructor attributes are rubyfied and exposed as underscore case" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000708"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription camelCase constructor attributes are generated when the object is serialised to JSON" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000797"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#for_client_id constructor with an invalid valid object accepts a Hash object" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.000760"></testcase>
<testcase classname="spec.unit.models.push_channel_subscription_spec" name="Ably::Models::PushChannelSubscription#for_client_id constructor with a valid object accepts a Hash object" file="./spec/unit/models/push_channel_subscription_spec.rb" time="0.001489"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#current (#TH1) is required" file="./spec/unit/models/channel_state_change_spec.rb" time="0.002100"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#current (#TH1) is an attribute" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001604"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#previous (#TH2) is required" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001921"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#previous (#TH2) is an attribute" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001981"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange invalid attributes raises an argument error" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001940"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#reason (#TH3) is not required" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001735"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#reason (#TH3) is an attribute" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001582"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#event (#TH5) is not required" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001732"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#event (#TH5) is an attribute" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001824"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#resumed (#TH4) is false when ommitted" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001902"></testcase>
<testcase classname="spec.unit.models.channel_state_change_spec" name="Ably::Models::ChannelStateChange#resumed (#TH4) is true when provided" file="./spec/unit/models/channel_state_change_spec.rb" time="0.001322"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence msgbus supports messages" file="./spec/unit/realtime/presence_spec.rb" time="0.002242"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence msgbus fail with unacceptable STATE event names" file="./spec/unit/realtime/presence_spec.rb" time="0.002243"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence callbacks fail with unacceptable STATE event names" file="./spec/unit/realtime/presence_spec.rb" time="0.001634"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence callbacks are supported for valid STATE events" file="./spec/unit/realtime/presence_spec.rb" time="0.001870"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #unsubscribe with no action specified unsubscribes that block from all events" file="./spec/unit/realtime/presence_spec.rb" time="0.002731"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #unsubscribe with a single action argument unsubscribes the provided block with the matching action" file="./spec/unit/realtime/presence_spec.rb" time="0.002812"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #unsubscribe with no block argument unsubscribes all blocks for the action argument" file="./spec/unit/realtime/presence_spec.rb" time="0.010867"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #unsubscribe with a non-matching action argument has no effect" file="./spec/unit/realtime/presence_spec.rb" time="0.001539"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #unsubscribe with multiple action arguments unsubscribes each of those matching actions with the provided block" file="./spec/unit/realtime/presence_spec.rb" time="0.001327"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #subscribe without a block raises an invalid ArgumentError" file="./spec/unit/realtime/presence_spec.rb" time="0.000878"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #subscribe with no action specified subscribes the provided block to all action" file="./spec/unit/realtime/presence_spec.rb" time="0.001283"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #subscribe with a single action argument subscribes that block to matching actions" file="./spec/unit/realtime/presence_spec.rb" time="0.001425"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #subscribe with a multiple duplicate action arguments subscribes that block to all of those unique actions once" file="./spec/unit/realtime/presence_spec.rb" time="0.001124"></testcase>
<testcase classname="spec.unit.realtime.presence_spec" name="Ably::PubSub::Realtime::Presence subscriptions #subscribe with a multiple action arguments subscribes that block to all of those actions" file="./spec/unit/realtime/presence_spec.rb" time="0.001964"></testcase>
</testsuite>
