summaryrefslogtreecommitdiff
path: root/spec/ruby/library/matrix/inverse_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/matrix/inverse_spec.rb')
-rw-r--r--spec/ruby/library/matrix/inverse_spec.rb36
1 files changed, 34 insertions, 2 deletions
diff --git a/spec/ruby/library/matrix/inverse_spec.rb b/spec/ruby/library/matrix/inverse_spec.rb
index fa3fa7de8a..38b01b28fb 100644
--- a/spec/ruby/library/matrix/inverse_spec.rb
+++ b/spec/ruby/library/matrix/inverse_spec.rb
@@ -1,7 +1,39 @@
require_relative '../../spec_helper'
require_relative 'spec_helper'
-require_relative 'shared/inverse'
+require_relative 'fixtures/classes'
+require 'matrix'
describe "Matrix#inverse" do
- it_behaves_like :inverse, :inverse
+ it "returns a Matrix" do
+ Matrix[ [1,2], [2,1] ].inverse.should.instance_of?(Matrix)
+ end
+
+ it "returns the inverse of the Matrix" do
+ Matrix[
+ [1, 3, 3], [1, 4, 3], [1, 3, 4]
+ ].inverse.should ==
+ Matrix[
+ [7, -3, -3], [-1, 1, 0], [-1, 0, 1]
+ ]
+ end
+
+ it "returns the inverse of the Matrix (other case)" do
+ Matrix[
+ [1, 2, 3], [0, 1, 4], [5, 6, 0]
+ ].inverse.should be_close_to_matrix([
+ [-24, 18, 5], [20, -15, -4], [-5, 4, 1]
+ ])
+ end
+
+ it "raises a ErrDimensionMismatch if the Matrix is not square" do
+ ->{
+ Matrix[ [1,2,3], [1,2,3] ].inverse
+ }.should.raise(Matrix::ErrDimensionMismatch)
+ end
+
+ describe "for a subclass of Matrix" do
+ it "returns an instance of that subclass" do
+ MatrixSub.ins.inverse.should.instance_of?(MatrixSub)
+ end
+ end
end