From c3fbd880e8a6d15be71d6d40e85f14e42cc93726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Aliwa?= Date: Mon, 30 Aug 2021 18:28:34 +0200 Subject: [PATCH 1/2] [#274] Add support for DataTypes ProtocolMessage: has_attach_resume_flag? (TR3f) --- lib/ably/models/protocol_message.rb | 5 +++++ spec/unit/models/protocol_message_spec.rb | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/ably/models/protocol_message.rb b/lib/ably/models/protocol_message.rb index 07572bb88..72f7a3fd0 100644 --- a/lib/ably/models/protocol_message.rb +++ b/lib/ably/models/protocol_message.rb @@ -216,6 +216,11 @@ def has_transient_flag? flags & 16 == 16 # 2^4 end + # @api private + def has_attach_resume_flag? + flags && 32 == 32 # 2^5 + end + # @api private def has_attach_presence_flag? flags & 65536 == 65536 # 2^16 diff --git a/spec/unit/models/protocol_message_spec.rb b/spec/unit/models/protocol_message_spec.rb index cdbee41de..8cc0c343f 100644 --- a/spec/unit/models/protocol_message_spec.rb +++ b/spec/unit/models/protocol_message_spec.rb @@ -176,6 +176,14 @@ def new_protocol_message(options) end end + context 'when attach resumed flag' do + let(:protocol_message) { new_protocol_message(flags: 5) } + + it '#has_attach_resume_flag? is true' do + expect(protocol_message.has_attach_resume_flag?).to be_truthy + end + end + context 'when channel resumed and presence flags present' do let(:protocol_message) { new_protocol_message(flags: 5) } From 0aa1128d8e3a38f95662002272c6cf983ff61f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Aliwa?= Date: Mon, 6 Sep 2021 18:34:00 +0200 Subject: [PATCH 2/2] [#274] Fixed invalid boolean AND operator (instead of bitwise operator) and added spec. --- lib/ably/models/protocol_message.rb | 2 +- spec/unit/models/protocol_message_spec.rb | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/ably/models/protocol_message.rb b/lib/ably/models/protocol_message.rb index 72f7a3fd0..1534a135e 100644 --- a/lib/ably/models/protocol_message.rb +++ b/lib/ably/models/protocol_message.rb @@ -218,7 +218,7 @@ def has_transient_flag? # @api private def has_attach_resume_flag? - flags && 32 == 32 # 2^5 + flags & 32 == 32 # 2^5 end # @api private diff --git a/spec/unit/models/protocol_message_spec.rb b/spec/unit/models/protocol_message_spec.rb index 8cc0c343f..53c7a20a6 100644 --- a/spec/unit/models/protocol_message_spec.rb +++ b/spec/unit/models/protocol_message_spec.rb @@ -177,10 +177,24 @@ def new_protocol_message(options) end context 'when attach resumed flag' do - let(:protocol_message) { new_protocol_message(flags: 5) } + context 'flags is 34' do + let(:protocol_message) { new_protocol_message(flags: 34) } + + it '#has_attach_resume_flag? is true' do + expect(protocol_message.has_attach_resume_flag?).to be_truthy + end + + it '#has_attach_presence_flag? is false' do + expect(protocol_message.has_attach_presence_flag?).to be_falsey + end + end + + context 'flags is 0' do + let(:protocol_message) { new_protocol_message(flags: 0) } - it '#has_attach_resume_flag? is true' do - expect(protocol_message.has_attach_resume_flag?).to be_truthy + it 'should raise an exception if flags is a float number' do + expect(protocol_message.has_attach_resume_flag?).to be_falsy + end end end