summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorlstrzebinczyk <[email protected]>2017-04-25 21:41:44 +0200
committerTom Black <[email protected]>2017-05-18 18:12:48 -0400
commitb4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9 (patch)
treeb213fee3ad5030169fb4e41b68af4d19bf339b48 /test
parent2c164654e5ebec39a3ae2c47d352349332f50ee3 (diff)
downloadruby2d-b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9.tar.gz
ruby2d-b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9.zip
allow events unbinding
Diffstat (limited to 'test')
-rw-r--r--test/events_spec.rb126
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