summaryrefslogtreecommitdiffstats
path: root/spec/eina/eina_list_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/eina/eina_list_spec.rb')
-rw-r--r--spec/eina/eina_list_spec.rb100
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