diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-11 23:25:23 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-11 23:25:23 +0200 | 
| commit | 0c3cbdb988566ea3e2dcd52396b834cbab02d3fa (patch) | |
| tree | 837058d3a4fc728287019c401b004650c38a56e9 /spec | |
| parent | 846ea53d8844b42ac85bcf3a4c8307212c2c5075 (diff) | |
| download | ffi-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.rb | 115 | 
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 | 
