Implement Manager#handle_pending_events

This commit is contained in:
Thibault Jouan 2015-04-08 22:26:30 +00:00
parent d3007201cc
commit 585903240b
2 changed files with 41 additions and 1 deletions

View File

@ -14,6 +14,13 @@ module Uh
def grab_key keysym def grab_key keysym
@display.grab_key keysym.to_s, KEY_MODIFIERS[:mod1] @display.grab_key keysym.to_s, KEY_MODIFIERS[:mod1]
end end
def handle_pending_events
handle @display.next_event while @display.pending?
end
def handle event
end
end end
end end
end end

View File

@ -1,7 +1,8 @@
module Uh module Uh
module WM module WM
RSpec.describe Manager do RSpec.describe Manager do
subject(:manager) { described_class.new } let(:display) { Display.new }
subject(:manager) { described_class.new display }
describe '#initialize' do describe '#initialize' do
it 'assigns a new display' do it 'assigns a new display' do
@ -23,6 +24,38 @@ module Uh
manager.grab_key :q manager.grab_key :q
end end
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 end
end end