ffi-efl 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +12 -0
- data/Rakefile +1 -1
- data/lib/efl/ecore.rb +17 -6
- data/lib/efl/ecore_evas.rb +78 -24
- data/lib/efl/ecore_getopt.rb +27 -23
- data/lib/efl/ecore_input.rb +1 -1
- data/lib/efl/edje.rb +11 -11
- data/lib/efl/eet.rb +20 -14
- data/lib/efl/eina.rb +1 -1
- data/lib/efl/eina_hash.rb +17 -30
- data/lib/efl/eina_list.rb +16 -25
- data/lib/efl/elementary.rb +8 -19
- data/lib/efl/evas.rb +167 -38
- data/lib/efl/ffi.rb +28 -17
- data/lib/efl/{ffi → native}/ecore.rb +9 -5
- data/lib/efl/{ffi → native}/ecore_evas.rb +27 -20
- data/lib/efl/{ffi → native}/ecore_getopt.rb +9 -5
- data/lib/efl/{ffi → native}/ecore_input.rb +9 -5
- data/lib/efl/{ffi → native}/edje.rb +14 -10
- data/lib/efl/{ffi → native}/eet.rb +9 -5
- data/lib/efl/{ffi → native}/eina.rb +9 -5
- data/lib/efl/{ffi → native}/eina_hash.rb +9 -5
- data/lib/efl/{ffi → native}/eina_list.rb +9 -5
- data/lib/efl/{ffi → native}/eina_types.rb +9 -5
- data/lib/efl/{ffi → native}/elementary.rb +70 -66
- data/lib/efl/{ffi → native}/evas.rb +11 -7
- data/lib/efl/native.rb +16 -0
- data/lib/efl.rb +1 -1
- data/spec/ecore_evas_spec.rb +325 -6
- data/spec/ecore_getopt_spec.rb +70 -104
- data/spec/ecore_input_spec.rb +6 -6
- data/spec/ecore_spec.rb +63 -60
- data/spec/edje_spec.rb +6 -6
- data/spec/eet_spec.rb +23 -22
- data/spec/eina_hash_spec.rb +53 -58
- data/spec/eina_list_spec.rb +28 -18
- data/spec/eina_spec.rb +6 -6
- data/spec/evas_spec.rb +371 -119
- data/tasks/constants.rb +4 -0
- data/test/test_edje.rb +1 -1
- data/test/test_elm_win-native.rb +38 -0
- data/test/test_evas.rb +4 -4
- metadata +32 -20
- data/test/test_elm_win.rb +0 -35
data/spec/ecore_spec.rb
CHANGED
@@ -8,129 +8,107 @@ describe Efl::Ecore do
|
|
8
8
|
before(:all) do
|
9
9
|
Ecore = Efl::Ecore
|
10
10
|
USER_SIGNAL_CB = Proc.new do |data, type, event|
|
11
|
-
data.read_string.should
|
12
|
-
type.should
|
13
|
-
event.read_int.should
|
14
|
-
Ecore.event_current_type_get.should
|
15
|
-
Ecore.event_current_event_get.address.should
|
11
|
+
data.read_string.should == "ok"
|
12
|
+
type.should == Ecore::EVENT_SIGNAL_USER
|
13
|
+
event.read_int.should == 666
|
14
|
+
Ecore.event_current_type_get.should == Ecore::EVENT_SIGNAL_USER
|
15
|
+
Ecore.event_current_event_get.address.should == event.address
|
16
16
|
Ecore.main_loop_quit
|
17
17
|
end
|
18
18
|
EVENT_FREE_CB = Proc.new do |data,event|
|
19
|
-
data.read_string.should
|
20
|
-
event.read_int.should
|
19
|
+
data.read_string.should == "none"
|
20
|
+
event.read_int.should == 666
|
21
21
|
end
|
22
22
|
OK = FFI::MemoryPointer.from_string "ok"
|
23
23
|
KO = FFI::MemoryPointer.from_string "ko"
|
24
24
|
NONE = FFI::MemoryPointer.from_string "none"
|
25
25
|
end
|
26
|
+
before(:each) {
|
27
|
+
Ecore.init
|
28
|
+
}
|
29
|
+
after(:each) {
|
30
|
+
Ecore.shutdown
|
31
|
+
}
|
26
32
|
#
|
27
33
|
it "should init" do
|
28
|
-
Ecore.init.should
|
29
|
-
Ecore.init.should
|
30
|
-
Ecore.init.should eql 3
|
34
|
+
Ecore.init.should == 2
|
35
|
+
Ecore.init.should == 3
|
31
36
|
end
|
32
37
|
#
|
33
38
|
it "should shutdown" do
|
34
|
-
Ecore.shutdown.should
|
35
|
-
Ecore.shutdown.should
|
36
|
-
Ecore.shutdown.should eql 0
|
39
|
+
Ecore.shutdown.should == 2
|
40
|
+
Ecore.shutdown.should == 1
|
37
41
|
end
|
38
42
|
#
|
39
43
|
it "should run a single iteration of the mainloop" do
|
40
|
-
Ecore.init
|
41
|
-
Ecore.main_loop_iterate
|
42
|
-
Ecore.shutdown
|
43
|
-
end
|
44
|
-
#
|
45
|
-
it 'should write and read data from pipe' do
|
46
|
-
data = FFI::MemoryPointer.from_string("none")
|
47
|
-
cb = Proc.new do |data,buffer,bytes|
|
48
|
-
data.read_string.should eql 'none'
|
49
|
-
buffer.read_string.should eql 'hello world'
|
50
|
-
bytes.should eql 12
|
51
|
-
end
|
52
|
-
Ecore.init
|
53
|
-
pipe = Ecore::REcorePipe.new cb, data
|
54
|
-
pipe.write("hello world").should be_true
|
55
44
|
Ecore.main_loop_iterate
|
56
|
-
pipe.read_close
|
57
|
-
pipe.write_close
|
58
|
-
pipe.del.address.should eql data.address
|
59
|
-
Ecore.shutdown
|
60
45
|
end
|
61
46
|
#
|
62
47
|
it 'should be able to add, del event hanlder and process event' do
|
63
|
-
Ecore.init
|
64
48
|
evt = FFI::MemoryPointer.new(:int)
|
65
49
|
evt.write_int 666
|
66
50
|
# add, del, add event handler
|
67
51
|
evt_handler = Ecore.event_handler_add Ecore::EVENT_SIGNAL_USER, USER_SIGNAL_CB, KO
|
68
52
|
evt_handler.null?.should be_false
|
69
|
-
Ecore.event_handler_del(evt_handler).address.should
|
53
|
+
Ecore.event_handler_del(evt_handler).address.should == KO.address
|
70
54
|
evt_handler = Ecore.event_handler_add Ecore::EVENT_SIGNAL_USER, USER_SIGNAL_CB, OK
|
71
55
|
evt_handler.null?.should be_false
|
72
56
|
# add, del, add event
|
73
57
|
ecore_evt = Ecore.event_add Ecore::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, NONE
|
74
58
|
ecore_evt.null?.should be_false
|
75
|
-
Ecore.event_del(ecore_evt).address.should
|
59
|
+
Ecore.event_del(ecore_evt).address.should == NONE.address
|
76
60
|
ecore_evt = Ecore.event_add Ecore::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, NONE
|
77
61
|
ecore_evt.null?.should be_false
|
78
62
|
Ecore.main_loop_begin # process event
|
79
|
-
Ecore.shutdown
|
80
63
|
end
|
81
64
|
#
|
82
65
|
it "should be able to get and set event handler data" do
|
83
|
-
Ecore.init
|
84
66
|
evt = FFI::MemoryPointer.new(:int)
|
85
67
|
evt.write_int 666
|
86
68
|
evt_handler = Ecore.event_handler_add Ecore::EVENT_SIGNAL_USER, USER_SIGNAL_CB, KO
|
87
69
|
evt_handler.null?.should be_false
|
88
|
-
Ecore.event_handler_data_get(evt_handler).read_string.should
|
89
|
-
Ecore.event_handler_data_set(evt_handler, OK).address.should
|
90
|
-
Ecore.event_handler_data_get(evt_handler).read_string.should
|
70
|
+
Ecore.event_handler_data_get(evt_handler).read_string.should == "ko"
|
71
|
+
Ecore.event_handler_data_set(evt_handler, OK).address.should == KO.address
|
72
|
+
Ecore.event_handler_data_get(evt_handler).read_string.should == "ok"
|
91
73
|
ecore_evt = Ecore.event_add Ecore::EVENT_SIGNAL_USER, evt, EVENT_FREE_CB, NONE
|
92
74
|
ecore_evt.null?.should be_false
|
93
75
|
Ecore.main_loop_begin # process event
|
94
|
-
Ecore.shutdown
|
95
76
|
end
|
96
77
|
#
|
97
78
|
it "should be able to create new event type" do
|
98
|
-
Ecore.
|
99
|
-
Ecore.event_type_new.should_not
|
100
|
-
Ecore.event_type_new.should_not
|
101
|
-
Ecore.event_type_new.should_not eql 0
|
102
|
-
Ecore.shutdown
|
79
|
+
Ecore.event_type_new.should_not == 0
|
80
|
+
Ecore.event_type_new.should_not == 0
|
81
|
+
Ecore.event_type_new.should_not == 0
|
103
82
|
end
|
104
83
|
#
|
105
84
|
it "should be possible to add and del event filters" do
|
106
|
-
Ecore.init
|
107
85
|
loop_data = FFI::MemoryPointer.from_string("loop_data")
|
108
86
|
event_free_cb = Proc.new do |data,event|
|
109
|
-
data.read_string.should
|
110
|
-
event.read_int.should
|
87
|
+
data.read_string.should == "ko"
|
88
|
+
event.read_int.should == 69
|
111
89
|
end
|
112
90
|
start_cb = Proc.new do |data|
|
113
|
-
data.read_string.should
|
91
|
+
data.read_string.should == "ok"
|
114
92
|
loop_data
|
115
93
|
end
|
116
94
|
count = 0
|
117
95
|
filter_cb = Proc.new do |data,loop_data,type,event|
|
118
|
-
data.read_string.should
|
119
|
-
loop_data.read_string.should
|
120
|
-
type.should
|
96
|
+
data.read_string.should == "ok"
|
97
|
+
loop_data.read_string.should == "loop_data"
|
98
|
+
type.should == Ecore::EVENT_SIGNAL_USER
|
121
99
|
count += 1
|
122
100
|
if event.read_int == 69
|
123
|
-
count.should
|
101
|
+
count.should == 1
|
124
102
|
false # drop first event
|
125
103
|
else
|
126
|
-
count.should
|
127
|
-
event.read_int.should
|
104
|
+
count.should == 2
|
105
|
+
event.read_int.should == 666
|
128
106
|
true
|
129
107
|
end
|
130
108
|
end
|
131
109
|
end_cb = Proc.new do |data,loop_data|
|
132
|
-
data.read_string.should
|
133
|
-
loop_data.read_string.should
|
110
|
+
data.read_string.should == "ok"
|
111
|
+
loop_data.read_string.should == "loop_data"
|
134
112
|
end
|
135
113
|
filter = Ecore.event_filter_add start_cb, filter_cb, end_cb, OK
|
136
114
|
Ecore.event_handler_add Ecore::EVENT_SIGNAL_USER, USER_SIGNAL_CB, OK
|
@@ -141,10 +119,35 @@ describe Efl::Ecore do
|
|
141
119
|
e2.write_int 666
|
142
120
|
evt2 = Ecore.event_add Ecore::EVENT_SIGNAL_USER, e2, EVENT_FREE_CB, NONE
|
143
121
|
Ecore.main_loop_begin # process event
|
144
|
-
Ecore.event_filter_del(filter).address.should
|
122
|
+
Ecore.event_filter_del(filter).address.should == OK.address
|
145
123
|
evt2 = Ecore.event_add Ecore::EVENT_SIGNAL_USER, e2, EVENT_FREE_CB, NONE
|
146
124
|
Ecore.main_loop_begin # process event
|
147
|
-
Ecore.shutdown
|
148
125
|
end
|
149
126
|
#
|
127
|
+
describe Efl::Ecore::REcorePipe do
|
128
|
+
#
|
129
|
+
it 'should write and read data from pipe' do
|
130
|
+
data = FFI::MemoryPointer.from_string("none")
|
131
|
+
cb = Proc.new do |data,buffer,bytes|
|
132
|
+
data.read_string.should == 'none'
|
133
|
+
buffer.read_string.should == 'hello world'
|
134
|
+
bytes.should == 12
|
135
|
+
end
|
136
|
+
pipe = Ecore::REcorePipe.new cb, data
|
137
|
+
pipe.write("hello world").should be_true
|
138
|
+
Ecore.main_loop_iterate
|
139
|
+
pipe.read_close
|
140
|
+
pipe.write_close
|
141
|
+
end
|
142
|
+
it "manual destructor should not raise FFI::AutoPointer error" do
|
143
|
+
data = FFI::MemoryPointer.from_string("none")
|
144
|
+
cb = Proc.new do |data,buffer,bytes|
|
145
|
+
data.read_string.should == 'none'
|
146
|
+
buffer.read_string.should == 'hello world'
|
147
|
+
bytes.should == 12
|
148
|
+
end
|
149
|
+
pipe = Ecore::REcorePipe.new cb, data
|
150
|
+
pipe.del
|
151
|
+
end
|
152
|
+
end
|
150
153
|
end
|
data/spec/edje_spec.rb
CHANGED
@@ -8,15 +8,15 @@ describe Efl::Edje do
|
|
8
8
|
before(:all) { Edje = Efl::Edje }
|
9
9
|
#
|
10
10
|
it "should init" do
|
11
|
-
Edje.init.should
|
12
|
-
Edje.init.should
|
13
|
-
Edje.init.should
|
11
|
+
Edje.init.should == 1
|
12
|
+
Edje.init.should == 2
|
13
|
+
Edje.init.should == 3
|
14
14
|
end
|
15
15
|
#
|
16
16
|
it "should shutdown" do
|
17
|
-
Edje.shutdown.should
|
18
|
-
Edje.shutdown.should
|
19
|
-
Edje.shutdown.should
|
17
|
+
Edje.shutdown.should == 2
|
18
|
+
Edje.shutdown.should == 1
|
19
|
+
Edje.shutdown.should == 0
|
20
20
|
end
|
21
21
|
#
|
22
22
|
end
|
data/spec/eet_spec.rb
CHANGED
@@ -7,21 +7,22 @@ describe Efl::Eet do
|
|
7
7
|
#
|
8
8
|
before(:all) {
|
9
9
|
Eet = Efl::Eet
|
10
|
+
Native = Efl::Native
|
10
11
|
REetFile = Efl::Eet::REetFile
|
11
12
|
}
|
12
13
|
#
|
13
14
|
FP = '/tmp/_eet.cfg'
|
14
15
|
#
|
15
16
|
it "should init" do
|
16
|
-
Eet.init.should
|
17
|
-
Eet.init.should
|
18
|
-
Eet.init.should
|
17
|
+
Eet.init.should == 1
|
18
|
+
Eet.init.should == 2
|
19
|
+
Eet.init.should == 3
|
19
20
|
end
|
20
21
|
#
|
21
22
|
it "should shutdown" do
|
22
|
-
Eet.shutdown.should
|
23
|
-
Eet.shutdown.should
|
24
|
-
Eet.shutdown.should
|
23
|
+
Eet.shutdown.should == 2
|
24
|
+
Eet.shutdown.should == 1
|
25
|
+
Eet.shutdown.should == 0
|
25
26
|
end
|
26
27
|
#
|
27
28
|
it "should clearcache" do
|
@@ -31,10 +32,10 @@ describe Efl::Eet do
|
|
31
32
|
end
|
32
33
|
#
|
33
34
|
it "should have good enums" do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
Native.enum_type(:eet_file_mode)[:eet_file_mode_invalid].should == -1
|
36
|
+
Native.enum_type(:eet_file_mode)[:eet_file_mode_read].should == 0
|
37
|
+
Native.enum_type(:eet_file_mode)[:eet_file_mode_write].should == 1
|
38
|
+
Native.enum_type(:eet_file_mode)[:eet_file_mode_read_write].should == 2
|
38
39
|
end
|
39
40
|
#
|
40
41
|
describe Efl::Eet::REetFile do
|
@@ -42,45 +43,45 @@ describe Efl::Eet do
|
|
42
43
|
after(:each) { Eet.shutdown }
|
43
44
|
#
|
44
45
|
it "should open and close" do
|
45
|
-
f = REetFile.open FP,
|
46
|
+
f = REetFile.open FP, Native.enum_type(:eet_file_mode)[:eet_file_mode_write]
|
46
47
|
f.write 'fake', 'value'
|
47
48
|
f.close
|
48
49
|
end
|
49
50
|
#
|
50
51
|
it "should be able to get file access mode" do
|
51
|
-
|
52
|
+
Native.enum_type(:eet_file_mode).symbols.each do |m|
|
52
53
|
next if m==:eet_file_mode_invalid
|
53
|
-
REetFile.open FP,
|
54
|
-
f.mode_get.should
|
54
|
+
REetFile.open FP, Native.enum_type(:eet_file_mode)[m] do |f|
|
55
|
+
f.mode_get.should == m
|
55
56
|
end
|
56
57
|
end
|
57
58
|
end
|
58
59
|
#
|
59
60
|
it "should write" do
|
60
61
|
f = REetFile.open FP, :eet_file_mode_write
|
61
|
-
f.
|
62
|
+
f.mode.should == :eet_file_mode_write
|
62
63
|
f.write 'config', 'test key'
|
63
64
|
f.close
|
64
65
|
end
|
65
66
|
#
|
66
67
|
it "default mode should be read" do
|
67
68
|
f = REetFile.open FP
|
68
|
-
f.
|
69
|
+
f.mode.should == :eet_file_mode_read
|
69
70
|
f.close
|
70
71
|
end
|
71
72
|
#
|
72
73
|
it "should read" do
|
73
74
|
f = REetFile.open FP, :eet_file_mode_read
|
74
|
-
f.mode_get.should
|
75
|
-
f.read('config').should
|
75
|
+
f.mode_get.should == :eet_file_mode_read
|
76
|
+
f.read('config').should == 'test key'
|
76
77
|
f.close
|
77
78
|
end
|
78
79
|
#
|
79
80
|
it "should read/write" do
|
80
81
|
f = REetFile.open FP, :eet_file_mode_read_write
|
81
82
|
f.write 'configg', 'test key'
|
82
|
-
f.read('configg').should
|
83
|
-
f.close
|
83
|
+
f.read('configg').should == 'test key'
|
84
|
+
# f.close #leave it to FFI::AutoPointer
|
84
85
|
end
|
85
86
|
#
|
86
87
|
it "should write in block" do
|
@@ -91,14 +92,14 @@ describe Efl::Eet do
|
|
91
92
|
#
|
92
93
|
it "should read in block" do
|
93
94
|
REetFile.open FP, :eet_file_mode_read do |f|
|
94
|
-
f.read('config2').should
|
95
|
+
f.read('config2').should == 'test--key'
|
95
96
|
end
|
96
97
|
end
|
97
98
|
#
|
98
99
|
it "should read/write in block" do
|
99
100
|
REetFile.open FP, :eet_file_mode_read_write do |f|
|
100
101
|
f.write 'config22', 'test--key'
|
101
|
-
f.read('config22').should
|
102
|
+
f.read('config22').should == 'test--key'
|
102
103
|
end
|
103
104
|
end
|
104
105
|
#
|
data/spec/eina_hash_spec.rb
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
# -*- coding: UTF-8 -*-
|
3
3
|
#
|
4
|
+
require 'efl'
|
4
5
|
require 'efl/eina_hash'
|
5
6
|
#
|
6
7
|
describe Efl::EinaHash do
|
7
8
|
#
|
8
9
|
before(:all) {
|
9
10
|
REinaHash = Efl::EinaHash::REinaHash
|
10
|
-
Efl::Eina.init.should
|
11
|
+
Efl::Eina.init.should == 1
|
11
12
|
@d0 = FFI::MemoryPointer.from_string "D0"
|
12
13
|
@d1 = FFI::MemoryPointer.from_string "D1"
|
13
14
|
@d2 = FFI::MemoryPointer.from_string "D2"
|
14
15
|
@d3 = FFI::MemoryPointer.from_string "D3"
|
15
16
|
}
|
16
17
|
after(:all) {
|
17
|
-
Efl::Eina.shutdown.should
|
18
|
+
Efl::Eina.shutdown.should == 0
|
18
19
|
}
|
19
20
|
#
|
20
21
|
it "should append prepend and fetch" do
|
@@ -23,32 +24,26 @@ describe Efl::EinaHash do
|
|
23
24
|
h.add 'k1', @d1
|
24
25
|
h['k3']=@d3
|
25
26
|
h['k0']=@d0
|
26
|
-
h['k0'].read_string.should
|
27
|
-
h['k1'].read_string.should
|
28
|
-
h['k2'].read_string.should
|
29
|
-
h['k3'].read_string.should
|
27
|
+
h['k0'].read_string.should == "D0"
|
28
|
+
h['k1'].read_string.should == "D1"
|
29
|
+
h['k2'].read_string.should == "D2"
|
30
|
+
h['k3'].read_string.should == "D3"
|
30
31
|
cpt=0
|
31
32
|
h.each { |k,v|
|
32
33
|
cpt+=1
|
33
34
|
v.read_string.empty?.should be_false
|
34
35
|
}
|
35
|
-
cpt.should
|
36
|
+
cpt.should == 4
|
36
37
|
end
|
37
38
|
#
|
38
39
|
it "should be able to convert into ruby Hash from NULL pointer" do
|
39
|
-
h =
|
40
|
+
h = REinaHash.new(FFI::Pointer::NULL).to_h
|
40
41
|
h.empty?.should be_true
|
41
42
|
h.is_a?(Hash).should be_true
|
42
43
|
end
|
43
44
|
#
|
44
45
|
it "should be able to convert into ruby Hash from empty REinaHash" do
|
45
|
-
h =
|
46
|
-
h.empty?.should be_true
|
47
|
-
h.is_a?(Hash).should be_true
|
48
|
-
end
|
49
|
-
#
|
50
|
-
it "should be able to convert into ruby Hash from empty REinaHash pointer" do
|
51
|
-
h = Hash.from_eina_hash REinaHash.new.to_ptr
|
46
|
+
h = REinaHash.new(FFI::Pointer::NULL).to_h
|
52
47
|
h.empty?.should be_true
|
53
48
|
h.is_a?(Hash).should be_true
|
54
49
|
end
|
@@ -63,28 +58,28 @@ describe Efl::EinaHash do
|
|
63
58
|
h.add 'k1', d1
|
64
59
|
h['k3']=d3
|
65
60
|
h["k0"]=d0
|
66
|
-
h["k0"].read_string.should
|
67
|
-
h['k1'].read_string.should
|
68
|
-
h['k2'].read_string.should
|
69
|
-
h['k3'].read_string.should
|
61
|
+
h["k0"].read_string.should == "D0"
|
62
|
+
h['k1'].read_string.should == "D1"
|
63
|
+
h['k2'].read_string.should == "D2"
|
64
|
+
h['k3'].read_string.should == "D3"
|
70
65
|
cpt=0
|
71
66
|
h.each { |k,v|
|
72
67
|
cpt+=1
|
73
68
|
v.read_string.empty?.should be_false
|
74
69
|
true
|
75
70
|
}
|
76
|
-
cpt.should
|
77
|
-
rh =
|
78
|
-
rh.length.should
|
71
|
+
cpt.should == 4
|
72
|
+
rh = h.to_h
|
73
|
+
rh.length.should == 4
|
79
74
|
rh2 = {}
|
80
75
|
rh.each { |k,v|
|
81
76
|
rh2[k.read_string]=v.read_string
|
82
77
|
true
|
83
78
|
}
|
84
|
-
rh2['k0'].should
|
85
|
-
rh2['k1'].should
|
86
|
-
rh2['k2'].should
|
87
|
-
rh2['k3'].should
|
79
|
+
rh2['k0'].should == 'D0'
|
80
|
+
rh2['k1'].should == 'D1'
|
81
|
+
rh2['k2'].should == 'D2'
|
82
|
+
rh2['k3'].should == 'D3'
|
88
83
|
end
|
89
84
|
#
|
90
85
|
it "should be able to convert into ruby Hash from non empty REinaHash pointer" do
|
@@ -97,12 +92,12 @@ describe Efl::EinaHash do
|
|
97
92
|
h.add 'k1', d1
|
98
93
|
h['k3']=d3
|
99
94
|
h['k0']=d0
|
100
|
-
h['k0'].read_string.should
|
101
|
-
h['k1'].read_string.should
|
102
|
-
h['k2'].read_string.should
|
103
|
-
h['k3'].read_string.should
|
104
|
-
rh =
|
105
|
-
rh.length.should
|
95
|
+
h['k0'].read_string.should == "D0"
|
96
|
+
h['k1'].read_string.should == "D1"
|
97
|
+
h['k2'].read_string.should == "D2"
|
98
|
+
h['k3'].read_string.should == "D3"
|
99
|
+
rh = h.to_h
|
100
|
+
rh.length.should == 4
|
106
101
|
end
|
107
102
|
#
|
108
103
|
it "should be able to convert into ruby Hash from non empty REinaHash pointer, with key from string" do
|
@@ -115,16 +110,16 @@ describe Efl::EinaHash do
|
|
115
110
|
h.add 'k1', d1
|
116
111
|
h['k3']=d3
|
117
112
|
h['k0']=d0
|
118
|
-
h['k0'].read_string.should
|
119
|
-
h['k1'].read_string.should
|
120
|
-
h['k2'].read_string.should
|
121
|
-
h['k3'].read_string.should
|
113
|
+
h['k0'].read_string.should == "D0"
|
114
|
+
h['k1'].read_string.should == "D1"
|
115
|
+
h['k2'].read_string.should == "D2"
|
116
|
+
h['k3'].read_string.should == "D3"
|
122
117
|
rh = h.to_h_conv
|
123
|
-
rh.length.should
|
124
|
-
rh['k0'].read_string.should
|
125
|
-
rh['k1'].read_string.should
|
126
|
-
rh['k2'].read_string.should
|
127
|
-
rh['k3'].read_string.should
|
118
|
+
rh.length.should == 4
|
119
|
+
rh['k0'].read_string.should == "D0"
|
120
|
+
rh['k1'].read_string.should == "D1"
|
121
|
+
rh['k2'].read_string.should == "D2"
|
122
|
+
rh['k3'].read_string.should == "D3"
|
128
123
|
end
|
129
124
|
#
|
130
125
|
it "should be able to convert into ruby Hash from non empty REinaHash pointer, with key from string block" do
|
@@ -137,21 +132,21 @@ describe Efl::EinaHash do
|
|
137
132
|
h.add 'k1', d1
|
138
133
|
h['k3']=d3
|
139
134
|
h['k0']=d0
|
140
|
-
h['k0'].read_string.should
|
141
|
-
h['k1'].read_string.should
|
142
|
-
h['k2'].read_string.should
|
143
|
-
h['k3'].read_string.should
|
135
|
+
h['k0'].read_string.should == "D0"
|
136
|
+
h['k1'].read_string.should == "D1"
|
137
|
+
h['k2'].read_string.should == "D2"
|
138
|
+
h['k3'].read_string.should == "D3"
|
144
139
|
cpt=0
|
145
140
|
rh = h.to_h_conv { |k| cpt+=1; k.read_string }
|
146
|
-
cpt.should
|
147
|
-
rh.length.should
|
148
|
-
rh['k0'].read_string.should
|
149
|
-
rh['k1'].read_string.should
|
150
|
-
rh['k2'].read_string.should
|
151
|
-
rh['k3'].read_string.should
|
141
|
+
cpt.should == 4
|
142
|
+
rh.length.should == 4
|
143
|
+
rh['k0'].read_string.should == "D0"
|
144
|
+
rh['k1'].read_string.should == "D1"
|
145
|
+
rh['k2'].read_string.should == "D2"
|
146
|
+
rh['k3'].read_string.should == "D3"
|
152
147
|
end
|
153
148
|
#
|
154
|
-
it "should be able to build from ruby Hash" do
|
149
|
+
it "should be able to build REinaHash from ruby Hash" do
|
155
150
|
rh = {}
|
156
151
|
k0 = FFI::MemoryPointer.from_string "0"
|
157
152
|
k1 = FFI::MemoryPointer.from_string "1"
|
@@ -166,15 +161,15 @@ describe Efl::EinaHash do
|
|
166
161
|
rh[k2]=d2
|
167
162
|
rh[k3]=d3
|
168
163
|
h = REinaHash.new rh
|
169
|
-
h[k0].read_string.should
|
170
|
-
h[k1].read_string.should
|
171
|
-
h[k2].read_string.should
|
172
|
-
h[k3].read_string.should
|
164
|
+
h[k0].read_string.should == "D0"
|
165
|
+
h[k1].read_string.should == "D1"
|
166
|
+
h[k2].read_string.should == "D2"
|
167
|
+
h[k3].read_string.should == "D3"
|
173
168
|
end
|
174
169
|
#
|
175
170
|
it "alternate constructor should work" do
|
176
171
|
cstr_cnt = 0
|
177
|
-
h = REinaHash.new { cstr_cnt+=1; Efl::
|
178
|
-
cstr_cnt.should
|
172
|
+
h = REinaHash.new { cstr_cnt+=1; Efl::Native.eina_hash_string_superfast_new FFI::Pointer::NULL }
|
173
|
+
cstr_cnt.should == 1
|
179
174
|
end
|
180
175
|
end
|
data/spec/eina_list_spec.rb
CHANGED
@@ -8,10 +8,10 @@ describe Efl::EinaList do
|
|
8
8
|
#
|
9
9
|
before(:all) {
|
10
10
|
REinaList = Efl::EinaList::REinaList
|
11
|
-
Efl::Eina.init.should
|
11
|
+
Efl::Eina.init.should == 1
|
12
12
|
}
|
13
13
|
after(:all) {
|
14
|
-
Efl::Eina.shutdown.should
|
14
|
+
Efl::Eina.shutdown.should == 0
|
15
15
|
}
|
16
16
|
#
|
17
17
|
it "should append prepend and fetch" do
|
@@ -25,26 +25,20 @@ describe Efl::EinaList do
|
|
25
25
|
l << d4
|
26
26
|
l.unshift d1
|
27
27
|
0.upto 3 do |i|
|
28
|
-
l.nth(i).read_string.should
|
28
|
+
l.nth(i).read_string.should == "D#{i}"
|
29
29
|
end
|
30
30
|
l.each { |p| p.read_string.empty?.should be_false }
|
31
31
|
l.free
|
32
32
|
end
|
33
33
|
#
|
34
34
|
it "should be able to convert into ruby Array from NULL pointer" do
|
35
|
-
ary =
|
35
|
+
ary = REinaList.new(FFI::Pointer::NULL).to_ary
|
36
36
|
ary.empty?.should be_true
|
37
37
|
ary.is_a?(Array).should be_true
|
38
38
|
end
|
39
39
|
#
|
40
40
|
it "should be able to convert into ruby Array from empty REinaList" do
|
41
|
-
ary =
|
42
|
-
ary.empty?.should be_true
|
43
|
-
ary.is_a?(Array).should be_true
|
44
|
-
end
|
45
|
-
#
|
46
|
-
it "should be able to convert into ruby Array from empty REinaList pointer" do
|
47
|
-
ary = Array.from_eina_list REinaList.new.to_ptr
|
41
|
+
ary = REinaList.new.to_ary
|
48
42
|
ary.empty?.should be_true
|
49
43
|
ary.is_a?(Array).should be_true
|
50
44
|
end
|
@@ -59,10 +53,10 @@ describe Efl::EinaList do
|
|
59
53
|
l.prepend d2
|
60
54
|
l << d4
|
61
55
|
l.unshift d1
|
62
|
-
ary =
|
63
|
-
ary.length.should
|
56
|
+
ary = l.to_ary
|
57
|
+
ary.length.should == 4
|
64
58
|
0.upto 3 do |i|
|
65
|
-
ary[i].read_string.should
|
59
|
+
ary[i].read_string.should == "D#{i}"
|
66
60
|
end
|
67
61
|
l.free
|
68
62
|
end
|
@@ -77,10 +71,10 @@ describe Efl::EinaList do
|
|
77
71
|
l.prepend d2
|
78
72
|
l << d4
|
79
73
|
l.unshift d1
|
80
|
-
ary =
|
81
|
-
ary.length.should
|
74
|
+
ary = l.to_ary
|
75
|
+
ary.length.should == 4
|
82
76
|
0.upto 3 do |i|
|
83
|
-
ary[i].read_string.should
|
77
|
+
ary[i].read_string.should == "D#{i}"
|
84
78
|
end
|
85
79
|
l.free
|
86
80
|
end
|
@@ -93,9 +87,25 @@ describe Efl::EinaList do
|
|
93
87
|
a << ::FFI::MemoryPointer.from_string("D3")
|
94
88
|
l = REinaList.new a
|
95
89
|
0.upto 3 do |i|
|
96
|
-
l.nth(i).read_string.should
|
90
|
+
l.nth(i).read_string.should == "D#{i}"
|
97
91
|
end
|
98
92
|
l.free
|
99
93
|
end
|
100
94
|
#
|
95
|
+
it "Enumerable should work" do
|
96
|
+
l = REinaList.new
|
97
|
+
d1 = ::FFI::MemoryPointer.from_string "D0"
|
98
|
+
d2 = ::FFI::MemoryPointer.from_string "D1"
|
99
|
+
d3 = ::FFI::MemoryPointer.from_string "D2"
|
100
|
+
d4 = ::FFI::MemoryPointer.from_string "D3"
|
101
|
+
l.append d3
|
102
|
+
l.prepend d2
|
103
|
+
l << d4
|
104
|
+
l.unshift d1
|
105
|
+
r = 0
|
106
|
+
l.each do |e| r+=1; end
|
107
|
+
r.should == 4
|
108
|
+
r = l.inject(0) do |s,e| s+=1; s; end
|
109
|
+
r.should == 4
|
110
|
+
end
|
101
111
|
end
|
data/spec/eina_spec.rb
CHANGED
@@ -6,15 +6,15 @@ require 'efl/eina'
|
|
6
6
|
describe Efl::Eina do
|
7
7
|
#
|
8
8
|
it "should init" do
|
9
|
-
Efl::Eina.init.should
|
10
|
-
Efl::Eina.init.should
|
11
|
-
Efl::Eina.init.should
|
9
|
+
Efl::Eina.init.should == 1
|
10
|
+
Efl::Eina.init.should == 2
|
11
|
+
Efl::Eina.init.should == 3
|
12
12
|
end
|
13
13
|
#
|
14
14
|
it "should shutdown" do
|
15
|
-
Efl::Eina.shutdown.should
|
16
|
-
Efl::Eina.shutdown.should
|
17
|
-
Efl::Eina.shutdown.should
|
15
|
+
Efl::Eina.shutdown.should == 2
|
16
|
+
Efl::Eina.shutdown.should == 1
|
17
|
+
Efl::Eina.shutdown.should == 0
|
18
18
|
end
|
19
19
|
#
|
20
20
|
end
|