From b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9 Mon Sep 17 00:00:00 2001 From: lstrzebinczyk Date: Tue, 25 Apr 2017 21:41:44 +0200 Subject: allow events unbinding --- test/events_spec.rb | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 test/events_spec.rb (limited to 'test') 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 -- cgit v1.2.3