* lib/thread.rb (SizedQueue#max=) raise ArgumentError if max is not

positive number. patch by Masaki Matsushita.
  [ruby-dev:44449] [Bug #5259]

* test/thread/test_queue.rb (test_sized_queue_initialize,
  test_sized_queue_assign_max): add tests for it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2011-09-03 09:46:51 +00:00
Родитель b31c817782
Коммит a46d29bb4e
3 изменённых файлов: 28 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,12 @@
Sat Sep 3 18:40:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
* lib/thread.rb (SizedQueue#max=) raise ArgumentError if max is not
positive number. patch by Masaki Matsushita.
[ruby-dev:44449] [Bug #5259]
* test/thread/test_queue.rb (test_sized_queue_initialize,
test_sized_queue_assign_max): add tests for it.
Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (validate_enc_binmode, prep_stdio): default to text mode on

Просмотреть файл

@ -269,6 +269,7 @@ class SizedQueue < Queue
# Sets the maximum size of the queue.
#
def max=(max)
raise ArgumentError, "queue size must be positive" unless max > 0
diff = nil
@mutex.synchronize {
if max <= @max

Просмотреть файл

@ -35,4 +35,22 @@ class TestQueue < Test::Unit::TestCase
assert_equal 0, from_workers.size
assert_equal 0, to_workers.size
end
def test_sized_queue_initialize
q = SizedQueue.new(1)
assert_equal 1, q.max
assert_raise(ArgumentError) { SizedQueue.new(0) }
assert_raise(ArgumentError) { SizedQueue.new(-1) }
end
def test_sized_queue_assign_max
q = SizedQueue.new(2)
assert_equal(2, q.max)
q.max = 1
assert_equal(1, q.max)
assert_raise(ArgumentError) { q.max = 0 }
assert_equal(1, q.max)
assert_raise(ArgumentError) { q.max = -1 }
assert_equal(1, q.max)
end
end