summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-04-11 23:25:23 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-04-11 23:25:23 +0200
commit0c3cbdb988566ea3e2dcd52396b834cbab02d3fa (patch)
tree837058d3a4fc728287019c401b004650c38a56e9 /spec
parent846ea53d8844b42ac85bcf3a4c8307212c2c5075 (diff)
downloadffi-efl-0c3cbdb988566ea3e2dcd52396b834cbab02d3fa.zip
ffi-efl-0c3cbdb988566ea3e2dcd52396b834cbab02d3fa.tar.gz
add ecore event functions and spec
Diffstat (limited to 'spec')
-rw-r--r--spec/ecore_event_spec.rb115
1 files changed, 115 insertions, 0 deletions
diff --git a/spec/ecore_event_spec.rb b/spec/ecore_event_spec.rb
new file mode 100644
index 0000000..7da5bfd
--- /dev/null
+++ b/spec/ecore_event_spec.rb
@@ -0,0 +1,115 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/ecore/event'
+#
+describe EFL::ECORE do
+ #
+ include EFL
+ #
+ before(:all) do
+ USER_SIGNAL_CB = Proc.new do |data, type, event|
+ data.read_string.should eql "666"
+ type.should eql ECORE::EVENT_SIGNAL_USER
+ event.read_int.should eql 666
+ ECORE.event_current_type_get.should eql ECORE::EVENT_SIGNAL_USER
+ ECORE.event_current_event_get.address.should eql event.address
+ ECORE.main_loop_quit
+ end
+ EVENT_FREE_CB = Proc.new do |data,event|
+ data.read_string.should eql "none"
+ event.read_int.should eql 666
+ end
+ end
+ #
+ it 'should be able to add event hanlder and process event' do
+ ECORE.init
+ evt = FFI::MemoryPointer.new(:int)
+ evt.write_int 666
+ # add, del, add event handler
+ evt_handler = ECORE.event_handler_add ECORE::EVENT_SIGNAL_USER, USER_SIGNAL_CB, "wrong"
+ evt_handler.null?.should be_false
+ ECORE.event_handler_del evt_handler
+ evt_handler = ECORE.event_handler_add ECORE::EVENT_SIGNAL_USER, USER_SIGNAL_CB, "666"
+ evt_handler.null?.should be_false
+ # add, del, add event
+ ecore_evt = ECORE.event_add ECORE::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, FFI::MemoryPointer.from_string("none")
+ ecore_evt.null?.should be_false
+ ECORE.event_del ecore_evt
+ ecore_evt = ECORE.event_add ECORE::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, FFI::MemoryPointer.from_string("none")
+ ecore_evt.null?.should be_false
+ ECORE.main_loop_begin # process event
+ ECORE.shutdown
+ end
+ #
+ it "should be able to get and set event handler data" do
+ ECORE.init
+ evt = FFI::MemoryPointer.new(:int)
+ evt.write_int 666
+ evt_handler = ECORE.event_handler_add ECORE::EVENT_SIGNAL_USER, USER_SIGNAL_CB, "wrong"
+ evt_handler.null?.should be_false
+ ECORE.event_handler_data_get(evt_handler).read_string.should eql "wrong"
+ ECORE.event_handler_data_set evt_handler, FFI::MemoryPointer.from_string("666")
+ ECORE.event_handler_data_get(evt_handler).read_string.should eql "666"
+ ecore_evt = ECORE.event_add ECORE::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, FFI::MemoryPointer.from_string("none")
+ ecore_evt.null?.should be_false
+ ECORE.main_loop_begin # process event
+ ECORE.shutdown
+ end
+ #
+ it "should be able to create new event type" do
+ ECORE.init
+ ECORE.ecore_event_type_new.should_not eql 0
+ ECORE.ecore_event_type_new.should_not eql 0
+ ECORE.ecore_event_type_new.should_not eql 0
+ ECORE.shutdown
+ end
+ #
+ it "should be possible to add and del event filters" do
+ ECORE.init
+ loop_data = FFI::MemoryPointer.from_string("loop_data")
+ event_free_cb = Proc.new do |data,event|
+ data.read_string.should eql "wrong"
+ event.read_int.should eql 69
+ end
+ start_cb = Proc.new do |data|
+ data.read_string.should eql "yeah"
+ loop_data
+ end
+ count = 0
+ filter_cb = Proc.new do |data,loop_data,type,event|
+ data.read_string.should eql "yeah"
+ loop_data.read_string.should eql "loop_data"
+ type.should eql ECORE::EVENT_SIGNAL_USER
+ count += 1
+ if event.read_int == 69
+ count.should eql 1
+ false # drop first event
+ else
+ count.should eql 2
+ event.read_int.should eql 666
+ true
+ end
+ end
+ end_cb = Proc.new do |data,loop_data|
+ data.read_string.should eql "yeah"
+ loop_data.read_string.should eql "loop_data"
+ end
+ m0 = FFI::MemoryPointer.from_string("yeah")
+ filter = ECORE.ecore_event_filter_add start_cb, filter_cb, end_cb, m0
+ ECORE.event_handler_add ECORE::EVENT_SIGNAL_USER, USER_SIGNAL_CB, "666"
+ e1 = FFI::MemoryPointer.new(:int)
+ e1.write_int 69
+ m1 = FFI::MemoryPointer.from_string("wrong")
+ evt1 = ECORE.event_add ECORE::EVENT_SIGNAL_USER, e1, event_free_cb, m1
+ e2 = FFI::MemoryPointer.new(:int)
+ e2.write_int 666
+ m2 = FFI::MemoryPointer.from_string("none")
+ evt2 = ECORE.event_add ECORE::EVENT_SIGNAL_USER, e2, EVENT_FREE_CB, m2
+ ECORE.main_loop_begin # process event
+ ECORE.ecore_event_filter_del filter
+ evt2 = ECORE.event_add ECORE::EVENT_SIGNAL_USER, e2, EVENT_FREE_CB, m2
+ ECORE.main_loop_begin # process event
+ ECORE.shutdown
+ end
+end