From 44abb93bd6ad3f44d8b8a139e2b0ac0da7953631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 26 Apr 2011 17:00:40 +0200 Subject: add more evas specs --- spec/evas_spec.rb | 167 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 150 insertions(+), 17 deletions(-) diff --git a/spec/evas_spec.rb b/spec/evas_spec.rb index 1ec0849..755fb23 100644 --- a/spec/evas_spec.rb +++ b/spec/evas_spec.rb @@ -52,7 +52,31 @@ describe Efl::Evas do Evas.shutdown end # - describe Efl::Evas::Evas do + describe "Evas base object" do + before(:all) do + Evas.init + @width = 800 + @height = 600 + @pixels = FFI::MemoryPointer.new :int, @width*@height + @e = Evas::Evas.new + @e.output_method_set Evas::render_method_lookup("buffer") + @e.output_viewport_set 0, 0, @width, @height + @e.output_size_set @width, @height + einfo = Efl::API::EvasEngineInfoBuffer.new @e.engine_info_get + einfo[:info][:depth_type] = Efl::API::EVAS_ENGINE_BUFFER_DEPTH_ARGB32 + einfo[:info][:dest_buffer] = @pixels + einfo[:info][:dest_buffer_row_bytes] = @width * FFI::type_size(:int); + einfo[:info][:use_color_key] = 0; + einfo[:info][:alpha_threshold] = 0; + einfo[:info][:func][:new_update_region] = nil #FFI::Pointer::NULL; + einfo[:info][:func][:free_update_region] = nil #FFI::Pointer::NULL; + @e.engine_info_set einfo + end + after(:all) do + @e.free + @pixels.free + Evas.shutdown + end it "should be able to create and destroy evas" do e1 = Evas::Evas.new e1.ptr.address.should_not eql 0 @@ -80,22 +104,131 @@ describe Efl::Evas do end # it "focus should work" do - e = Evas::Evas.new - Efl::API.evas_focus_in e.ptr - Efl::API.evas_focus_state_get(e.ptr).should be_true - Efl::API.evas_focus_out e.ptr - Efl::API.evas_focus_state_get(e.ptr).should be_false - Efl::Evas.focus_in e.ptr - Efl::Evas.focus_state_get(e.ptr).should be_true - Efl::Evas.focus_out e.ptr - Efl::Evas.focus_state_get(e.ptr).should be_false - e.focus_in { |r| r.should be_nil } - e.focus_state_get.should be_true - e.focus_state_get { |r| r.should be_true } - e.focus_out.should be_nil - e.focus_state_get.should be_false - e.focus_state_get { |r| r.should be_false } - e.free + Efl::API.evas_focus_in @e.ptr + Efl::API.evas_focus_state_get(@e.ptr).should be_true + Efl::API.evas_focus_out @e.ptr + Efl::API.evas_focus_state_get(@e.ptr).should be_false + Efl::Evas.focus_in @e.ptr + Efl::Evas.focus_state_get(@e.ptr).should be_true + Efl::Evas.focus_out @e.ptr + Efl::Evas.focus_state_get(@e.ptr).should be_false + @e.focus_in { |r| r.should be_nil } + @e.focus_state_get.should be_true + @e.focus_state_get { |r| r.should be_true } + @e.focus_out.should be_nil + @e.focus_state_get.should be_false + @e.focus_state_get { |r| r.should be_false } + end + # + it "nochange should work" do + @e.nochange_push + @e.nochange_pop + end + # + it "attach data should work" do + data = FFI::MemoryPointer.from_string "my data" + @e.data_attach_set data + @e.data_attach_get.read_string.should eql "my data" + end + # + it "should not crash" do + @e.damage_rectangle_add 1, 2, 3, 4 + @e.obscured_rectangle_add 1, 2, 3, 4 + @e.obscured_clear + list = @e.render_updates + Evas.render_updates_free list + @e.render + @e.norender + @e.render_idle_flush + @e.render_dump + end + it "output method should work" do + @e.output_method_get.should eql Evas::render_method_lookup("buffer") + # output_method_set tested in before(:all) + l = Efl::Evas::render_method_list + Evas::render_method_list_free l + end + # + it "engine info should work" do + # engine_info_get and engine_info_set tested in before(:all) + true.should be_true + end + # + it "output size should work" do + @e.output_size_set 69, 666 + @e.output_size_get.should eql [69,666] + end + it "output viewport should work" do + @e.output_viewport_set 0, 0, 666, 69 + @e.output_viewport_get.should eql [0,0,666,69] + end + # + it "coordinates evas<=>world should work" do + @e.output_viewport_set 0, 0, 800, 600 + x = @e.coord_screen_x_to_world 666 + r = @e.coord_world_x_to_screen x + r.should <= 668 + r.should >= 664 + y = @e.coord_screen_y_to_world 69 + r = @e.coord_world_y_to_screen y + r.should <= 71 + r.should >= 67 + end + # + it "freeze and thaw should work" do + @e.event_freeze_get.should eql 0 + @e.event_freeze + @e.event_freeze_get.should eql 1 + @e.event_thaw + @e.event_freeze_get.should eql 0 + end + # + it "up/down mouse event should work" do + @e.event_feed_mouse_down 2, :evas_button_double_click, Time.now.to_i, FFI::Pointer::NULL + @e.pointer_button_down_mask_get.should eql 2 + @e.event_feed_mouse_up 2, :evas_button_double_click, Time.now.to_i, FFI::Pointer::NULL + @e.pointer_button_down_mask_get.should eql 0 + end + # + it "move mouse event should work" do + @e.pointer_output_xy_get.should eql [0,0] + @e.pointer_canvas_xy_get.should eql [0,0] + @e.event_feed_mouse_move 6, 6, Time.now.to_i, FFI::Pointer::NULL + @e.pointer_output_xy_get.should eql [6,6] + @e.pointer_canvas_xy_get.should eql [6,6] + end + # + it "in/out mouse event should work" do + @e.pointer_inside_get.should be_false + @e.event_feed_mouse_in Time.now.to_i, FFI::Pointer::NULL + @e.pointer_inside_get.should be_true + @e.event_feed_mouse_out Time.now.to_i, FFI::Pointer::NULL + @e.pointer_inside_get.should be_false + end + # + # TODO + # evas_event_feed_multi_down + # evas_event_feed_multi_up + # evas_event_feed_multi_move + # evas_event_feed_mouse_cancel + # evas_event_feed_mouse_wheel + # evas_event_feed_key_down + # evas_event_feed_key_up + # evas_event_feed_hold + # + it "event callback should work" do + # FIXME + kd_cb = Proc.new do |data, e, obj, event_info| + puts data + data.read_string.should eq "key_down" + puts e + e.should eql @e + puts obj + puts envent_info + end + kd_d = FFI::MemoryPointer.from_string "key down" + @e.event_callback_add :evas_callback_mouse_in, kd_cb, kd_d + @e.event_feed_mouse_in Time.now.to_i, FFI::Pointer::NULL end # end -- cgit v1.1-2-g2b99