mplayer-ruby 0.1.0
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/.document +5 -0
 - data/.gitignore +21 -0
 - data/LICENSE +20 -0
 - data/README.rdoc +59 -0
 - data/Rakefile +68 -0
 - data/TODO +47 -0
 - data/VERSION +1 -0
 - data/examples/general_playback.rb +60 -0
 - data/lib/mplayer-ruby.rb +6 -0
 - data/lib/mplayer-ruby/slave.rb +63 -0
 - data/lib/mplayer-ruby/slave_commands.rb +188 -0
 - data/lib/mplayer-ruby/slave_video_commands.rb +228 -0
 - data/mplayer-ruby.gemspec +75 -0
 - data/test.watchr +45 -0
 - data/test/mplayer-ruby_test.rb +2 -0
 - data/test/slave_commands_test.rb +239 -0
 - data/test/slave_test.rb +17 -0
 - data/test/slave_video_commands_test.rb +333 -0
 - data/test/test.mp3 +0 -0
 - data/test/teststrap.rb +16 -0
 - metadata +110 -0
 
| 
         @@ -0,0 +1,228 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MPlayer
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SlaveVideoCommands
         
     | 
| 
      
 3 
     | 
    
         
            +
                
         
     | 
| 
      
 4 
     | 
    
         
            +
                # Set/adjust the audio delay.
         
     | 
| 
      
 5 
     | 
    
         
            +
                # If type is :relative adjust the delay by <value> seconds.
         
     | 
| 
      
 6 
     | 
    
         
            +
                # If type is :absolute, set the delay to <value> seconds.
         
     | 
| 
      
 7 
     | 
    
         
            +
                def audio_delay(value,type = :relative)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  adjust_set :audio_delay, value, type
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Adjust the subtitle delay
         
     | 
| 
      
 12 
     | 
    
         
            +
                # :relative is adjust by +/- <value> seconds.
         
     | 
| 
      
 13 
     | 
    
         
            +
                # :absolute is set it to <value>. (default)
         
     | 
| 
      
 14 
     | 
    
         
            +
                def sub_delay(value,type = :absolute)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  adjust_set :sub_delay, value, type
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # Step forward in the subtitle list by <value> steps
         
     | 
| 
      
 19 
     | 
    
         
            +
                # step backwards if <value> is negative
         
     | 
| 
      
 20 
     | 
    
         
            +
                # can also set type to :backward or :forward and return postive <value>
         
     | 
| 
      
 21 
     | 
    
         
            +
                def sub_step(value, type = :forward)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  type = :backward if value < 0
         
     | 
| 
      
 23 
     | 
    
         
            +
                  send(type == :forward ? "sub_step #{value.abs}" : "sub_step -#{value.abs}" )
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
                
         
     | 
| 
      
 26 
     | 
    
         
            +
                # Toggle OSD mode
         
     | 
| 
      
 27 
     | 
    
         
            +
                # or set it to <level>
         
     | 
| 
      
 28 
     | 
    
         
            +
                def osd(level=nil)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  send(level.nil? ? "osd" : "osd #{level}")
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # Show <string> on the OSD.
         
     | 
| 
      
 33 
     | 
    
         
            +
                # :duration sets the length to display text.
         
     | 
| 
      
 34 
     | 
    
         
            +
                # :level sets the osd level to display at. (default: 0 => always show)
         
     | 
| 
      
 35 
     | 
    
         
            +
                def osd_show_text(string,options = {})
         
     | 
| 
      
 36 
     | 
    
         
            +
                  options.reverse_merge!({:duration => 0, :level => 0})
         
     | 
| 
      
 37 
     | 
    
         
            +
                  send("osd_show_text #{string} #{options[:duration]} #{options[:level]}")
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # Show an expanded property string on the OSD
         
     | 
| 
      
 41 
     | 
    
         
            +
                # see -playing-msg for a list of available expansions
         
     | 
| 
      
 42 
     | 
    
         
            +
                # :duration sets the length to display text.
         
     | 
| 
      
 43 
     | 
    
         
            +
                # :level sets the osd level to display at. (default: 0 => always show)
         
     | 
| 
      
 44 
     | 
    
         
            +
                def osd_show_property_text(string,options={})
         
     | 
| 
      
 45 
     | 
    
         
            +
                  options.reverse_merge!({:duration => 0, :level => 0})
         
     | 
| 
      
 46 
     | 
    
         
            +
                  send("osd_show_property_text #{string} #{options[:duration]} #{options[:level]}")
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
                
         
     | 
| 
      
 49 
     | 
    
         
            +
                # Set/adjust video parameters.
         
     | 
| 
      
 50 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 51 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 52 
     | 
    
         
            +
                # <value> is in the range [-100, 100].
         
     | 
| 
      
 53 
     | 
    
         
            +
                def contrast(value, type = :relative)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  setting :contrast, value, type
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                # Set/adjust video parameters.
         
     | 
| 
      
 58 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 59 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 60 
     | 
    
         
            +
                # <value> is in the range [-100, 100].
         
     | 
| 
      
 61 
     | 
    
         
            +
                def gamma(value, type = :relative)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  setting :gamma, value, type
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                # Set/adjust video parameters.
         
     | 
| 
      
 66 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 67 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 68 
     | 
    
         
            +
                # <value> is in the range [-100, 100].
         
     | 
| 
      
 69 
     | 
    
         
            +
                def hue(value, type = :relative)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  setting :hue, value, type
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                # Set/adjust video parameters.
         
     | 
| 
      
 74 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 75 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 76 
     | 
    
         
            +
                # <value> is in the range [-100, 100].
         
     | 
| 
      
 77 
     | 
    
         
            +
                def brightness(value, type = :relative)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  setting :brightness, value, type
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                # Set/adjust video parameters.
         
     | 
| 
      
 82 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 83 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 84 
     | 
    
         
            +
                # <value> is in the range [-100, 100].
         
     | 
| 
      
 85 
     | 
    
         
            +
                def saturation(value, type = :relative)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  setting :saturation, value, type
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
                
         
     | 
| 
      
 89 
     | 
    
         
            +
                # Toggle/set frame dropping mode
         
     | 
| 
      
 90 
     | 
    
         
            +
                # if :on, turns on dropping mode
         
     | 
| 
      
 91 
     | 
    
         
            +
                # if :off, turns off dropping mode
         
     | 
| 
      
 92 
     | 
    
         
            +
                # call by itself toggles dropping mode
         
     | 
| 
      
 93 
     | 
    
         
            +
                def frame_drop(value = nil)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  toggle :frame_drop, value
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                # Adjust/set subtitle position.
         
     | 
| 
      
 98 
     | 
    
         
            +
                # If :relative, modifies parameter by <value>.
         
     | 
| 
      
 99 
     | 
    
         
            +
                # If :absolute, parameter is set to <value>.
         
     | 
| 
      
 100 
     | 
    
         
            +
                def sub_pos(value,type = :relative)
         
     | 
| 
      
 101 
     | 
    
         
            +
                  adjust_set :sub_pos, value, type
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                # Toggle/set subtitle alignment. [alignment]
         
     | 
| 
      
 105 
     | 
    
         
            +
                # :top sets top alignment
         
     | 
| 
      
 106 
     | 
    
         
            +
                # :center sets center alignment
         
     | 
| 
      
 107 
     | 
    
         
            +
                # :bottom sets bottom alignment
         
     | 
| 
      
 108 
     | 
    
         
            +
                def sub_alignment(alignment = nil)
         
     | 
| 
      
 109 
     | 
    
         
            +
                  send case alignment
         
     | 
| 
      
 110 
     | 
    
         
            +
                  when :top then "sub_alignment 0"
         
     | 
| 
      
 111 
     | 
    
         
            +
                  when :center then "sub_alignment 1"
         
     | 
| 
      
 112 
     | 
    
         
            +
                  when :bottom then "sub_alignment 2"
         
     | 
| 
      
 113 
     | 
    
         
            +
                  else "sub_alignment"
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                # Toggle/set subtitle visibility.
         
     | 
| 
      
 118 
     | 
    
         
            +
                # :on turns on visilibity.
         
     | 
| 
      
 119 
     | 
    
         
            +
                # :off turns off visilibility.
         
     | 
| 
      
 120 
     | 
    
         
            +
                # else toggles visibility.
         
     | 
| 
      
 121 
     | 
    
         
            +
                def sub_visibility(value = nil)
         
     | 
| 
      
 122 
     | 
    
         
            +
                  toggle :sub_visibility, value
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                # Loads subtitles from <file>.
         
     | 
| 
      
 126 
     | 
    
         
            +
                def sub_load(file)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  raise ArgumentError, "Invalid File" unless File.exists? file
         
     | 
| 
      
 128 
     | 
    
         
            +
                  send("sub_load #{file}")
         
     | 
| 
      
 129 
     | 
    
         
            +
                end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                # Removes the selected sub file
         
     | 
| 
      
 132 
     | 
    
         
            +
                # :all removes all sub files. (Default)
         
     | 
| 
      
 133 
     | 
    
         
            +
                # <value> removes the sub file at that index.
         
     | 
| 
      
 134 
     | 
    
         
            +
                def sub_remove(value = :all)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  cmd = (value == :all ? -1 : value)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  send "sub_remove #{cmd}"
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
      
 138 
     | 
    
         
            +
                
         
     | 
| 
      
 139 
     | 
    
         
            +
                # Displays subtitle
         
     | 
| 
      
 140 
     | 
    
         
            +
                # :cycle will cycle through all sub_titles. (Default)
         
     | 
| 
      
 141 
     | 
    
         
            +
                # <value> will display the sub_title at that index.
         
     | 
| 
      
 142 
     | 
    
         
            +
                def sub_select(value = :cycle)
         
     | 
| 
      
 143 
     | 
    
         
            +
                  cmd = (value == :cycle ? -2 : value)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  send "sub_select #{cmd}"
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                #  Display first subtitle from <value>
         
     | 
| 
      
 148 
     | 
    
         
            +
                #  :sub for SUB_SOURCE_SUBS for file subs
         
     | 
| 
      
 149 
     | 
    
         
            +
                #  :vobsub for  SUB_SOURCE_VOBSUB for VOBsub files
         
     | 
| 
      
 150 
     | 
    
         
            +
                #  :demux SUB_SOURCE_DEMUX for subtitle embedded in the media file or DVD subs.
         
     | 
| 
      
 151 
     | 
    
         
            +
                #  :off will turn off subtitle display.
         
     | 
| 
      
 152 
     | 
    
         
            +
                #  :cycle will cycle between the first subtitle of each currently available sources.
         
     | 
| 
      
 153 
     | 
    
         
            +
                def sub_source(value = :cycle)
         
     | 
| 
      
 154 
     | 
    
         
            +
                  switch = case value
         
     | 
| 
      
 155 
     | 
    
         
            +
                  when :sub then 0
         
     | 
| 
      
 156 
     | 
    
         
            +
                  when :vobsub then 1
         
     | 
| 
      
 157 
     | 
    
         
            +
                  when :demux then 2
         
     | 
| 
      
 158 
     | 
    
         
            +
                  when :off then -1
         
     | 
| 
      
 159 
     | 
    
         
            +
                  when :cycle then -2
         
     | 
| 
      
 160 
     | 
    
         
            +
                  end
         
     | 
| 
      
 161 
     | 
    
         
            +
                  send "sub_source #{switch}"
         
     | 
| 
      
 162 
     | 
    
         
            +
                end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                # Display subtitle specifid by <value> for file subs. corresponding to ID_FILE_SUB_ID
         
     | 
| 
      
 165 
     | 
    
         
            +
                # :off turns off sub
         
     | 
| 
      
 166 
     | 
    
         
            +
                # :cycle will cycle all file subs. (Default)
         
     | 
| 
      
 167 
     | 
    
         
            +
                def sub_vob(value = :cycle)
         
     | 
| 
      
 168 
     | 
    
         
            +
                  select_cycle :sub_vob, value
         
     | 
| 
      
 169 
     | 
    
         
            +
                end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                # Display subtitle specifid by <value> for file subs. corresponding to ID_VOBSUB_ID
         
     | 
| 
      
 172 
     | 
    
         
            +
                # :off turns off sub
         
     | 
| 
      
 173 
     | 
    
         
            +
                # :cycle will cycle all file subs. (Default)
         
     | 
| 
      
 174 
     | 
    
         
            +
                def sub_file(value = :cycle)
         
     | 
| 
      
 175 
     | 
    
         
            +
                  select_cycle :sub_file, value
         
     | 
| 
      
 176 
     | 
    
         
            +
                end
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
                # Display subtitle specifid by <value> for file subs. corresponding to ID_SUBTITLE_ID
         
     | 
| 
      
 179 
     | 
    
         
            +
                # :off turns off sub
         
     | 
| 
      
 180 
     | 
    
         
            +
                # :cycle will cycle all file subs. (Default)
         
     | 
| 
      
 181 
     | 
    
         
            +
                def sub_demux(value = :cycle)
         
     | 
| 
      
 182 
     | 
    
         
            +
                  select_cycle :sub_demux, value
         
     | 
| 
      
 183 
     | 
    
         
            +
                end
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                # Adjust the subtitle size by +/- <value>
         
     | 
| 
      
 186 
     | 
    
         
            +
                # :set set it to <value>
         
     | 
| 
      
 187 
     | 
    
         
            +
                # :relative adjusts it by value
         
     | 
| 
      
 188 
     | 
    
         
            +
                def sub_scale(value,type = :relative)
         
     | 
| 
      
 189 
     | 
    
         
            +
                  adjust_set :sub_scale, value, type
         
     | 
| 
      
 190 
     | 
    
         
            +
                end
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                # switch_audio [value] (currently MPEG*, AVI, Matroska and streams handled by libavformat)
         
     | 
| 
      
 193 
     | 
    
         
            +
                # <value> Switch to the audio track with the ID <value>.
         
     | 
| 
      
 194 
     | 
    
         
            +
                # :cycle available tracks if [value] is omitted or negative.
         
     | 
| 
      
 195 
     | 
    
         
            +
                def switch_audio(value = :cycle)
         
     | 
| 
      
 196 
     | 
    
         
            +
                  select_cycle :switch_audio, value
         
     | 
| 
      
 197 
     | 
    
         
            +
                end
         
     | 
| 
      
 198 
     | 
    
         
            +
                # switch_angle [value] (DVDs only)
         
     | 
| 
      
 199 
     | 
    
         
            +
                # <value> Switch to the DVD angle with the ID [value].
         
     | 
| 
      
 200 
     | 
    
         
            +
                # :cycle available angles if [value] is omitted or negative.
         
     | 
| 
      
 201 
     | 
    
         
            +
                def switch_angle(value = :cycle)
         
     | 
| 
      
 202 
     | 
    
         
            +
                  select_cycle :switch_angle, value
         
     | 
| 
      
 203 
     | 
    
         
            +
                end
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
                # switch_title [value] (DVDNAV only)
         
     | 
| 
      
 206 
     | 
    
         
            +
                # <value> Switch to the DVD title with the ID [value].
         
     | 
| 
      
 207 
     | 
    
         
            +
                # :cycle available titles if [value] is omitted or negative.
         
     | 
| 
      
 208 
     | 
    
         
            +
                def switch_title(value = :cycle)
         
     | 
| 
      
 209 
     | 
    
         
            +
                  select_cycle :switch_title, value
         
     | 
| 
      
 210 
     | 
    
         
            +
                end
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
                # switch_ratio [value]
         
     | 
| 
      
 213 
     | 
    
         
            +
                # <value> Change aspect ratio at runtime. [value] is the new aspect ratio expressed
         
     | 
| 
      
 214 
     | 
    
         
            +
                # as a float (e.g. 1.77778 for 16/9).
         
     | 
| 
      
 215 
     | 
    
         
            +
                # There might be problems with some video filters.
         
     | 
| 
      
 216 
     | 
    
         
            +
                def switch_ratio(value); send("switch_ratio #{value}"); end
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
                # switch_vsync [value]
         
     | 
| 
      
 219 
     | 
    
         
            +
                # :on Toggle vsync on
         
     | 
| 
      
 220 
     | 
    
         
            +
                # :off Toggle off
         
     | 
| 
      
 221 
     | 
    
         
            +
                # nil for just Toggle
         
     | 
| 
      
 222 
     | 
    
         
            +
                def switch_vsync(value = nil)
         
     | 
| 
      
 223 
     | 
    
         
            +
                  toggle :switch_vsync, value
         
     | 
| 
      
 224 
     | 
    
         
            +
                end
         
     | 
| 
      
 225 
     | 
    
         
            +
                
         
     | 
| 
      
 226 
     | 
    
         
            +
                
         
     | 
| 
      
 227 
     | 
    
         
            +
              end
         
     | 
| 
      
 228 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,75 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Generated by jeweler
         
     | 
| 
      
 2 
     | 
    
         
            +
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
         
     | 
| 
      
 4 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.name = %q{mplayer-ruby}
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.1.0"
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.authors = ["Arthur Chiu"]
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-02-01}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = %q{A Ruby wrapper for MPlayer}
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.email = %q{mr.arthur.chiu@gmail.com}
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.extra_rdoc_files = [
         
     | 
| 
      
 16 
     | 
    
         
            +
                "LICENSE",
         
     | 
| 
      
 17 
     | 
    
         
            +
                 "README.rdoc",
         
     | 
| 
      
 18 
     | 
    
         
            +
                 "TODO"
         
     | 
| 
      
 19 
     | 
    
         
            +
              ]
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.files = [
         
     | 
| 
      
 21 
     | 
    
         
            +
                ".document",
         
     | 
| 
      
 22 
     | 
    
         
            +
                 ".gitignore",
         
     | 
| 
      
 23 
     | 
    
         
            +
                 "LICENSE",
         
     | 
| 
      
 24 
     | 
    
         
            +
                 "README.rdoc",
         
     | 
| 
      
 25 
     | 
    
         
            +
                 "Rakefile",
         
     | 
| 
      
 26 
     | 
    
         
            +
                 "TODO",
         
     | 
| 
      
 27 
     | 
    
         
            +
                 "VERSION",
         
     | 
| 
      
 28 
     | 
    
         
            +
                 "examples/general_playback.rb",
         
     | 
| 
      
 29 
     | 
    
         
            +
                 "lib/mplayer-ruby.rb",
         
     | 
| 
      
 30 
     | 
    
         
            +
                 "lib/mplayer-ruby/slave.rb",
         
     | 
| 
      
 31 
     | 
    
         
            +
                 "lib/mplayer-ruby/slave_commands.rb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                 "lib/mplayer-ruby/slave_video_commands.rb",
         
     | 
| 
      
 33 
     | 
    
         
            +
                 "mplayer-ruby.gemspec",
         
     | 
| 
      
 34 
     | 
    
         
            +
                 "test.watchr",
         
     | 
| 
      
 35 
     | 
    
         
            +
                 "test/mplayer-ruby_test.rb",
         
     | 
| 
      
 36 
     | 
    
         
            +
                 "test/slave_commands_test.rb",
         
     | 
| 
      
 37 
     | 
    
         
            +
                 "test/slave_test.rb",
         
     | 
| 
      
 38 
     | 
    
         
            +
                 "test/slave_video_commands_test.rb",
         
     | 
| 
      
 39 
     | 
    
         
            +
                 "test/test.mp3",
         
     | 
| 
      
 40 
     | 
    
         
            +
                 "test/teststrap.rb"
         
     | 
| 
      
 41 
     | 
    
         
            +
              ]
         
     | 
| 
      
 42 
     | 
    
         
            +
              s.homepage = %q{http://github.com/achiu/mplayer-ruby}
         
     | 
| 
      
 43 
     | 
    
         
            +
              s.rdoc_options = ["--charset=UTF-8"]
         
     | 
| 
      
 44 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 45 
     | 
    
         
            +
              s.rubygems_version = %q{1.3.5}
         
     | 
| 
      
 46 
     | 
    
         
            +
              s.summary = %q{Ruby wrapper for MPlayer}
         
     | 
| 
      
 47 
     | 
    
         
            +
              s.test_files = [
         
     | 
| 
      
 48 
     | 
    
         
            +
                "test/mplayer-ruby_test.rb",
         
     | 
| 
      
 49 
     | 
    
         
            +
                 "test/slave_commands_test.rb",
         
     | 
| 
      
 50 
     | 
    
         
            +
                 "test/slave_test.rb",
         
     | 
| 
      
 51 
     | 
    
         
            +
                 "test/slave_video_commands_test.rb",
         
     | 
| 
      
 52 
     | 
    
         
            +
                 "test/teststrap.rb",
         
     | 
| 
      
 53 
     | 
    
         
            +
                 "examples/general_playback.rb"
         
     | 
| 
      
 54 
     | 
    
         
            +
              ]
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              if s.respond_to? :specification_version then
         
     | 
| 
      
 57 
     | 
    
         
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
| 
      
 58 
     | 
    
         
            +
                s.specification_version = 3
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         
     | 
| 
      
 61 
     | 
    
         
            +
                  s.add_development_dependency(%q<riot>, [">= 0.10.11"])
         
     | 
| 
      
 62 
     | 
    
         
            +
                  s.add_development_dependency(%q<rr>, [">= 0.10.5"])
         
     | 
| 
      
 63 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<open4>, [">= 1.0.1"])
         
     | 
| 
      
 64 
     | 
    
         
            +
                else
         
     | 
| 
      
 65 
     | 
    
         
            +
                  s.add_dependency(%q<riot>, [">= 0.10.11"])
         
     | 
| 
      
 66 
     | 
    
         
            +
                  s.add_dependency(%q<rr>, [">= 0.10.5"])
         
     | 
| 
      
 67 
     | 
    
         
            +
                  s.add_dependency(%q<open4>, [">= 1.0.1"])
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              else
         
     | 
| 
      
 70 
     | 
    
         
            +
                s.add_dependency(%q<riot>, [">= 0.10.11"])
         
     | 
| 
      
 71 
     | 
    
         
            +
                s.add_dependency(%q<rr>, [">= 0.10.5"])
         
     | 
| 
      
 72 
     | 
    
         
            +
                s.add_dependency(%q<open4>, [">= 1.0.1"])
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
    
        data/test.watchr
    ADDED
    
    | 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # 'autotest' for riot
         
     | 
| 
      
 3 
     | 
    
         
            +
            # install watchr
         
     | 
| 
      
 4 
     | 
    
         
            +
            # $ sudo gem install watchr
         
     | 
| 
      
 5 
     | 
    
         
            +
            # 
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Run With:
         
     | 
| 
      
 7 
     | 
    
         
            +
            # $ watchr test.watchr
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Helpers
         
     | 
| 
      
 12 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            def run(cmd)
         
     | 
| 
      
 15 
     | 
    
         
            +
              puts(cmd)
         
     | 
| 
      
 16 
     | 
    
         
            +
              system(cmd)
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            def run_all_tests
         
     | 
| 
      
 20 
     | 
    
         
            +
              system( "rake test" )
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            def sudo(cmd)
         
     | 
| 
      
 24 
     | 
    
         
            +
              run("sudo #{cmd}")
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Watchr Rules
         
     | 
| 
      
 29 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 30 
     | 
    
         
            +
            watch("^lib.*/(.*)\.rb") { |m| run("ruby -rubygems test/#{m[1]}_test.rb") }
         
     | 
| 
      
 31 
     | 
    
         
            +
            watch("test.*/teststrap\.rb") { run_all_tests }
         
     | 
| 
      
 32 
     | 
    
         
            +
            watch('^test.*/(.*)_test\.rb') { |m|  run("ruby -rubygems test/#{m[1]}_test.rb") }
         
     | 
| 
      
 33 
     | 
    
         
            +
            watch('(.*)\.gemspec') { |m| sudo("rake install") }
         
     | 
| 
      
 34 
     | 
    
         
            +
             
         
     | 
| 
      
 35 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 36 
     | 
    
         
            +
            # Signal Handling
         
     | 
| 
      
 37 
     | 
    
         
            +
            # --------------------------------------------------
         
     | 
| 
      
 38 
     | 
    
         
            +
            # Ctrl-\
         
     | 
| 
      
 39 
     | 
    
         
            +
            Signal.trap('QUIT') do
         
     | 
| 
      
 40 
     | 
    
         
            +
              puts " --- Running all tests ---\n\n"
         
     | 
| 
      
 41 
     | 
    
         
            +
              run_all_tests
         
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
         
     | 
| 
      
 44 
     | 
    
         
            +
            # Ctrl-C
         
     | 
| 
      
 45 
     | 
    
         
            +
            Signal.trap('INT') { abort("\n") }
         
     | 
| 
         @@ -0,0 +1,239 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path("teststrap", File.dirname(__FILE__))
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            context "MPlayer::Player" do
         
     | 
| 
      
 4 
     | 
    
         
            +
              setup do
         
     | 
| 
      
 5 
     | 
    
         
            +
                mock(Open4).popen4("/usr/bin/mplayer -slave -quiet test/test.mp3") { [true,true,true,true] }
         
     | 
| 
      
 6 
     | 
    
         
            +
                stub(true).gets { "playback" }
         
     | 
| 
      
 7 
     | 
    
         
            +
                @player = MPlayer::Slave.new('test/test.mp3')
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              context "pause" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                setup { mock_send @player, "pause" }
         
     | 
| 
      
 12 
     | 
    
         
            +
                asserts("returns true") { @player.pause }
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              context "quit" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  mock_send @player, "quit"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  mock(@player.stdin).close { true }
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                asserts("returns true") { @player.quit }
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              context "volume" do
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                context "increases" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  setup { mock_send @player, "volume 1","Volume: 10 %\n",/Volume/ }
         
     | 
| 
      
 27 
     | 
    
         
            +
                  asserts("returns true") { @player.volume :up }.equals "10"
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                context "decreases" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  setup { mock_send @player, "volume 0","Volume: 10 %\n",/Volume/ }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  asserts("returns true") { @player.volume :down }.equals "10"
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                context "sets volume" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  setup { mock_send @player, "volume 40 1","Volume: 10 %\n",/Volume/ }
         
     | 
| 
      
 37 
     | 
    
         
            +
                  asserts("returns true") { @player.volume :set,40 }.equals "10"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                context "incorrect action" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                  setup { @player.volume :boo }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  asserts("returns false").equals false
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              context "seek" do
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                context "by relative" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  setup { mock_send @player, "seek 5 0","Position: 10 %\n",/Position/ }
         
     | 
| 
      
 50 
     | 
    
         
            +
                  asserts("seek 5") { @player.seek 5 }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  asserts("seek 5,:relative") { @player.seek 5,:relative }.equals "10"
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                context "by percentage" do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  setup { mock_send @player, "seek 5 1","Position: 10 %\n",/Position/ }
         
     | 
| 
      
 56 
     | 
    
         
            +
                  asserts("seek 5,:percent") { @player.seek 5,:percent }.equals "10"
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                context "by absolute" do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  setup { mock_send @player, "seek 5 2","Position: 10 %\n",/Position/ }
         
     | 
| 
      
 61 
     | 
    
         
            +
                  asserts("seek 5,:absolute") { @player.seek 5,:absolute }.equals "10"
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              context "edl_mark" do
         
     | 
| 
      
 66 
     | 
    
         
            +
                setup { mock_send @player, "edl_mark"}
         
     | 
| 
      
 67 
     | 
    
         
            +
                asserts("returns true") { @player.edl_mark }
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              context "speed_incr" do
         
     | 
| 
      
 71 
     | 
    
         
            +
                setup { mock_send @player, "speed_incr 5","Speed: x   10",/Speed/ }
         
     | 
| 
      
 72 
     | 
    
         
            +
                asserts("speed_incr 5") { @player.speed_incr 5 }.equals "10"
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
              context "speed_mult" do
         
     | 
| 
      
 76 
     | 
    
         
            +
                setup { mock_send @player, "speed_mult 5","Speed: x   10",/Speed/ }
         
     | 
| 
      
 77 
     | 
    
         
            +
                asserts("speed_mult 5") { @player.speed_mult 5 }.equals "10"
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              context "speed_set" do
         
     | 
| 
      
 81 
     | 
    
         
            +
                setup { mock_send @player, "speed_set 5","Speed: x   10",/Speed/ }
         
     | 
| 
      
 82 
     | 
    
         
            +
                asserts("speed_set 5") { @player.speed_set 5 }.equals "10"
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
              context "speed_set speed_mult speed_incr raise error" do
         
     | 
| 
      
 86 
     | 
    
         
            +
                asserts("speed_incr 6") {  @player.speed_incr 6 }.raises ArgumentError,"Value must be less than 6"
         
     | 
| 
      
 87 
     | 
    
         
            +
                asserts("speed_mult 6") {  @player.speed_mult 6 }.raises ArgumentError,"Value must be less than 6"
         
     | 
| 
      
 88 
     | 
    
         
            +
                asserts("speed_set 6") {  @player.speed_set 6 }.raises ArgumentError,"Value must be less than 6"
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
              context "speed" do
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                context "increment" do
         
     | 
| 
      
 94 
     | 
    
         
            +
                  setup { mock(@player).speed_incr(5) { true } }
         
     | 
| 
      
 95 
     | 
    
         
            +
                  asserts("speed 5,:increment") { @player.speed 5,:increment }
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                context "multiply" do
         
     | 
| 
      
 99 
     | 
    
         
            +
                  setup { mock(@player).speed_mult(5) { true } }
         
     | 
| 
      
 100 
     | 
    
         
            +
                  asserts("speed 5,:multiply") { @player.speed 5,:multiply }
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                context "set" do
         
     | 
| 
      
 104 
     | 
    
         
            +
                  setup { mock(@player).speed_set(5) { true } }
         
     | 
| 
      
 105 
     | 
    
         
            +
                  asserts("speed 5") {  @player.speed 5 }
         
     | 
| 
      
 106 
     | 
    
         
            +
                  asserts("speed 5, :set") {  @player.speed 5,:set }
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
              end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              context "frame_step" do
         
     | 
| 
      
 111 
     | 
    
         
            +
                setup { mock_send @player, "frame_step" }
         
     | 
| 
      
 112 
     | 
    
         
            +
                asserts("returns true") { @player.frame_step }
         
     | 
| 
      
 113 
     | 
    
         
            +
              end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
              context "pt_step" do
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                context "forced" do
         
     | 
| 
      
 118 
     | 
    
         
            +
                  setup { mock_send @player, "pt_step 5 1" }
         
     | 
| 
      
 119 
     | 
    
         
            +
                  asserts("pt_step 5, :force") { @player.pt_step 5, :force }
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                context "not forced" do
         
     | 
| 
      
 123 
     | 
    
         
            +
                  setup { mock_send @player, "pt_step 5 0"  }
         
     | 
| 
      
 124 
     | 
    
         
            +
                  asserts("pt_step 5") {  @player.pt_step 5 }
         
     | 
| 
      
 125 
     | 
    
         
            +
                  asserts("pt_step 5, :no_force") { @player.pt_step 5, :no_force }
         
     | 
| 
      
 126 
     | 
    
         
            +
                end
         
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
              context "pt_up_step" do
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                context "forced" do
         
     | 
| 
      
 132 
     | 
    
         
            +
                  setup { mock_send @player, "pt_up_step 5 1"}
         
     | 
| 
      
 133 
     | 
    
         
            +
                  asserts("pt_up_step 5, :force") { @player.pt_up_step 5, :force }
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                context "not forced" do
         
     | 
| 
      
 137 
     | 
    
         
            +
                  setup { mock_send @player, "pt_up_step 5 0" }
         
     | 
| 
      
 138 
     | 
    
         
            +
                  asserts("pt_up_step 5") { @player.pt_up_step 5 }
         
     | 
| 
      
 139 
     | 
    
         
            +
                  asserts("pt_up_step 5, :no_force") { @player.pt_up_step 5, :no_force }
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
              end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
              context "alt_src_step" do
         
     | 
| 
      
 144 
     | 
    
         
            +
                setup { mock_send @player, "alt_src_step 5" }
         
     | 
| 
      
 145 
     | 
    
         
            +
                asserts("returns true") { @player.alt_src_step 5 }
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
              context "loop" do
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                context "none" do
         
     | 
| 
      
 151 
     | 
    
         
            +
                  setup { mock_send @player,"loop -1" }
         
     | 
| 
      
 152 
     | 
    
         
            +
                  asserts("loop :none") { @player.loop :none }
         
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                context "forever" do
         
     | 
| 
      
 156 
     | 
    
         
            +
                  setup { mock_send @player, "loop 0" }
         
     | 
| 
      
 157 
     | 
    
         
            +
                  asserts("loop") { @player.loop }
         
     | 
| 
      
 158 
     | 
    
         
            +
                  asserts("loop :forever") { @player.loop :forever }
         
     | 
| 
      
 159 
     | 
    
         
            +
                end
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                context "set value" do
         
     | 
| 
      
 162 
     | 
    
         
            +
                  setup { mock_send @player,"loop 5" }
         
     | 
| 
      
 163 
     | 
    
         
            +
                  asserts("loop :set, 5") { @player.loop :set, 5 }
         
     | 
| 
      
 164 
     | 
    
         
            +
                end
         
     | 
| 
      
 165 
     | 
    
         
            +
              end
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
              context "use_master" do
         
     | 
| 
      
 168 
     | 
    
         
            +
                setup { mock_send @player, "use_master" }
         
     | 
| 
      
 169 
     | 
    
         
            +
                asserts("returns true") { @player.use_master }
         
     | 
| 
      
 170 
     | 
    
         
            +
              end
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
              context "mute" do
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                context "toggle" do
         
     | 
| 
      
 175 
     | 
    
         
            +
                  setup { mock_send @player, "mute", "Mute: enabled",/Mute/}
         
     | 
| 
      
 176 
     | 
    
         
            +
                  asserts("returns true") { @player.mute }.equals "enabled"
         
     | 
| 
      
 177 
     | 
    
         
            +
                end
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                context "set on" do
         
     | 
| 
      
 180 
     | 
    
         
            +
                  setup { mock_send @player, "mute 1","Mute: enabled",/Mute/}
         
     | 
| 
      
 181 
     | 
    
         
            +
                  asserts("mute :on") { @player.mute :on }.equals "enabled"
         
     | 
| 
      
 182 
     | 
    
         
            +
                end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                context "set off" do
         
     | 
| 
      
 185 
     | 
    
         
            +
                  setup { mock_send @player, "mute 0","Mute: enabled",/Mute/}
         
     | 
| 
      
 186 
     | 
    
         
            +
                  asserts("mute :off") { @player.mute :off }.equals "enabled"
         
     | 
| 
      
 187 
     | 
    
         
            +
                end
         
     | 
| 
      
 188 
     | 
    
         
            +
              end
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
              context "get" do
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                %w[time_pos time_length file_name video_codec video_bitrate video_resolution
         
     | 
| 
      
 193 
     | 
    
         
            +
                  audio_codec audio_bitrate audio_samples meta_title meta_artist meta_album
         
     | 
| 
      
 194 
     | 
    
         
            +
                meta_year meta_comment meta_track meta_genre].each do |info|
         
     | 
| 
      
 195 
     | 
    
         
            +
                  context info do
         
     | 
| 
      
 196 
     | 
    
         
            +
                    resp = case info
         
     | 
| 
      
 197 
     | 
    
         
            +
                    when "time_pos" then "ANS_TIME_POSITION"
         
     | 
| 
      
 198 
     | 
    
         
            +
                    when "time_length" then "ANS_LENGTH"
         
     | 
| 
      
 199 
     | 
    
         
            +
                    when "file_name" then "ANS_FILENAME"
         
     | 
| 
      
 200 
     | 
    
         
            +
                    else "ANS_#{info.upcase}"
         
     | 
| 
      
 201 
     | 
    
         
            +
                    end
         
     | 
| 
      
 202 
     | 
    
         
            +
                    setup { mock_send @player, "get_#{info}","#{resp}='100'",/#{resp}/ }
         
     | 
| 
      
 203 
     | 
    
         
            +
                    asserts("get :#{info}") { @player.get info.to_sym }
         
     | 
| 
      
 204 
     | 
    
         
            +
                  end
         
     | 
| 
      
 205 
     | 
    
         
            +
                end
         
     | 
| 
      
 206 
     | 
    
         
            +
              end
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
              context "load_file" do
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
                asserts("invalid file") { @player.load_file 'booger' }.raises ArgumentError,"Invalid File"
         
     | 
| 
      
 211 
     | 
    
         
            +
                context "append" do
         
     | 
| 
      
 212 
     | 
    
         
            +
                  setup { mock_send @player, "loadfile test/test.mp3 1" }
         
     | 
| 
      
 213 
     | 
    
         
            +
                  asserts("load_file test/test.mp3, :append") { @player.load_file 'test/test.mp3', :append }
         
     | 
| 
      
 214 
     | 
    
         
            +
                end
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
                context "no append" do
         
     | 
| 
      
 217 
     | 
    
         
            +
                  setup { mock_send @player, "loadfile test/test.mp3 0" }
         
     | 
| 
      
 218 
     | 
    
         
            +
                  asserts("load_file test/test.mp3") { @player.load_file 'test/test.mp3' }
         
     | 
| 
      
 219 
     | 
    
         
            +
                  asserts("load_file test/test.mp3, :no_append") { @player.load_file 'test/test.mp3', :no_append }
         
     | 
| 
      
 220 
     | 
    
         
            +
                end
         
     | 
| 
      
 221 
     | 
    
         
            +
              end
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
              context "load_list" do
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
                asserts("invalid playlist") { @player.load_list 'booger' }.raises ArgumentError,"Invalid File"
         
     | 
| 
      
 226 
     | 
    
         
            +
                context "append" do
         
     | 
| 
      
 227 
     | 
    
         
            +
                  setup { mock_send @player, "loadlist test/test.mp3 1" }
         
     | 
| 
      
 228 
     | 
    
         
            +
                  asserts("load_list test/test.mp3, :append") { @player.load_list 'test/test.mp3', :append }
         
     | 
| 
      
 229 
     | 
    
         
            +
                end
         
     | 
| 
      
 230 
     | 
    
         
            +
             
     | 
| 
      
 231 
     | 
    
         
            +
                context "no append" do
         
     | 
| 
      
 232 
     | 
    
         
            +
                  setup { mock_send @player, "loadlist test/test.mp3 0" }
         
     | 
| 
      
 233 
     | 
    
         
            +
                  asserts("load_list test/test.mp3") { @player.load_list 'test/test.mp3' }
         
     | 
| 
      
 234 
     | 
    
         
            +
                  asserts("load_list test/test.mp3, :no_append") { @player.load_list 'test/test.mp3', :no_append }
         
     | 
| 
      
 235 
     | 
    
         
            +
                end
         
     | 
| 
      
 236 
     | 
    
         
            +
              end
         
     | 
| 
      
 237 
     | 
    
         
            +
             
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
            end
         
     |