From bcf8dd1096bc3660b2f56b0c70d00c33c79c995d Mon Sep 17 00:00:00 2001 From: marcandre Date: Sun, 6 Apr 2014 17:45:07 +0000 Subject: [PATCH] * lib/matrix: Handle empty diagonal matrix case [fix GH-576] Patch by gogotanaka git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/matrix.rb | 1 + test/matrix/test_matrix.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/matrix.rb b/lib/matrix.rb index f82ed65979..e0995c394f 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -204,6 +204,7 @@ class Matrix # def Matrix.diagonal(*values) size = values.size + return Matrix.empty if size == 0 rows = Array.new(size) {|j| row = Array.new(size, 0) row[j] = values[j] diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb index 26248e5746..50ab00cca7 100644 --- a/test/matrix/test_matrix.rb +++ b/test/matrix/test_matrix.rb @@ -179,6 +179,7 @@ class TestMatrix < Test::Unit::TestCase end def test_diagonal + assert_equal(Matrix.empty(0, 0), Matrix.diagonal( )) assert_equal(Matrix[[3,0,0],[0,2,0],[0,0,1]], Matrix.diagonal(3, 2, 1)) assert_equal(Matrix[[4,0,0,0],[0,3,0,0],[0,0,2,0],[0,0,0,1]], Matrix.diagonal(4, 3, 2, 1)) end