X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=test%2Fyoutube_test.rb;h=233f31bafadd7e9d71918a94ac70f0547c457589;hb=882367e0a63e54d9f5694db038603bc116f1b721;hp=b5de6a8ca348babc7bc1a1850bed09f7d3b58089;hpb=2c835ed7a247ed5639277bc9674b848722ad998d;p=dead%2Fwhatever-dl.git diff --git a/test/youtube_test.rb b/test/youtube_test.rb index b5de6a8..233f31b 100644 --- a/test/youtube_test.rb +++ b/test/youtube_test.rb @@ -31,6 +31,11 @@ class YoutubeTest < Test::Unit::TestCase assert(Youtube.owns_url?('http://www.youtube.com/watch?v=K9iDMcmm0tE')) assert(Youtube.owns_url?('http://www.youtube.com/watch?v=K9iDMcmm0tE#')) assert(Youtube.owns_url?('http://www.youtube.com/v/K9iDMcmm0tE')) + assert(Youtube.owns_url?('http://www.youtube.com/watch?v=83-hlYMH1XE')) + assert(Youtube.owns_url?('http://www.youtube.com/watch?v=83-hlYMH1XE&feature=dir')) + assert(Youtube.owns_url?('http://in.youtube.com/watch?v=VcydqSpYN00&feature=channel_page')) + assert(Youtube.owns_url?('http://uk.youtube.com/watch?v=LN4Ov6ZLcrI')) + assert(Youtube.owns_url?('http://www.youtube.com/meetlocalbiz#p/u/0/rJVWV4aA6Jk')) end @@ -43,50 +48,110 @@ class YoutubeTest < Test::Unit::TestCase def test_parse_video_id - yt = Youtube.new() + yt = Youtube.new('http://www.youtube.com/watch?v=SudixyugiX4') expected_result = 'SudixyugiX4' - actual_result = yt.send('parse_video_id', 'http://www.youtube.com/watch?v=SudixyugiX4') + actual_result = yt.send('parse_video_id') assert_equal(expected_result, actual_result) end def test_parse_video_id_again - yt = Youtube.new() + yt = Youtube.new('http://www.youtube.com/watch?v=K9iDMcmm0tE') expected_result = 'K9iDMcmm0tE' - actual_result = yt.send('parse_video_id', 'http://www.youtube.com/watch?v=K9iDMcmm0tE') + actual_result = yt.send('parse_video_id') assert_equal(expected_result, actual_result) end - - def test_parse_t_parameter - yt = Youtube.new() - + + def test_get_available_formats + # Make sure that we can parse the available formats from a page. + yt = Youtube.new(nil) + page_data = nil + + File.open('test/fixtures/youtube/BUer8Dv2HW8.html') do |f| + page_data = f.read + end + + actual_formats = yt.send('get_available_formats', page_data) + expected_formats = [ 37, 22, 35, 18, 34, 5 ] - File.open('test/fixtures/youtube/SudixyugiX4.html') do |f| + # Make sure that all of the elements of the "expected" set are in + # the "actual" set and vice-versa. + assert_equal([], expected_formats - actual_formats) + assert_equal([], actual_formats - expected_formats) + end + + + def test_get_available_formats_from_url + # Tests a different regex than the other available formats test. + yt = Youtube.new(nil) + + page_data = nil + + File.open('test/fixtures/youtube/cpU27Xp8zdM.html') do |f| page_data = f.read end - expected_result = 'OEgsToPDskLQUAntWWpzhEMhBMlgqHdo' - actual_result = yt.send('parse_t_parameter', page_data) - assert_equal(expected_result, actual_result) + actual_formats = yt.send('get_available_formats', page_data) + expected_formats = [ 34, 5 ] + + # Make sure that all of the elements of the "expected" set are in + # the "actual" set and vice-versa. + assert_equal([], expected_formats - actual_formats) + assert_equal([], actual_formats - expected_formats) end - - def test_parse_t_parameter_again - # This was failing once because my regex missed a hyphen. - # I modified the regex to match anything between the pair - # of quotes, so it should now catch the hyphen and underscore. - yt = Youtube.new() - + + def test_get_desired_format + # The get_desired_format() method should choose the best of the + # available formats. + yt = Youtube.new(nil) + page_data = nil - - File.open('test/fixtures/youtube/K9iDMcmm0tE.html') do |f| + + File.open('test/fixtures/youtube/BUer8Dv2HW8.html') do |f| page_data = f.read end - expected_result = 'O_EgsToPDskJsXVvAXpAct1zug-lBJBz' - actual_result = yt.send('parse_t_parameter', page_data) + available_formats = yt.send('get_available_formats', page_data) + actual_result = yt.send('get_desired_format', available_formats) + expected_result = 37 + + assert_equal(expected_result, actual_result) + end + + + def test_get_video_filename + yt = Youtube.new('http://www.youtube.com/watch?v=SudixyugiX4') + expected_result = 'SudixyugiX4.flv' + actual_result = yt.get_video_filename() + assert_equal(expected_result, actual_result) + end + + + def test_get_video_filename_again + yt = Youtube.new('http://www.youtube.com/watch?v=K9iDMcmm0tE') + expected_result = 'K9iDMcmm0tE.flv' + actual_result = yt.get_video_filename() + assert_equal(expected_result, actual_result) + end + + + def test_get_troublesome_video_filename_first_form + # This non-alphanumeric video id was causing + # get_video_filename to barf. + yt = Youtube.new('http://www.youtube.com/watch?v=83-hlYMH1XE&feature=dir') + expected_result = '83-hlYMH1XE.flv' + actual_result = yt.get_video_filename() + assert_equal(expected_result, actual_result) + end + + + def test_get_troublesome_video_filename_second_form + yt = Youtube.new('http://www.youtube.com/v/83-hlYMH1XE&feature=dir') + expected_result = '83-hlYMH1XE.flv' + actual_result = yt.get_video_filename() assert_equal(expected_result, actual_result) end