diff options
Diffstat (limited to 'spec/eina')
-rw-r--r-- | spec/eina/eina_list_spec.rb | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/spec/eina/eina_list_spec.rb b/spec/eina/eina_list_spec.rb new file mode 100644 index 0000000..2522256 --- /dev/null +++ b/spec/eina/eina_list_spec.rb @@ -0,0 +1,100 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'efl/eina/eina_list' +# +describe Efl::Eina::EinaList do + # + before(:all) { + EinaList = Efl::Eina::EinaList + Efl::Eina.init.should eql 1 + } + after(:all) { + Efl::Eina.shutdown.should eql 0 + } + # + it "should append prepend and fetch" do + l = EinaList.new + d1 = ::FFI::MemoryPointer.from_string "D0" + d2 = ::FFI::MemoryPointer.from_string "D1" + d3 = ::FFI::MemoryPointer.from_string "D2" + d4 = ::FFI::MemoryPointer.from_string "D3" + l.append d3 + l.prepend d2 + l << d4 + l.unshift d1 + 0.upto 3 do |i| + l.nth(i).read_string.should eql "D#{i}" + end + l.each { |p| p.read_string.empty?.should be_false } + l.free + end + # + it "should be able to convert into ruby Array from NULL pointer" do + ary = Array.from_eina_list ::FFI::Pointer::NULL + ary.empty?.should be_true + ary.is_a?(Array).should be_true + end + # + it "should be able to convert into ruby Array from empty EinaList" do + ary = Array.from_eina_list EinaList.new + ary.empty?.should be_true + ary.is_a?(Array).should be_true + end + # + it "should be able to convert into ruby Array from empty EinaList pointer" do + ary = Array.from_eina_list EinaList.new.ptr + ary.empty?.should be_true + ary.is_a?(Array).should be_true + end + # + it "should be able to convert into ruby Array from non empty EinaList" do + l = EinaList.new + d1 = ::FFI::MemoryPointer.from_string "D0" + d2 = ::FFI::MemoryPointer.from_string "D1" + d3 = ::FFI::MemoryPointer.from_string "D2" + d4 = ::FFI::MemoryPointer.from_string "D3" + l.append d3 + l.prepend d2 + l << d4 + l.unshift d1 + ary = Array.from_eina_list l + ary.length.should eql 4 + 0.upto 3 do |i| + ary[i].read_string.should eql "D#{i}" + end + l.free + end + # + it "should be able to convert into ruby Array from non empty EinaList pointer" do + l = EinaList.new + d1 = ::FFI::MemoryPointer.from_string "D0" + d2 = ::FFI::MemoryPointer.from_string "D1" + d3 = ::FFI::MemoryPointer.from_string "D2" + d4 = ::FFI::MemoryPointer.from_string "D3" + l.append d3 + l.prepend d2 + l << d4 + l.unshift d1 + ary = Array.from_eina_list l.ptr + ary.length.should eql 4 + 0.upto 3 do |i| + ary[i].read_string.should eql "D#{i}" + end + l.free + end + # + it "should be able to build from ruby Array" do + a = [] + a << ::FFI::MemoryPointer.from_string("D0") + a << ::FFI::MemoryPointer.from_string("D1") + a << ::FFI::MemoryPointer.from_string("D2") + a << ::FFI::MemoryPointer.from_string("D3") + l = EinaList.new a + 0.upto 3 do |i| + l.nth(i).read_string.should eql "D#{i}" + end + l.free + end + # +end |