From 585903240b788a47ee32d03c3330cb59c9c33ff5 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Wed, 8 Apr 2015 22:26:30 +0000 Subject: [PATCH] Implement Manager#handle_pending_events --- lib/uh/wm/manager.rb | 7 +++++++ spec/uh/wm/manager_spec.rb | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/uh/wm/manager.rb b/lib/uh/wm/manager.rb index 8a93167..7dd3b38 100644 --- a/lib/uh/wm/manager.rb +++ b/lib/uh/wm/manager.rb @@ -14,6 +14,13 @@ module Uh def grab_key keysym @display.grab_key keysym.to_s, KEY_MODIFIERS[:mod1] end + + def handle_pending_events + handle @display.next_event while @display.pending? + end + + def handle event + end end end end diff --git a/spec/uh/wm/manager_spec.rb b/spec/uh/wm/manager_spec.rb index 75e11b1..95b4544 100644 --- a/spec/uh/wm/manager_spec.rb +++ b/spec/uh/wm/manager_spec.rb @@ -1,7 +1,8 @@ module Uh module WM RSpec.describe Manager do - subject(:manager) { described_class.new } + let(:display) { Display.new } + subject(:manager) { described_class.new display } describe '#initialize' do it 'assigns a new display' do @@ -23,6 +24,38 @@ module Uh manager.grab_key :q end end + + describe '#handle_pending_events' do + let(:event) { double 'event' } + + context 'when an event is pending on display' do + before do + allow(display).to receive(:pending?).and_return true, false + allow(display).to receive(:next_event) { event } + end + + it 'handles the event' do + expect(manager).to receive(:handle).with(event).once + manager.handle_pending_events + end + end + + context 'when multiple events are pending on display' do + before do + allow(display).to receive(:pending?).and_return true, true, false + allow(display).to receive(:next_event) { event } + end + + it 'handles all pending events' do + expect(manager).to receive(:handle).with(event).twice + manager.handle_pending_events + end + end + end + + describe '#handle' do + it 'handles an event' + end end end end