ffi-efl 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|