[前][次][番号順一覧][スレッド一覧]

ruby-changes:21121

From: nagachika <ko1@a...>
Date: Sat, 3 Sep 2011 18:47:01 +0900 (JST)
Subject: [ruby-changes:21121] nagachika:r33170 (trunk): * lib/thread.rb (SizedQueue#max=) raise ArgumentError if max is not

nagachika	2011-09-03 18:46:51 +0900 (Sat, 03 Sep 2011)

  New Revision: 33170

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33170

  Log:
    * 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.

  Modified files:
    trunk/ChangeLog
    trunk/lib/thread.rb
    trunk/test/thread/test_queue.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 33169)
+++ ChangeLog	(revision 33170)
@@ -1,3 +1,12 @@
+Sat Sep  3 18:40:57 2011  CHIKANAGA Tomoyuki  <nagachika00@g...>
+
+	* 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@r...>
 
 	* io.c (validate_enc_binmode, prep_stdio): default to text mode on
Index: lib/thread.rb
===================================================================
--- lib/thread.rb	(revision 33169)
+++ lib/thread.rb	(revision 33170)
@@ -269,6 +269,7 @@
   # 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
Index: test/thread/test_queue.rb
===================================================================
--- test/thread/test_queue.rb	(revision 33169)
+++ test/thread/test_queue.rb	(revision 33170)
@@ -35,4 +35,22 @@
     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

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]