diff options
| author | lstrzebinczyk <[email protected]> | 2017-04-25 21:41:44 +0200 |
|---|---|---|
| committer | Tom Black <[email protected]> | 2017-05-18 18:12:48 -0400 |
| commit | b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9 (patch) | |
| tree | b213fee3ad5030169fb4e41b68af4d19bf339b48 /test | |
| parent | 2c164654e5ebec39a3ae2c47d352349332f50ee3 (diff) | |
| download | ruby2d-b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9.tar.gz ruby2d-b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9.zip | |
allow events unbinding
Diffstat (limited to 'test')
| -rw-r--r-- | test/events_spec.rb | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/test/events_spec.rb b/test/events_spec.rb new file mode 100644 index 0000000..f0e5411 --- /dev/null +++ b/test/events_spec.rb @@ -0,0 +1,126 @@ +require 'ruby2d' + +RSpec.describe Window do + [:key, :key_down, :key_held, :key_up].each do |key_event_type| + describe "on #{key_event_type}" do + it "allows binding of event" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + callback_event_name = key_event_type.to_s.gsub("key_", "").to_sym + window.key_callback(callback_event_name, "example_key") + expect(value).to eq 1 + end + + it "allows binding of multiple events" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + window.on(key_event_type) do + value += 2 + end + callback_event_name = key_event_type.to_s.gsub("key_", "").to_sym + window.key_callback(callback_event_name, "example_key") + expect(value).to eq 3 + end + + it "returns value, which can be used to unbind event" do + window = Ruby2D::Window.new + value = 0 + event_descriptor = window.on(key_event_type) do + value += 1 + end + window.off(event_descriptor) + callback_event_name = key_event_type.to_s.gsub("key_", "").to_sym + window.key_callback(callback_event_name, "example_key") + expect(value).to eq 0 + end + end + end + + [:mouse, :mouse_up, :mouse_down, :mouse_scroll, :mouse_move].each do |key_event_type| + describe "on #{key_event_type}" do + it "allows binding of event" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + callback_event_name = key_event_type.to_s.gsub("mouse_", "").to_sym + window.mouse_callback(callback_event_name, nil, nil, 0, 0, 0, 0) + expect(value).to eq 1 + end + + it "allows binding of multiple events" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + window.on(key_event_type) do + value += 2 + end + callback_event_name = key_event_type.to_s.gsub("mouse_", "").to_sym + window.mouse_callback(callback_event_name, nil, nil, 0, 0, 0, 0) + expect(value).to eq 3 + end + + it "returns value, which can be used to unbind event" do + window = Ruby2D::Window.new + value = 0 + event_descriptor = window.on(key_event_type) do + value += 1 + end + window.off(event_descriptor) + callback_event_name = key_event_type.to_s.gsub("mouse_", "").to_sym + window.mouse_callback(callback_event_name, nil, nil, 0, 0, 0, 0) + expect(value).to eq 0 + end + end + end + + [:controller, :controller_axis, :controller_button_up, :controller_button_down].each do |key_event_type| + describe "on #{key_event_type}" do + it "allows binding of event" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + callback_event_name = key_event_type.to_s.gsub("controller_", "").to_sym + window.controller_callback(nil, callback_event_name, nil, nil, nil) + expect(value).to eq 1 + end + + it "allows binding of multiple events" do + window = Ruby2D::Window.new + value = 0 + window.on(key_event_type) do + value += 1 + end + window.on(key_event_type) do + value += 2 + end + callback_event_name = key_event_type.to_s.gsub("controller_", "").to_sym + window.controller_callback(nil, callback_event_name, nil, nil, nil) + expect(value).to eq 3 + end + + it "returns value, which can be used to unbind event" do + window = Ruby2D::Window.new + value = 0 + event_descriptor = window.on(key_event_type) do + value += 1 + end + window.off(event_descriptor) + callback_event_name = key_event_type.to_s.gsub("controller_", "").to_sym + window.controller_callback(nil, callback_event_name, nil, nil, nil) + expect(value).to eq 0 + end + end + end +end |
