57 lines
1.8 KiB
Gherkin
57 lines
1.8 KiB
Gherkin
Feature: layout protocol
|
|
|
|
Background:
|
|
Given a file named layout.rb with:
|
|
"""
|
|
class Layout
|
|
def register display
|
|
puts display
|
|
display.create_subwindow(Uh::Geo.new(0, 0, 640, 16)).tap do |o|
|
|
o.show
|
|
end
|
|
end
|
|
|
|
def << client
|
|
puts "testing_#<<_#{client.name}"
|
|
client.show
|
|
end
|
|
|
|
def remove client
|
|
puts "testing_#remove_#{client.name}"
|
|
end
|
|
|
|
def update client
|
|
puts "testing_#update_#{client.name}"
|
|
end
|
|
|
|
def expose window
|
|
puts "testing_#expose_#{window.id}"
|
|
end
|
|
end
|
|
"""
|
|
|
|
Scenario: tells the layout to register with #register message
|
|
When I run uhwm with option -r./layout -l Layout
|
|
Then the output must contain current display
|
|
|
|
Scenario: tells the layout to manage a client with #<< message
|
|
Given uhwm is running with options -v -r./layout -l Layout
|
|
When a window requests to be mapped
|
|
Then the output must contain "testing_#<<_XClient/default"
|
|
|
|
Scenario: tells the layout to unmanage a client with #remove message
|
|
Given uhwm is running with options -v -r./layout -l Layout
|
|
And a window is mapped
|
|
When the window is unmapped
|
|
Then the output must contain "testing_#remove_XClient/default"
|
|
|
|
Scenario: tells the layout to update a changed client with #update message
|
|
Given uhwm is running with options -v -r./layout -l Layout
|
|
And a window is mapped
|
|
When the window name changes to "testing_new_name"
|
|
Then the output must contain "testing_#update_testing_new_name"
|
|
|
|
Scenario: tells the layout about an exposed window with #expose message
|
|
Given I run uhwm with options -r./layout -l Layout
|
|
Then the output must match /testing_#expose_\d+/
|