spec/lib/plugin/buffers/gesture_buffer_spec.rb in fusuma-2.1.0 vs spec/lib/plugin/buffers/gesture_buffer_spec.rb in fusuma-2.2.0

- old
+ new

@@ -1,8 +1,9 @@ # frozen_string_literal: true require 'spec_helper' +require 'rspec-parameterized' require './lib/fusuma/plugin/events/event' require './lib/fusuma/plugin/events/records/gesture_record' require './lib/fusuma/plugin/buffers/gesture_buffer' @@ -11,11 +12,11 @@ module Buffers RSpec.describe GestureBuffer do before do @buffer = GestureBuffer.new delta = Events::Records::GestureRecord::Delta.new(-1, 0, 0, 0, 0, 0) - @event_generator = lambda { |time = nil, status = 'updating'| + @event_generator = lambda { |time = nil, status = 'update'| Events::Event.new(time: time, tag: 'libinput_gesture_parser', record: Events::Records::GestureRecord.new( status: status, gesture: 'SWIPE', @@ -51,23 +52,42 @@ expect(@buffer.events).to eq [begin_event, end_event] end end describe '#clear_expired' do - it 'should keep only events generated within 30 seconds' do - time = Time.now - event1 = @event_generator.call(time) - @buffer.buffer(event1) - event2 = @event_generator.call(time + 100) - event3 = @event_generator.call(time + 100) - @buffer.buffer(event2) - @buffer.buffer(event3) + context 'default' do + before do + @time = Time.now + event1 = @event_generator.call(@time) + @buffer.buffer(event1) + @event2 = @event_generator.call(@time + 100) + @event3 = @event_generator.call(@time + 100) + @buffer.buffer(@event2) + @buffer.buffer(@event3) + end + it 'should keep only events generated within 30 seconds' do + @buffer.clear_expired(current_time: @time + 100.1) + expect(@buffer.events).to eq [@event2, @event3] + end + context 'with cancelled or ended' do + where(:last_state, :want) do + [ + ['end', []], + ['cancelled', []] + ] + end - @buffer.clear_expired(current_time: time + 100.1) + with_them do + it 'should clear events' do + event4 = @event_generator.call(@time + 100, last_state) + @buffer.buffer(event4) - expect(@buffer.events).to eq [event2, event3] + @buffer.clear_expired(current_time: @time + 100.1) + expect(@buffer.events).to eq want + end + end + end end - context 'change seconds to keep' do around do |example| ConfigHelper.load_config_yml = <<~CONFIG plugin: buffers: