diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/rss/maker/base.rb | 6 | ||||
-rw-r--r-- | test/rss/test_maker_1.0.rb | 54 |
3 files changed, 67 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Sat Sep 17 08:35:39 2005 Kouhei Sutou <kou@cozmixng.org> + + * lib/rss/maker/base.rb (RSS::Maker::ItemsBase#normalize): fixed + strange RSS::Maker::Item#max_size behavior. + Thanks to Kazuhiko <kazuhiko@fdiary.net>. + + * test/rss/test_maker_1.0.rb (RSS::TestMaker10#test_items): ditto. + Sat Sep 17 08:02:53 2005 Shugo Maeda <shugo@ruby-lang.org> * lib/net/imap.rb: supported DIGEST-MD5. Thanks, Mathieu Arnold. diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index 4972821cf1..dbd8bf9041 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -401,7 +401,11 @@ EOC end def normalize - sort_if_need[0..@max_size] + if @max_size >= 0 + sort_if_need[0...@max_size] + else + sort_if_need[0..@max_size] + end end def current_element(rss) diff --git a/test/rss/test_maker_1.0.rb b/test/rss/test_maker_1.0.rb index 1fa86662e1..dca50f7e69 100644 --- a/test/rss/test_maker_1.0.rb +++ b/test/rss/test_maker_1.0.rb @@ -256,6 +256,60 @@ module RSS assert_equal("#{link}#{i}", item.link) assert_equal("#{description}#{i}", item.description) end + + max_size = item_size / 2 + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + + item_size.times do |i| + item = maker.items.new_item + item.title = "#{title}#{i}" + item.link = "#{link}#{i}" + item.description = "#{description}#{i}" + end + maker.items.max_size = max_size + end + assert_equal(max_size, rss.items.size) + rss.items.each_with_index do |item, i| + assert_equal("#{link}#{i}", item.about) + assert_equal("#{title}#{i}", item.title) + assert_equal("#{link}#{i}", item.link) + assert_equal("#{description}#{i}", item.description) + end + + max_size = 0 + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + + item_size.times do |i| + item = maker.items.new_item + item.title = "#{title}#{i}" + item.link = "#{link}#{i}" + item.description = "#{description}#{i}" + end + maker.items.max_size = max_size + end + assert_equal(max_size, rss.items.size) + + max_size = -2 + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + + item_size.times do |i| + item = maker.items.new_item + item.title = "#{title}#{i}" + item.link = "#{link}#{i}" + item.description = "#{description}#{i}" + end + maker.items.max_size = max_size + end + assert_equal(item_size + max_size + 1, rss.items.size) + rss.items.each_with_index do |item, i| + assert_equal("#{link}#{i}", item.about) + assert_equal("#{title}#{i}", item.title) + assert_equal("#{link}#{i}", item.link) + assert_equal("#{description}#{i}", item.description) + end end def test_not_valid_items |