mplayer-ruby 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +3 -0
- data/{README.rdoc → README.md} +17 -29
- data/Rakefile +2 -22
- data/TODO +1 -35
- data/examples/general_playback.rb +24 -24
- data/lib/mplayer-ruby.rb +3 -2
- data/lib/mplayer-ruby/slave.rb +35 -12
- data/lib/mplayer-ruby/slave_commands.rb +34 -26
- data/lib/mplayer-ruby/slave_sub_commands.rb +121 -0
- data/lib/mplayer-ruby/slave_tv_commands.rb +99 -0
- data/lib/mplayer-ruby/slave_video_commands.rb +136 -122
- data/mplayer-ruby.gemspec +22 -69
- data/test/slave_commands_test.rb +93 -54
- data/test/slave_sub_commands_test.rb +243 -0
- data/test/slave_test.rb +59 -9
- data/test/slave_tv_commands_test.rb +109 -0
- data/test/slave_video_commands_test.rb +226 -160
- data/test/test space.mp3 b/data/test/test → space.mp3 +0 -0
- data/test/teststrap.rb +32 -7
- metadata +90 -65
- data/VERSION +0 -1
data/test/slave_test.rb
CHANGED
@@ -1,17 +1,67 @@
|
|
1
1
|
require File.expand_path("teststrap", File.dirname(__FILE__))
|
2
2
|
|
3
|
+
def setup_with_location(location = "test/test.mp3")
|
4
|
+
mock(Open4).popen4("mplayer -slave -quiet \"#{location}\"") { [true,true,true,true] }.any_times
|
5
|
+
stub(true).gets { "playback" }
|
6
|
+
MPlayer::Slave.new(location)
|
7
|
+
end
|
8
|
+
|
3
9
|
context "MPlayer::Player" do
|
4
10
|
setup do
|
5
|
-
|
6
|
-
stub(true).gets { "playback" }
|
7
|
-
@player = MPlayer::Slave.new('test/test.mp3')
|
11
|
+
setup_with_location
|
8
12
|
end
|
9
13
|
asserts("invalid file") { MPlayer::Slave.new('boooger') }.raises ArgumentError,"Invalid File"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
asserts_topic.assigns(:file)
|
15
|
+
asserts_topic.assigns(:pid)
|
16
|
+
asserts_topic.assigns(:stdin)
|
17
|
+
asserts_topic.assigns(:stdout)
|
18
|
+
asserts_topic.assigns(:stderr)
|
19
|
+
end
|
20
|
+
|
21
|
+
context "MPlayer::Player for URL" do
|
22
|
+
setup do
|
23
|
+
setup_with_location("http://www.example.com/test.mp3")
|
24
|
+
end
|
25
|
+
denies("url passes") { MPlayer::Slave.new('http://www.example.com/test.mp3') }.raises ArgumentError,"Invalid File"
|
26
|
+
asserts_topic.assigns(:file)
|
27
|
+
asserts_topic.assigns(:pid)
|
28
|
+
asserts_topic.assigns(:stdin)
|
29
|
+
asserts_topic.assigns(:stdout)
|
30
|
+
asserts_topic.assigns(:stderr)
|
31
|
+
end
|
32
|
+
|
33
|
+
context "MPlayer::Player with arbitrary options" do
|
34
|
+
setup do
|
35
|
+
mock(Open4).popen4('mplayer -slave -quiet -something "test/test.mp3"') { [true,true,true,true] }
|
36
|
+
stub(true).gets { "playback" }
|
37
|
+
end
|
38
|
+
asserts("new :arbitrary") { MPlayer::Slave.new('test/test.mp3', :options => "-something") }
|
39
|
+
end
|
15
40
|
|
16
|
-
|
41
|
+
context "MPlayer::Player with fullscreen enabled" do
|
42
|
+
setup do
|
43
|
+
mock(Open4).popen4('mplayer -slave -quiet -fs "test/test.mp3"') { [true,true,true,true] }
|
44
|
+
stub(true).gets { "playback" }
|
45
|
+
end
|
46
|
+
asserts("new :fullscreen") { MPlayer::Slave.new('test/test.mp3', :fullscreen => true) }
|
47
|
+
end
|
48
|
+
|
49
|
+
context "MPlayer::Player with screenshots enabled" do
|
50
|
+
setup do
|
51
|
+
mock(Open4).popen4('mplayer -slave -quiet -vf screenshot "test/test.mp3"') { [true,true,true,true] }
|
52
|
+
stub(true).gets { "playback" }
|
53
|
+
end
|
54
|
+
asserts("new :screenshot") { MPlayer::Slave.new('test/test.mp3', :screenshot => true) }
|
55
|
+
end
|
56
|
+
|
57
|
+
context "MPlayer::Player file with space" do
|
58
|
+
setup do
|
59
|
+
setup_with_location("test/test space.mp3")
|
60
|
+
end
|
61
|
+
asserts("invalid file") { MPlayer::Slave.new('boooger') }.raises ArgumentError,"Invalid File"
|
62
|
+
asserts_topic.assigns(:file)
|
63
|
+
asserts_topic.assigns(:pid)
|
64
|
+
asserts_topic.assigns(:stdin)
|
65
|
+
asserts_topic.assigns(:stdout)
|
66
|
+
asserts_topic.assigns(:stderr)
|
17
67
|
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.expand_path("teststrap", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
context "MPlayer::SlaveTvCommands" do
|
4
|
+
setup_player
|
5
|
+
|
6
|
+
context "tv_start_scan" do
|
7
|
+
setup { mock_stdin @player, "tv_start_scan" ; @player}
|
8
|
+
asserts("tv_start_scan") { @player.tv_start_scan }
|
9
|
+
end
|
10
|
+
|
11
|
+
context "tv_step_channel" do
|
12
|
+
context "next" do
|
13
|
+
setup { mock_stdin @player, "tv_step_channel 1" }
|
14
|
+
asserts("tv_step_channel :next") { @player.tv_step_channel :next }
|
15
|
+
end
|
16
|
+
context "previous" do
|
17
|
+
setup { mock_stdin @player, "tv_step_channel -1" }
|
18
|
+
asserts("tv_step_channel :prev") { @player.tv_step_channel :prev }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "next_channel" do
|
23
|
+
setup { mock(@player).tv_step_channel(:next) { true } }
|
24
|
+
asserts("next_channel") { @player.next_channel }
|
25
|
+
end
|
26
|
+
|
27
|
+
context "prev_channel" do
|
28
|
+
setup { mock(@player).tv_step_channel(:prev) { true } }
|
29
|
+
asserts("prev_channel") { @player.prev_channel }
|
30
|
+
end
|
31
|
+
|
32
|
+
context "tv_step_norm" do
|
33
|
+
setup { mock_stdin @player, "tv_step_norm" }
|
34
|
+
asserts("tv_step_norm") { @player.tv_step_norm }
|
35
|
+
end
|
36
|
+
|
37
|
+
context "tv_step_chanlist" do
|
38
|
+
setup { mock_stdin @player, "tv_step_chanlist" }
|
39
|
+
asserts("tv_step_chanlist") { @player.tv_step_chanlist }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "tv_set_channel" do
|
43
|
+
setup { mock_stdin @player, "tv_set_channel 1" }
|
44
|
+
asserts("tv_set_channel 1") { @player.tv_set_channel 1 }
|
45
|
+
end
|
46
|
+
|
47
|
+
context "set_channel" do
|
48
|
+
setup { mock_stdin @player, "tv_set_channel 1" }
|
49
|
+
asserts("set_channel 1") { @player.set_channel 1 }
|
50
|
+
end
|
51
|
+
|
52
|
+
context "tv_last_channel" do
|
53
|
+
setup { mock_stdin @player, "tv_last_channel" }
|
54
|
+
asserts("tv_last_channel") { @player.tv_last_channel }
|
55
|
+
end
|
56
|
+
|
57
|
+
context "last_channel" do
|
58
|
+
setup { mock_stdin @player, "tv_last_channel" }
|
59
|
+
asserts("last_channel") { @player.last_channel }
|
60
|
+
end
|
61
|
+
|
62
|
+
context "tv_set_freq" do
|
63
|
+
setup { mock_stdin @player, "tv_set_freq 1.92" }
|
64
|
+
asserts("tv_set_freq 1.92") { @player.tv_set_freq 1.92 }
|
65
|
+
end
|
66
|
+
|
67
|
+
context "tv_step_freq" do
|
68
|
+
setup { mock_stdin @player, "tv_step_freq 2.3" }
|
69
|
+
asserts("tv_step_freq 2.3") { @player.tv_step_freq 2.3 }
|
70
|
+
end
|
71
|
+
|
72
|
+
context "tv_set_norm" do
|
73
|
+
setup { mock_stdin @player, "tv_set_norm NTSC" }
|
74
|
+
asserts(":ntsc") { @player.tv_set_norm :ntsc }
|
75
|
+
end
|
76
|
+
|
77
|
+
context "tv_set_norm ntsc" do
|
78
|
+
setup { mock_stdin @player, "tv_set_norm NTSC" }
|
79
|
+
asserts("ntsc") { @player.tv_set_norm 'ntsc' }
|
80
|
+
end
|
81
|
+
|
82
|
+
context "tv_set_norm NTSC" do
|
83
|
+
setup { mock_stdin @player, "tv_set_norm NTSC" }
|
84
|
+
asserts("NTSC") { @player.tv_set_norm 'NTSC' }
|
85
|
+
end
|
86
|
+
|
87
|
+
%w[tv_set_contrast tv_set_brightness tv_set_hue tv_set_saturation].each do |setting|
|
88
|
+
context setting do
|
89
|
+
|
90
|
+
context "relative" do
|
91
|
+
setup { mock_stdin @player, "#{setting} 5 0" }
|
92
|
+
asserts("#{setting} 5") { @player.method(setting).call(5) }
|
93
|
+
end
|
94
|
+
|
95
|
+
context "explicit relative" do
|
96
|
+
setup { mock_stdin @player, "#{setting} 5 0" }
|
97
|
+
asserts("#{setting} 5, :relative") { @player.method(setting).call(5, :relative) }
|
98
|
+
end
|
99
|
+
|
100
|
+
context "absolute" do
|
101
|
+
setup { mock_stdin @player, "#{setting} 5 1" }
|
102
|
+
asserts("#{setting} 5, :absolute") { @player.method(setting).call( 5, :absolute) }
|
103
|
+
end
|
104
|
+
|
105
|
+
asserts("value out of range [-100,100]") { @player.method(setting).call(1000) }.raises(ArgumentError,"Value out of Range -100..100")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
require File.expand_path("teststrap", File.dirname(__FILE__))
|
2
2
|
|
3
|
-
context "MPlayer::
|
4
|
-
|
5
|
-
|
6
|
-
stub(true).gets { "playback" }
|
7
|
-
@player = MPlayer::Slave.new('test/test.mp3')
|
8
|
-
end
|
9
|
-
|
3
|
+
context "MPlayer::SlaveVideoCommands" do
|
4
|
+
setup_player
|
5
|
+
|
10
6
|
context "audio_delay" do
|
11
7
|
|
12
8
|
context "by relative" do
|
13
9
|
setup { mock_stdin @player, "audio_delay 5 0" }
|
14
10
|
asserts("audio_delay 5") { @player.audio_delay 5 }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "explicitly by relative" do
|
14
|
+
setup { mock_stdin @player, "audio_delay 5 0" }
|
15
15
|
asserts("audio_delay 5,:relative") { @player.audio_delay 5,:relative }
|
16
16
|
end
|
17
17
|
|
@@ -20,35 +20,6 @@ context "MPlayer::Player" do
|
|
20
20
|
asserts("audio_delay 5,:absolute") { @player.audio_delay 5,:absolute }
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
24
|
-
context "sub_delay" do
|
25
|
-
|
26
|
-
context "absolute" do
|
27
|
-
setup { mock_stdin @player, "sub_delay 5 1" }
|
28
|
-
asserts("sub_delay 5") { @player.sub_delay 5 }
|
29
|
-
asserts("sub_delay 5, :relative") { @player.sub_delay 5,:absolute }
|
30
|
-
end
|
31
|
-
|
32
|
-
context "relative" do
|
33
|
-
setup { mock_stdin @player, "sub_delay 5 0" }
|
34
|
-
asserts("sub_delay 5, :absolute") { @player.sub_delay 5, :relative }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "sub_step" do
|
39
|
-
|
40
|
-
context "forward" do
|
41
|
-
setup { mock_stdin @player, "sub_step 5" }
|
42
|
-
asserts("sub_step 5") { @player.sub_step 5 }
|
43
|
-
asserts("sub_step 5,:forward") { @player.sub_step 5, :forward }
|
44
|
-
end
|
45
|
-
|
46
|
-
context "backward" do
|
47
|
-
setup { mock_stdin @player, "sub_step -5" }
|
48
|
-
asserts("sub_step -5") { @player.sub_step -5 }
|
49
|
-
asserts("sub_step 5,:backward") { @player.sub_step 5,:backward }
|
50
|
-
end
|
51
|
-
end
|
52
23
|
|
53
24
|
context "osd" do
|
54
25
|
|
@@ -98,13 +69,17 @@ context "MPlayer::Player" do
|
|
98
69
|
asserts("mock_stdin 'hello', :level => 5") { @player.osd_show_property_text 'hello', :level => 5 }
|
99
70
|
end
|
100
71
|
end
|
101
|
-
|
72
|
+
|
102
73
|
%w[contrast gamma brightness hue saturation].each do |setting|
|
103
74
|
context setting do
|
104
75
|
|
105
76
|
context "relative" do
|
106
77
|
setup { mock_stdin @player, "#{setting} 5 0" }
|
107
78
|
asserts("#{setting} 5, :relative") { @player.method(setting).call(5, :relative) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context "explicit relative" do
|
82
|
+
setup { mock_stdin @player, "#{setting} 5 0" }
|
108
83
|
asserts("#{setting} 5") { @player.method(setting).call(5) }
|
109
84
|
end
|
110
85
|
|
@@ -135,199 +110,290 @@ context "MPlayer::Player" do
|
|
135
110
|
end
|
136
111
|
end
|
137
112
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
113
|
+
%w[switch_angle switch_audio switch_title].each do |switch|
|
114
|
+
|
115
|
+
context switch do
|
116
|
+
|
117
|
+
context "select" do
|
118
|
+
setup { mock_stdin @player, "#{switch} 1" }
|
119
|
+
asserts("#{switch} 1") { @player.method(switch).call 1 }
|
120
|
+
end
|
121
|
+
|
122
|
+
context "cycle" do
|
123
|
+
setup { mock_stdin @player, "#{switch} -2" }
|
124
|
+
asserts("#{switch}") { @player.method(switch).call }
|
125
|
+
end
|
126
|
+
|
127
|
+
context "explicit cycle" do
|
128
|
+
setup { mock_stdin @player, "#{switch} -2" }
|
129
|
+
asserts("#{switch} :cycle") { @player.method(switch).call :cycle }
|
130
|
+
end
|
144
131
|
|
145
|
-
context "by absolute" do
|
146
|
-
setup { mock_stdin @player, "sub_pos 5 1" }
|
147
|
-
asserts("sub_pos 5,:absolute") { @player.sub_pos 5,:absolute }
|
148
132
|
end
|
149
133
|
end
|
150
134
|
|
151
|
-
context "
|
135
|
+
context "switch_ratio" do
|
136
|
+
setup { mock_stdin @player,"switch_ratio 1" }
|
137
|
+
asserts("switch_ratio 1") { @player.switch_ratio 1 }
|
138
|
+
end
|
152
139
|
|
140
|
+
context "switch_vsync" do
|
153
141
|
context "toggle" do
|
154
|
-
setup { mock_stdin @player, "
|
155
|
-
asserts("
|
156
|
-
end
|
157
|
-
|
158
|
-
context "top" do
|
159
|
-
setup { mock_stdin @player, "sub_alignment 0" }
|
160
|
-
asserts("sub_alignment :top") { @player.sub_alignment :top }
|
142
|
+
setup { mock_stdin @player, "switch_vsync" }
|
143
|
+
asserts("switch_vsynce") { @player.switch_vsync }
|
161
144
|
end
|
162
145
|
|
163
|
-
context "
|
164
|
-
setup { mock_stdin @player, "
|
165
|
-
asserts("
|
146
|
+
context "on" do
|
147
|
+
setup { mock_stdin @player, "switch_vsync 1" }
|
148
|
+
asserts("switch_vsync :on") { @player.switch_vsync :on }
|
166
149
|
end
|
167
150
|
|
168
|
-
context "
|
169
|
-
setup { mock_stdin @player, "
|
170
|
-
asserts("
|
151
|
+
context "off" do
|
152
|
+
setup { mock_stdin @player, "switch_vsync 0" }
|
153
|
+
asserts("switch_vsync :off") { @player.switch_vsync :off }
|
171
154
|
end
|
172
155
|
end
|
173
156
|
|
174
|
-
context "
|
175
|
-
|
157
|
+
context "vo_border" do
|
176
158
|
context "toggle" do
|
177
|
-
setup { mock_stdin @player, "
|
178
|
-
asserts("
|
159
|
+
setup { mock_stdin @player, "vo_border" }
|
160
|
+
asserts("vo_border") { @player.vo_border }
|
179
161
|
end
|
180
162
|
|
181
163
|
context "on" do
|
182
|
-
setup { mock_stdin @player, "
|
183
|
-
asserts("
|
164
|
+
setup { mock_stdin @player, "vo_border 1" }
|
165
|
+
asserts("vo_border :on") { @player.vo_border :on }
|
184
166
|
end
|
185
167
|
|
186
168
|
context "off" do
|
187
|
-
setup { mock_stdin @player, "
|
188
|
-
asserts("
|
169
|
+
setup { mock_stdin @player, "vo_border 0" }
|
170
|
+
asserts("vo_border :off") { @player.vo_border :off }
|
189
171
|
end
|
190
172
|
end
|
191
173
|
|
192
|
-
context "
|
174
|
+
context "vo_fullscreen" do
|
175
|
+
context "toggle" do
|
176
|
+
setup { mock_stdin @player, "vo_fullscreen" }
|
177
|
+
asserts("vo_fullscreen") { @player.vo_fullscreen }
|
178
|
+
end
|
193
179
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
180
|
+
context "on" do
|
181
|
+
setup { mock_stdin @player, "vo_fullscreen 1" }
|
182
|
+
asserts("vo_fullscreen :on") { @player.vo_fullscreen :on }
|
183
|
+
end
|
184
|
+
|
185
|
+
context "off" do
|
186
|
+
setup { mock_stdin @player, "vo_fullscreen 0" }
|
187
|
+
asserts("vo_fullscreen :off") { @player.vo_fullscreen :off }
|
198
188
|
end
|
199
189
|
end
|
200
190
|
|
201
|
-
context "
|
191
|
+
context "vo_ontop" do
|
192
|
+
context "toggle" do
|
193
|
+
setup { mock_stdin @player, "vo_ontop" }
|
194
|
+
asserts("vo_ontop") { @player.vo_ontop }
|
195
|
+
end
|
202
196
|
|
203
|
-
context "
|
204
|
-
setup { mock_stdin @player, "
|
205
|
-
asserts("
|
206
|
-
asserts("sub_remove :all") { @player.sub_remove :all }
|
197
|
+
context "on" do
|
198
|
+
setup { mock_stdin @player, "vo_ontop 1" }
|
199
|
+
asserts("vo_ontop :on") { @player.vo_ontop :on }
|
207
200
|
end
|
208
201
|
|
209
|
-
context "
|
210
|
-
setup { mock_stdin @player, "
|
211
|
-
asserts("
|
202
|
+
context "off" do
|
203
|
+
setup { mock_stdin @player, "vo_ontop 0" }
|
204
|
+
asserts("vo_ontop :off") { @player.vo_ontop :off }
|
212
205
|
end
|
213
206
|
end
|
214
207
|
|
215
|
-
context "
|
208
|
+
context "vo_rootwin" do
|
209
|
+
context "toggle" do
|
210
|
+
setup { mock_stdin @player, "vo_rootwin" }
|
211
|
+
asserts("vo_rootwin") { @player.vo_rootwin }
|
212
|
+
end
|
216
213
|
|
217
|
-
context "
|
218
|
-
setup { mock_stdin @player, "
|
219
|
-
asserts("
|
214
|
+
context "on" do
|
215
|
+
setup { mock_stdin @player, "vo_rootwin 1" }
|
216
|
+
asserts("vo_rootwin :on") { @player.vo_rootwin :on }
|
220
217
|
end
|
221
218
|
|
222
|
-
context "
|
223
|
-
setup { mock_stdin @player, "
|
224
|
-
asserts("
|
225
|
-
asserts("sub_select :cycle") { @player.sub_select :cycle }
|
219
|
+
context "off" do
|
220
|
+
setup { mock_stdin @player, "vo_rootwin 0" }
|
221
|
+
asserts("vo_rootwin :off") { @player.vo_rootwin :off }
|
226
222
|
end
|
227
223
|
end
|
228
224
|
|
229
|
-
context "
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
225
|
+
context "screenshot" do
|
226
|
+
context "take screenshot" do
|
227
|
+
setup do
|
228
|
+
mock_stdin @player, "screenshot 0"
|
229
|
+
mock_stdout @player, "", "*** screenshot 'shot0001.png' ***"
|
230
|
+
end
|
231
|
+
asserts("screenshot") { @player.screenshot == 'shot0001.png' }
|
234
232
|
end
|
235
233
|
|
236
|
-
context "
|
237
|
-
setup
|
238
|
-
|
234
|
+
context "start/stop screenshot" do
|
235
|
+
setup do
|
236
|
+
mock_stdin @player, "screenshot 1"
|
237
|
+
end
|
238
|
+
asserts("screenshot :toggle") { @player.screenshot :toggle }
|
239
239
|
end
|
240
240
|
|
241
|
-
context "
|
242
|
-
setup
|
243
|
-
|
241
|
+
context "no file output on toggle" do
|
242
|
+
setup do
|
243
|
+
mock_stdin @player, "screenshot 1"
|
244
|
+
dont_allow(@player.stdout).gets
|
245
|
+
end
|
246
|
+
asserts("screenshot :toggle") { @player.screenshot(:toggle) == "" }
|
244
247
|
end
|
248
|
+
end
|
245
249
|
|
246
|
-
|
247
|
-
|
248
|
-
|
250
|
+
context "panscan" do
|
251
|
+
asserts("panscan 2") { @player.panscan 2}.raises ArgumentError, "Value out of Range -1.0 .. 1.0"
|
252
|
+
context "valid range" do
|
253
|
+
setup { mock_stdin @player, "panscan 0.1 0" }
|
254
|
+
asserts("panscan 0.1") { @player.panscan 0.1 }
|
249
255
|
end
|
256
|
+
end
|
250
257
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
258
|
+
context "dvdnav" do
|
259
|
+
asserts("dvdnav :what") { @player.dvdnav :what }.raises ArgumentError, "Invalid button name"
|
260
|
+
context "up" do
|
261
|
+
setup { mock_stdin @player, "dvdnav up" }
|
262
|
+
asserts("dvdnav :up") { @player.dvdnav :up }
|
263
|
+
end
|
264
|
+
context "down" do
|
265
|
+
setup { mock_stdin @player, "dvdnav down" }
|
266
|
+
asserts("dvdnav :downleft") { @player.dvdnav :down }
|
267
|
+
end
|
268
|
+
context "left" do
|
269
|
+
setup { mock_stdin @player, "dvdnav left" }
|
270
|
+
asserts("dvdnav :left") { @player.dvdnav :left }
|
271
|
+
end
|
272
|
+
context "right" do
|
273
|
+
setup { mock_stdin @player, "dvdnav right" }
|
274
|
+
asserts("dvdnav :right") { @player.dvdnav :right }
|
275
|
+
end
|
276
|
+
context "select" do
|
277
|
+
setup { mock_stdin @player, "dvdnav select" }
|
278
|
+
asserts("dvdnav :select") { @player.dvdnav :select }
|
279
|
+
end
|
280
|
+
context "menu" do
|
281
|
+
setup { mock_stdin @player, "dvdnav menu" }
|
282
|
+
asserts("dvdnav :menu") { @player.dvdnav :menu }
|
283
|
+
end
|
284
|
+
context "prev" do
|
285
|
+
setup { mock_stdin @player, "dvdnav prev" }
|
286
|
+
asserts("dvdnav :prev") { @player.dvdnav :prev }
|
287
|
+
end
|
288
|
+
context "mouse" do
|
289
|
+
setup { mock_stdin @player, "dvdnav mouse" }
|
290
|
+
asserts("dvdnav :mouse") { @player.dvdnav :mouse }
|
255
291
|
end
|
256
292
|
end
|
257
293
|
|
258
|
-
|
294
|
+
context "get_property" do
|
295
|
+
context "valid property" do
|
296
|
+
setup { mock_command @player, "get_property pause","ANS_pause=no",/pause/ }
|
297
|
+
asserts("get_property :hue") { @player.get_property :pause }.equals "no"
|
298
|
+
end
|
299
|
+
context "failed property" do
|
300
|
+
setup { mock_command @player, "get_property saturation","Failed to get value of property 'saturation'.",/saturation/}
|
301
|
+
asserts("get_property :saturation") { @player.get_property :saturation }.raises StandardError, "Failed to get value of property 'saturation'."
|
302
|
+
end
|
303
|
+
end
|
259
304
|
|
260
|
-
|
305
|
+
context "set_property" do
|
306
|
+
setup { mock_command @player, "set_property volume 40" }
|
307
|
+
asserts("set_property :volume, 40") { @player.set_property :volume, 40 }
|
308
|
+
end
|
261
309
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
310
|
+
context "step_property" do
|
311
|
+
context ":up" do
|
312
|
+
setup { mock_command @player, "step_property volume 10 1"}
|
313
|
+
asserts("step_property :volume, 10") { @player.step_property :volume, 10}
|
314
|
+
end
|
315
|
+
context ":down" do
|
316
|
+
setup { mock_command @player, "step_property volume 10 -1"}
|
317
|
+
asserts("step_property :volume, -10") { @player.step_property :volume, -10}
|
318
|
+
end
|
266
319
|
|
267
|
-
|
268
|
-
setup { mock_stdin @player, "#{sub} -1" }
|
269
|
-
asserts("#{sub} :off") { @player.method(sub).call :off}
|
270
|
-
end
|
320
|
+
end
|
271
321
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
322
|
+
context "get_vofullscreen" do
|
323
|
+
context "fullscreen" do
|
324
|
+
setup { mock_command @player, "get_vofullscreen","1",/(0|1)/ }
|
325
|
+
asserts("get_vofullscreen") { @player.get_vofullscreen }
|
326
|
+
end
|
327
|
+
context "windowed" do
|
328
|
+
setup { mock_command @player, "get_vofullscreen","0",/(0|1)/ }
|
329
|
+
asserts("get_vofullscreen") { @player.get_vofullscreen }.equals false
|
277
330
|
end
|
331
|
+
|
278
332
|
end
|
279
333
|
|
280
|
-
context "
|
281
|
-
context "
|
282
|
-
setup {
|
283
|
-
asserts("
|
284
|
-
asserts("sub_scale 5,:relative") { @player.sub_scale 5,:relative }
|
334
|
+
context "get_sub_visibility" do
|
335
|
+
context "on" do
|
336
|
+
setup { mock_command @player, "get_sub_visibility","1",/(0|1)/ }
|
337
|
+
asserts("get_sub_visiblity") { @player.get_sub_visibility }
|
285
338
|
end
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
asserts("sub_scale 5,:absolute") { @player.sub_scale 5,:absolute }
|
339
|
+
context "off" do
|
340
|
+
setup { mock_command @player, "get_sub_visibility","0",/(0|1)/ }
|
341
|
+
asserts("get_sub_visiblity") { @player.get_sub_visibility }.equals false
|
290
342
|
end
|
291
343
|
end
|
292
344
|
|
293
|
-
|
345
|
+
context "seek_chapter" do
|
294
346
|
|
295
|
-
context
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
asserts("#{switch} 1") { @player.method(switch).call 1 }
|
300
|
-
end
|
347
|
+
context "relative" do
|
348
|
+
setup { mock_stdin @player, "seek_chapter 5 0" }
|
349
|
+
asserts("seek_chapter 5") { @player.seek_chapter(5) }
|
350
|
+
end
|
301
351
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
end
|
352
|
+
context "explicit relative" do
|
353
|
+
setup { mock_stdin @player, "seek_chapter 5 0" }
|
354
|
+
asserts("seek_chapter 5, :relative") { @player.seek_chapter(5, :relative) }
|
355
|
+
end
|
307
356
|
|
357
|
+
context "absolute" do
|
358
|
+
setup { mock_stdin @player, "seek_chapter 5 1" }
|
359
|
+
asserts("seek_chapter 5, :absolute") { @player.seek_chapter( 5, :absolute) }
|
308
360
|
end
|
309
361
|
end
|
310
362
|
|
311
|
-
context "
|
312
|
-
|
313
|
-
|
314
|
-
|
363
|
+
context "change_rectangle" do
|
364
|
+
context "relative" do
|
365
|
+
context "x" do
|
366
|
+
setup { mock_command @player, "change_rectangle 2 2" }
|
367
|
+
asserts("change_rectangle :x, 2") { @player.change_rectangle :x, 2 }
|
368
|
+
end
|
315
369
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
end
|
370
|
+
context "explicit relative x" do
|
371
|
+
setup { mock_command @player, "change_rectangle 2 2" }
|
372
|
+
asserts("change_rectangle :x, 2, :relative") { @player.change_rectangle :x, 2, :relative }
|
373
|
+
end
|
321
374
|
|
322
|
-
|
323
|
-
|
324
|
-
|
375
|
+
context "y" do
|
376
|
+
setup { mock_command @player, "change_rectangle 3 2" }
|
377
|
+
asserts("change_rectangle :y, 2, :relative") { @player.change_rectangle :y, 2, :relative }
|
378
|
+
end
|
379
|
+
|
380
|
+
context "explicit relative y" do
|
381
|
+
setup { mock_command @player, "change_rectangle 3 2" }
|
382
|
+
asserts("change_rectangle :y, 2") { @player.change_rectangle :y, 2 }
|
383
|
+
end
|
325
384
|
end
|
385
|
+
context "absolute" do
|
386
|
+
context "x" do
|
387
|
+
setup { mock_command @player, "change_rectangle 0 2" }
|
388
|
+
asserts("change_rectangle :x, 2, :absolute") { @player.change_rectangle :x, 2, :absolute }
|
389
|
+
end
|
326
390
|
|
327
|
-
|
328
|
-
|
329
|
-
|
391
|
+
context "y" do
|
392
|
+
setup { mock_command @player, "change_rectangle 1 2" }
|
393
|
+
asserts("change_rectangle :y, 2, :absolute") { @player.change_rectangle :y, 2, :absolute }
|
394
|
+
end
|
330
395
|
end
|
331
396
|
end
|
332
|
-
|
333
|
-
|
397
|
+
|
398
|
+
|
399
|
+
end
|