summaryrefslogtreecommitdiff
path: root/spec/ruby/library/matrix/zero_spec.rb
blob: 80162a03d0aefa8573581ab67e69c02d831c8fee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require_relative '../../spec_helper'

ruby_version_is ""..."3.1" do
  require_relative 'fixtures/classes'
  require 'matrix'

  describe "Matrix.zero" do
    it "returns an object of type Matrix" do
      Matrix.zero(3).should be_kind_of(Matrix)
    end

    it "creates a n x n matrix" do
      m3 = Matrix.zero(3)
      m3.row_size.should == 3
      m3.column_size.should == 3

      m8 = Matrix.zero(8)
      m8.row_size.should == 8
      m8.column_size.should == 8
    end

    it "initializes all cells to 0" do
      size = 10
      m = Matrix.zero(size)

      (0...size).each do |i|
        (0...size).each do |j|
          m[i, j].should == 0
        end
      end
    end

    describe "for a subclass of Matrix" do
      it "returns an instance of that subclass" do
        MatrixSub.zero(3).should be_an_instance_of(MatrixSub)
      end
    end
  end

  describe "Matrix.zero?" do
    it "returns true for empty matrices" do
      Matrix.empty.should.zero?
      Matrix.empty(3,0).should.zero?
      Matrix.empty(0,3).should.zero?
    end

    it "returns true for matrices with zero entries" do
      Matrix.zero(2,3).should.zero?
    end

    it "returns false for matrices with non zero entries" do
      Matrix[[1]].should_not.zero?
    end
  end
end