From 8ba053d3fb2ba0482bcfd913d99e4adedeb4be27 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 15 Feb 2024 19:01:44 +0900 Subject: [PATCH] Re-enabled old bundled gems --- spec/ruby/library/matrix/I_spec.rb | 9 +- .../ruby/library/matrix/antisymmetric_spec.rb | 54 +- spec/ruby/library/matrix/build_spec.rb | 117 ++-- spec/ruby/library/matrix/clone_spec.rb | 37 +- spec/ruby/library/matrix/coerce_spec.rb | 11 +- spec/ruby/library/matrix/collect_spec.rb | 9 +- spec/ruby/library/matrix/column_size_spec.rb | 19 +- spec/ruby/library/matrix/column_spec.rb | 53 +- .../ruby/library/matrix/column_vector_spec.rb | 37 +- .../library/matrix/column_vectors_spec.rb | 37 +- spec/ruby/library/matrix/columns_spec.rb | 67 +-- spec/ruby/library/matrix/conj_spec.rb | 9 +- spec/ruby/library/matrix/conjugate_spec.rb | 9 +- spec/ruby/library/matrix/constructor_spec.rb | 103 ++-- spec/ruby/library/matrix/det_spec.rb | 11 +- spec/ruby/library/matrix/determinant_spec.rb | 11 +- spec/ruby/library/matrix/diagonal_spec.rb | 105 ++-- spec/ruby/library/matrix/divide_spec.rb | 83 ++- spec/ruby/library/matrix/each_spec.rb | 119 ++-- .../library/matrix/each_with_index_spec.rb | 133 ++--- .../eigenvalue_matrix_spec.rb | 13 +- .../eigenvalues_spec.rb | 35 +- .../eigenvector_matrix_spec.rb | 33 +- .../eigenvectors_spec.rb | 37 +- .../initialize_spec.rb | 39 +- .../eigenvalue_decomposition/to_a_spec.rb | 27 +- .../library/matrix/element_reference_spec.rb | 31 +- spec/ruby/library/matrix/empty_spec.rb | 107 ++-- spec/ruby/library/matrix/eql_spec.rb | 15 +- spec/ruby/library/matrix/equal_value_spec.rb | 15 +- spec/ruby/library/matrix/exponent_spec.rb | 93 ++- spec/ruby/library/matrix/find_index_spec.rb | 221 ++++--- spec/ruby/library/matrix/hash_spec.rb | 21 +- spec/ruby/library/matrix/hermitian_spec.rb | 53 +- spec/ruby/library/matrix/identity_spec.rb | 9 +- spec/ruby/library/matrix/imag_spec.rb | 9 +- spec/ruby/library/matrix/imaginary_spec.rb | 9 +- spec/ruby/library/matrix/inspect_spec.rb | 39 +- spec/ruby/library/matrix/inv_spec.rb | 11 +- spec/ruby/library/matrix/inverse_from_spec.rb | 9 +- spec/ruby/library/matrix/inverse_spec.rb | 11 +- .../library/matrix/lower_triangular_spec.rb | 39 +- .../lup_decomposition/determinant_spec.rb | 33 +- .../lup_decomposition/initialize_spec.rb | 21 +- .../matrix/lup_decomposition/l_spec.rb | 27 +- .../matrix/lup_decomposition/p_spec.rb | 27 +- .../matrix/lup_decomposition/solve_spec.rb | 85 ++- .../matrix/lup_decomposition/to_a_spec.rb | 53 +- .../matrix/lup_decomposition/u_spec.rb | 27 +- spec/ruby/library/matrix/map_spec.rb | 9 +- spec/ruby/library/matrix/minor_spec.rb | 135 +++-- spec/ruby/library/matrix/minus_spec.rb | 65 +- spec/ruby/library/matrix/multiply_spec.rb | 104 ++-- spec/ruby/library/matrix/new_spec.rb | 11 +- spec/ruby/library/matrix/normal_spec.rb | 41 +- spec/ruby/library/matrix/orthogonal_spec.rb | 41 +- spec/ruby/library/matrix/permutation_spec.rb | 51 +- spec/ruby/library/matrix/plus_spec.rb | 65 +- spec/ruby/library/matrix/rank_spec.rb | 29 +- spec/ruby/library/matrix/real_spec.rb | 63 +- spec/ruby/library/matrix/rect_spec.rb | 9 +- spec/ruby/library/matrix/rectangular_spec.rb | 9 +- spec/ruby/library/matrix/regular_spec.rb | 45 +- spec/ruby/library/matrix/round_spec.rb | 31 +- spec/ruby/library/matrix/row_size_spec.rb | 19 +- spec/ruby/library/matrix/row_spec.rb | 55 +- spec/ruby/library/matrix/row_vector_spec.rb | 33 +- spec/ruby/library/matrix/row_vectors_spec.rb | 37 +- spec/ruby/library/matrix/rows_spec.rb | 65 +- spec/ruby/library/matrix/scalar/Fail_spec.rb | 9 +- spec/ruby/library/matrix/scalar/Raise_spec.rb | 9 +- .../ruby/library/matrix/scalar/divide_spec.rb | 9 +- .../library/matrix/scalar/exponent_spec.rb | 9 +- .../library/matrix/scalar/included_spec.rb | 9 +- .../library/matrix/scalar/initialize_spec.rb | 9 +- spec/ruby/library/matrix/scalar/minus_spec.rb | 9 +- .../library/matrix/scalar/multiply_spec.rb | 9 +- spec/ruby/library/matrix/scalar/plus_spec.rb | 9 +- spec/ruby/library/matrix/scalar_spec.rb | 93 ++- spec/ruby/library/matrix/singular_spec.rb | 47 +- spec/ruby/library/matrix/square_spec.rb | 41 +- spec/ruby/library/matrix/symmetric_spec.rb | 45 +- spec/ruby/library/matrix/t_spec.rb | 9 +- spec/ruby/library/matrix/to_a_spec.rb | 17 +- spec/ruby/library/matrix/to_s_spec.rb | 9 +- spec/ruby/library/matrix/tr_spec.rb | 11 +- spec/ruby/library/matrix/trace_spec.rb | 11 +- spec/ruby/library/matrix/transpose_spec.rb | 9 +- spec/ruby/library/matrix/unit_spec.rb | 9 +- spec/ruby/library/matrix/unitary_spec.rb | 48 +- .../library/matrix/upper_triangular_spec.rb | 39 +- .../matrix/vector/cross_product_spec.rb | 21 +- spec/ruby/library/matrix/vector/each2_spec.rb | 81 ++- spec/ruby/library/matrix/vector/eql_spec.rb | 23 +- .../matrix/vector/inner_product_spec.rb | 33 +- .../library/matrix/vector/normalize_spec.rb | 29 +- spec/ruby/library/matrix/zero_spec.rb | 75 ++- spec/ruby/library/net-ftp/FTPError_spec.rb | 11 +- .../ruby/library/net-ftp/FTPPermError_spec.rb | 17 +- .../library/net-ftp/FTPProtoError_spec.rb | 17 +- .../library/net-ftp/FTPReplyError_spec.rb | 17 +- .../ruby/library/net-ftp/FTPTempError_spec.rb | 17 +- spec/ruby/library/net-ftp/abort_spec.rb | 97 ++- spec/ruby/library/net-ftp/acct_spec.rb | 111 ++-- spec/ruby/library/net-ftp/binary_spec.rb | 33 +- spec/ruby/library/net-ftp/chdir_spec.rb | 145 +++-- spec/ruby/library/net-ftp/close_spec.rb | 47 +- spec/ruby/library/net-ftp/closed_spec.rb | 31 +- spec/ruby/library/net-ftp/connect_spec.rb | 93 ++- spec/ruby/library/net-ftp/debug_mode_spec.rb | 33 +- .../library/net-ftp/default_passive_spec.rb | 11 +- spec/ruby/library/net-ftp/delete_spec.rb | 113 ++-- spec/ruby/library/net-ftp/dir_spec.rb | 13 +- spec/ruby/library/net-ftp/get_spec.rb | 31 +- .../library/net-ftp/getbinaryfile_spec.rb | 13 +- spec/ruby/library/net-ftp/getdir_spec.rb | 11 +- spec/ruby/library/net-ftp/gettextfile_spec.rb | 13 +- spec/ruby/library/net-ftp/help_spec.rb | 103 ++-- spec/ruby/library/net-ftp/initialize_spec.rb | 557 +++++++++--------- .../net-ftp/last_response_code_spec.rb | 13 +- .../library/net-ftp/last_response_spec.rb | 39 +- spec/ruby/library/net-ftp/lastresp_spec.rb | 13 +- spec/ruby/library/net-ftp/list_spec.rb | 13 +- spec/ruby/library/net-ftp/login_spec.rb | 379 ++++++------ spec/ruby/library/net-ftp/ls_spec.rb | 13 +- spec/ruby/library/net-ftp/mdtm_spec.rb | 59 +- spec/ruby/library/net-ftp/mkdir_spec.rb | 97 ++- spec/ruby/library/net-ftp/mtime_spec.rb | 73 ++- spec/ruby/library/net-ftp/nlst_spec.rb | 141 +++-- spec/ruby/library/net-ftp/noop_spec.rb | 59 +- spec/ruby/library/net-ftp/open_spec.rb | 73 ++- spec/ruby/library/net-ftp/passive_spec.rb | 39 +- spec/ruby/library/net-ftp/put_spec.rb | 31 +- .../library/net-ftp/putbinaryfile_spec.rb | 13 +- spec/ruby/library/net-ftp/puttextfile_spec.rb | 13 +- spec/ruby/library/net-ftp/pwd_spec.rb | 101 ++-- spec/ruby/library/net-ftp/quit_spec.rb | 51 +- spec/ruby/library/net-ftp/rename_spec.rb | 159 +++-- spec/ruby/library/net-ftp/resume_spec.rb | 33 +- spec/ruby/library/net-ftp/retrbinary_spec.rb | 47 +- spec/ruby/library/net-ftp/retrlines_spec.rb | 55 +- spec/ruby/library/net-ftp/return_code_spec.rb | 35 +- spec/ruby/library/net-ftp/rmdir_spec.rb | 111 ++-- spec/ruby/library/net-ftp/sendcmd_spec.rb | 103 ++-- spec/ruby/library/net-ftp/set_socket_spec.rb | 13 +- spec/ruby/library/net-ftp/site_spec.rb | 101 ++-- spec/ruby/library/net-ftp/size_spec.rb | 91 ++- spec/ruby/library/net-ftp/status_spec.rb | 105 ++-- spec/ruby/library/net-ftp/storbinary_spec.rb | 72 ++- spec/ruby/library/net-ftp/storlines_spec.rb | 64 +- spec/ruby/library/net-ftp/system_spec.rb | 91 ++- spec/ruby/library/net-ftp/voidcmd_spec.rb | 103 ++-- spec/ruby/library/net-ftp/welcome_spec.rb | 39 +- spec/ruby/library/prime/each_spec.rb | 247 ++++---- spec/ruby/library/prime/instance_spec.rb | 31 +- .../prime/int_from_prime_division_spec.rb | 19 +- .../library/prime/integer/each_prime_spec.rb | 19 +- .../prime/integer/from_prime_division_spec.rb | 19 +- .../prime/integer/prime_division_spec.rb | 31 +- spec/ruby/library/prime/integer/prime_spec.rb | 27 +- spec/ruby/library/prime/next_spec.rb | 11 +- .../ruby/library/prime/prime_division_spec.rb | 37 +- spec/ruby/library/prime/prime_spec.rb | 27 +- spec/ruby/library/prime/succ_spec.rb | 11 +- 164 files changed, 3899 insertions(+), 4386 deletions(-) diff --git a/spec/ruby/library/matrix/I_spec.rb b/spec/ruby/library/matrix/I_spec.rb index aa064ed54bcdf4..6eeffe8e98cc90 100644 --- a/spec/ruby/library/matrix/I_spec.rb +++ b/spec/ruby/library/matrix/I_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/identity' -ruby_version_is ""..."3.1" do - require_relative 'shared/identity' - - describe "Matrix.I" do - it_behaves_like :matrix_identity, :I - end +describe "Matrix.I" do + it_behaves_like :matrix_identity, :I end diff --git a/spec/ruby/library/matrix/antisymmetric_spec.rb b/spec/ruby/library/matrix/antisymmetric_spec.rb index dcc3c30f3e0b82..200df703cb8a55 100644 --- a/spec/ruby/library/matrix/antisymmetric_spec.rb +++ b/spec/ruby/library/matrix/antisymmetric_spec.rb @@ -1,38 +1,36 @@ require_relative '../../spec_helper' -ruby_version_is ""..."3.1" do - require 'matrix' +require 'matrix' - describe "Matrix#antisymmetric?" do - it "returns true for an antisymmetric Matrix" do - Matrix[[0, -2, Complex(1, 3)], [2, 0, 5], [-Complex(1, 3), -5, 0]].antisymmetric?.should be_true - end +describe "Matrix#antisymmetric?" do + it "returns true for an antisymmetric Matrix" do + Matrix[[0, -2, Complex(1, 3)], [2, 0, 5], [-Complex(1, 3), -5, 0]].antisymmetric?.should be_true + end - it "returns true for a 0x0 empty matrix" do - Matrix.empty.antisymmetric?.should be_true - end + it "returns true for a 0x0 empty matrix" do + Matrix.empty.antisymmetric?.should be_true + end - it "returns false for non-antisymmetric matrices" do - [ - Matrix[[1, 2, 3], [4, 5, 6], [7, 8, 9]], - Matrix[[1, -2, 3], [2, 0, 6], [-3, -6, 0]], # wrong diagonal element - Matrix[[0, 2, -3], [2, 0, 6], [-3, 6, 0]] # only signs wrong - ].each do |matrix| - matrix.antisymmetric?.should be_false - end + it "returns false for non-antisymmetric matrices" do + [ + Matrix[[1, 2, 3], [4, 5, 6], [7, 8, 9]], + Matrix[[1, -2, 3], [2, 0, 6], [-3, -6, 0]], # wrong diagonal element + Matrix[[0, 2, -3], [2, 0, 6], [-3, 6, 0]] # only signs wrong + ].each do |matrix| + matrix.antisymmetric?.should be_false end + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.antisymmetric? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.antisymmetric? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/build_spec.rb b/spec/ruby/library/matrix/build_spec.rb index d3055a1aa7b4ff..6d8017a3dfda7a 100644 --- a/spec/ruby/library/matrix/build_spec.rb +++ b/spec/ruby/library/matrix/build_spec.rb @@ -1,76 +1,73 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix.build" do - describe "Matrix.build" do - - it "returns a Matrix object of the given size" do - m = Matrix.build(3, 4){1} - m.should be_an_instance_of(Matrix) - m.row_size.should == 3 - m.column_size.should == 4 - end + it "returns a Matrix object of the given size" do + m = Matrix.build(3, 4){1} + m.should be_an_instance_of(Matrix) + m.row_size.should == 3 + m.column_size.should == 4 + end - it "builds the Matrix using the given block" do - Matrix.build(2, 3){|col, row| 10*col - row}.should == - Matrix[[0, -1, -2], [10, 9, 8]] - end + it "builds the Matrix using the given block" do + Matrix.build(2, 3){|col, row| 10*col - row}.should == + Matrix[[0, -1, -2], [10, 9, 8]] + end - it "iterates through the first row, then the second, ..." do - acc = [] - Matrix.build(2, 3){|*args| acc << args} - acc.should == [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2]] - end + it "iterates through the first row, then the second, ..." do + acc = [] + Matrix.build(2, 3){|*args| acc << args} + acc.should == [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2]] + end - it "returns an Enumerator is no block is given" do - enum = Matrix.build(2, 1) - enum.should be_an_instance_of(Enumerator) - enum.each{1}.should == Matrix[[1], [1]] - end + it "returns an Enumerator is no block is given" do + enum = Matrix.build(2, 1) + enum.should be_an_instance_of(Enumerator) + enum.each{1}.should == Matrix[[1], [1]] + end - it "requires integers as parameters" do - -> { Matrix.build("1", "2"){1} }.should raise_error(TypeError) - -> { Matrix.build(nil, nil){1} }.should raise_error(TypeError) - -> { Matrix.build(1..2){1} }.should raise_error(TypeError) - end + it "requires integers as parameters" do + -> { Matrix.build("1", "2"){1} }.should raise_error(TypeError) + -> { Matrix.build(nil, nil){1} }.should raise_error(TypeError) + -> { Matrix.build(1..2){1} }.should raise_error(TypeError) + end - it "requires non-negative integers" do - -> { Matrix.build(-1, 1){1} }.should raise_error(ArgumentError) - -> { Matrix.build(+1,-1){1} }.should raise_error(ArgumentError) - end + it "requires non-negative integers" do + -> { Matrix.build(-1, 1){1} }.should raise_error(ArgumentError) + -> { Matrix.build(+1,-1){1} }.should raise_error(ArgumentError) + end - it "returns empty Matrix if one argument is zero" do - m = Matrix.build(0, 3){ - raise "Should not yield" - } - m.should be_empty - m.column_size.should == 3 + it "returns empty Matrix if one argument is zero" do + m = Matrix.build(0, 3){ + raise "Should not yield" + } + m.should be_empty + m.column_size.should == 3 - m = Matrix.build(3, 0){ - raise "Should not yield" - } - m.should be_empty - m.row_size.should == 3 - end + m = Matrix.build(3, 0){ + raise "Should not yield" + } + m.should be_empty + m.row_size.should == 3 + end - it "tries to calls :to_int on arguments" do - int = mock('int') - int.should_receive(:to_int).twice.and_return(2) - Matrix.build(int, int){ 1 }.should == Matrix[ [1,1], [1,1] ] - end + it "tries to calls :to_int on arguments" do + int = mock('int') + int.should_receive(:to_int).twice.and_return(2) + Matrix.build(int, int){ 1 }.should == Matrix[ [1,1], [1,1] ] + end - it "builds an nxn Matrix when given only one argument" do - m = Matrix.build(3){1} - m.row_size.should == 3 - m.column_size.should == 3 - end + it "builds an nxn Matrix when given only one argument" do + m = Matrix.build(3){1} + m.row_size.should == 3 + m.column_size.should == 3 end +end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.build(3){1}.should be_an_instance_of(MatrixSub) - end +describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.build(3){1}.should be_an_instance_of(MatrixSub) end end diff --git a/spec/ruby/library/matrix/clone_spec.rb b/spec/ruby/library/matrix/clone_spec.rb index bde119988f1b61..74e5bf157e7cf5 100644 --- a/spec/ruby/library/matrix/clone_spec.rb +++ b/spec/ruby/library/matrix/clone_spec.rb @@ -1,28 +1,25 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#clone" do - before :each do - @a = Matrix[[1, 2], [3, 4], [5, 6]] - end +describe "Matrix#clone" do + before :each do + @a = Matrix[[1, 2], [3, 4], [5, 6]] + end - it "returns a shallow copy of the matrix" do - b = @a.clone - @a.should_not equal(b) - b.should be_kind_of(Matrix) - b.should == @a - 0.upto(@a.row_size - 1) do |i| - @a.row(i).should_not equal(b.row(i)) - end + it "returns a shallow copy of the matrix" do + b = @a.clone + @a.should_not equal(b) + b.should be_kind_of(Matrix) + b.should == @a + 0.upto(@a.row_size - 1) do |i| + @a.row(i).should_not equal(b.row(i)) end + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.ins.clone.should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.ins.clone.should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/coerce_spec.rb b/spec/ruby/library/matrix/coerce_spec.rb index aa3a32765a109a..4022f00236a802 100644 --- a/spec/ruby/library/matrix/coerce_spec.rb +++ b/spec/ruby/library/matrix/coerce_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#coerce" do - it "allows the division of integer by a Matrix " do - (1/Matrix[[0,1],[-1,0]]).should == Matrix[[0,-1],[1,0]] - end +describe "Matrix#coerce" do + it "allows the division of integer by a Matrix " do + (1/Matrix[[0,1],[-1,0]]).should == Matrix[[0,-1],[1,0]] end end diff --git a/spec/ruby/library/matrix/collect_spec.rb b/spec/ruby/library/matrix/collect_spec.rb index 66ec3486c8138a..bba640213bd8d2 100644 --- a/spec/ruby/library/matrix/collect_spec.rb +++ b/spec/ruby/library/matrix/collect_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/collect' -ruby_version_is ""..."3.1" do - require_relative 'shared/collect' - - describe "Matrix#collect" do - it_behaves_like :collect, :collect - end +describe "Matrix#collect" do + it_behaves_like :collect, :collect end diff --git a/spec/ruby/library/matrix/column_size_spec.rb b/spec/ruby/library/matrix/column_size_spec.rb index e7b42b101ee2df..041914e5b9ca3f 100644 --- a/spec/ruby/library/matrix/column_size_spec.rb +++ b/spec/ruby/library/matrix/column_size_spec.rb @@ -1,16 +1,13 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#column_size" do - it "returns the number of columns" do - Matrix[ [1,2], [3,4] ].column_size.should == 2 - end +describe "Matrix#column_size" do + it "returns the number of columns" do + Matrix[ [1,2], [3,4] ].column_size.should == 2 + end - it "returns 0 for empty matrices" do - Matrix[ [], [] ].column_size.should == 0 - Matrix[ ].column_size.should == 0 - end + it "returns 0 for empty matrices" do + Matrix[ [], [] ].column_size.should == 0 + Matrix[ ].column_size.should == 0 end end diff --git a/spec/ruby/library/matrix/column_spec.rb b/spec/ruby/library/matrix/column_spec.rb index 98a767ad08c498..1f3c80964a6ecc 100644 --- a/spec/ruby/library/matrix/column_spec.rb +++ b/spec/ruby/library/matrix/column_spec.rb @@ -1,38 +1,35 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#column" do - before :all do - @m = Matrix[[1,2,3], [2,3,4]] - end +describe "Matrix#column" do + before :all do + @m = Matrix[[1,2,3], [2,3,4]] + end - it "returns a Vector when called without a block" do - @m.column(1).should == Vector[2,3] - end + it "returns a Vector when called without a block" do + @m.column(1).should == Vector[2,3] + end - it "yields each element in the column to the block" do - a = [] - @m.column(1) {|n| a << n } - a.should == [2,3] - end + it "yields each element in the column to the block" do + a = [] + @m.column(1) {|n| a << n } + a.should == [2,3] + end - it "counts backwards for negative argument" do - @m.column(-1).should == Vector[3, 4] - end + it "counts backwards for negative argument" do + @m.column(-1).should == Vector[3, 4] + end - it "returns self when called with a block" do - @m.column(0) { |x| x }.should equal(@m) - end + it "returns self when called with a block" do + @m.column(0) { |x| x }.should equal(@m) + end - it "returns nil when out of bounds" do - @m.column(3).should == nil - end + it "returns nil when out of bounds" do + @m.column(3).should == nil + end - it "never yields when out of bounds" do - -> { @m.column(3){ raise } }.should_not raise_error - -> { @m.column(-4){ raise } }.should_not raise_error - end + it "never yields when out of bounds" do + -> { @m.column(3){ raise } }.should_not raise_error + -> { @m.column(-4){ raise } }.should_not raise_error end end diff --git a/spec/ruby/library/matrix/column_vector_spec.rb b/spec/ruby/library/matrix/column_vector_spec.rb index afdeaced4757ce..47e866a8d55a66 100644 --- a/spec/ruby/library/matrix/column_vector_spec.rb +++ b/spec/ruby/library/matrix/column_vector_spec.rb @@ -1,28 +1,25 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix.column_vector" do - describe "Matrix.column_vector" do - - it "returns a single column Matrix when called with an Array" do - m = Matrix.column_vector([4,5,6]) - m.should be_an_instance_of(Matrix) - m.should == Matrix[ [4],[5],[6] ] - end + it "returns a single column Matrix when called with an Array" do + m = Matrix.column_vector([4,5,6]) + m.should be_an_instance_of(Matrix) + m.should == Matrix[ [4],[5],[6] ] + end - it "returns an empty Matrix when called with an empty Array" do - m = Matrix.column_vector([]) - m.should be_an_instance_of(Matrix) - m.row_size.should == 0 - m.column_size.should == 1 - end + it "returns an empty Matrix when called with an empty Array" do + m = Matrix.column_vector([]) + m.should be_an_instance_of(Matrix) + m.row_size.should == 0 + m.column_size.should == 1 + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.column_vector([4,5,6]).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.column_vector([4,5,6]).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/column_vectors_spec.rb b/spec/ruby/library/matrix/column_vectors_spec.rb index 7bec095b9adef9..b0cb6f914cc284 100644 --- a/spec/ruby/library/matrix/column_vectors_spec.rb +++ b/spec/ruby/library/matrix/column_vectors_spec.rb @@ -1,29 +1,26 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#column_vectors" do - describe "Matrix#column_vectors" do - - before :each do - @vectors = Matrix[ [1,2], [3,4] ].column_vectors - end - - it "returns an Array" do - Matrix[ [1,2], [3,4] ].column_vectors.should be_an_instance_of(Array) - end + before :each do + @vectors = Matrix[ [1,2], [3,4] ].column_vectors + end - it "returns an Array of Vectors" do - @vectors.all? {|v| v.should be_an_instance_of(Vector)} - end + it "returns an Array" do + Matrix[ [1,2], [3,4] ].column_vectors.should be_an_instance_of(Array) + end - it "returns each column as a Vector" do - @vectors.should == [Vector[1,3], Vector[2,4]] - end + it "returns an Array of Vectors" do + @vectors.all? {|v| v.should be_an_instance_of(Vector)} + end - it "returns an empty Array for empty matrices" do - Matrix[ [] ].column_vectors.should == [] - end + it "returns each column as a Vector" do + @vectors.should == [Vector[1,3], Vector[2,4]] + end + it "returns an empty Array for empty matrices" do + Matrix[ [] ].column_vectors.should == [] end + end diff --git a/spec/ruby/library/matrix/columns_spec.rb b/spec/ruby/library/matrix/columns_spec.rb index 757086c14b7eb8..3095fdd7afb0c7 100644 --- a/spec/ruby/library/matrix/columns_spec.rb +++ b/spec/ruby/library/matrix/columns_spec.rb @@ -1,45 +1,42 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix.columns" do - before :each do - @a = [1, 2] - @b = [3, 4] - @m = Matrix.columns([@a, @b]) - end +describe "Matrix.columns" do + before :each do + @a = [1, 2] + @b = [3, 4] + @m = Matrix.columns([@a, @b]) + end - it "creates a Matrix from argument columns" do - @m.should be_an_instance_of(Matrix) - @m.column(0).to_a.should == @a - @m.column(1).to_a.should == @b - end + it "creates a Matrix from argument columns" do + @m.should be_an_instance_of(Matrix) + @m.column(0).to_a.should == @a + @m.column(1).to_a.should == @b + end - it "accepts Vectors as argument columns" do - m = Matrix.columns([Vector[*@a], Vector[*@b]]) - m.should == @m - m.column(0).to_a.should == @a - m.column(1).to_a.should == @b - end + it "accepts Vectors as argument columns" do + m = Matrix.columns([Vector[*@a], Vector[*@b]]) + m.should == @m + m.column(0).to_a.should == @a + m.column(1).to_a.should == @b + end - it "handles empty matrices" do - e = Matrix.columns([]) - e.row_size.should == 0 - e.column_size.should == 0 - e.should == Matrix[] + it "handles empty matrices" do + e = Matrix.columns([]) + e.row_size.should == 0 + e.column_size.should == 0 + e.should == Matrix[] - v = Matrix.columns([[],[],[]]) - v.row_size.should == 0 - v.column_size.should == 3 - v.should == Matrix[[], [], []].transpose - end + v = Matrix.columns([[],[],[]]) + v.row_size.should == 0 + v.column_size.should == 3 + v.should == Matrix[[], [], []].transpose + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.columns([[1]]).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.columns([[1]]).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/conj_spec.rb b/spec/ruby/library/matrix/conj_spec.rb index a9225803994971..ecee95c255b6bb 100644 --- a/spec/ruby/library/matrix/conj_spec.rb +++ b/spec/ruby/library/matrix/conj_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/conjugate' -ruby_version_is ""..."3.1" do - require_relative 'shared/conjugate' - - describe "Matrix#conj" do - it_behaves_like :matrix_conjugate, :conj - end +describe "Matrix#conj" do + it_behaves_like :matrix_conjugate, :conj end diff --git a/spec/ruby/library/matrix/conjugate_spec.rb b/spec/ruby/library/matrix/conjugate_spec.rb index b99792a24b9606..682bd41d9445df 100644 --- a/spec/ruby/library/matrix/conjugate_spec.rb +++ b/spec/ruby/library/matrix/conjugate_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/conjugate' -ruby_version_is ""..."3.1" do - require_relative 'shared/conjugate' - - describe "Matrix#conjugate" do - it_behaves_like :matrix_conjugate, :conjugate - end +describe "Matrix#conjugate" do + it_behaves_like :matrix_conjugate, :conjugate end diff --git a/spec/ruby/library/matrix/constructor_spec.rb b/spec/ruby/library/matrix/constructor_spec.rb index d8224b44300b5f..70d77babbb955d 100644 --- a/spec/ruby/library/matrix/constructor_spec.rb +++ b/spec/ruby/library/matrix/constructor_spec.rb @@ -1,68 +1,65 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix.[]" do - describe "Matrix.[]" do - - it "requires arrays as parameters" do - -> { Matrix[5] }.should raise_error(TypeError) - -> { Matrix[nil] }.should raise_error(TypeError) - -> { Matrix[1..2] }.should raise_error(TypeError) - -> { Matrix[[1, 2], 3] }.should raise_error(TypeError) - end + it "requires arrays as parameters" do + -> { Matrix[5] }.should raise_error(TypeError) + -> { Matrix[nil] }.should raise_error(TypeError) + -> { Matrix[1..2] }.should raise_error(TypeError) + -> { Matrix[[1, 2], 3] }.should raise_error(TypeError) + end - it "creates an empty Matrix with no arguments" do - m = Matrix[] - m.column_size.should == 0 - m.row_size.should == 0 - end + it "creates an empty Matrix with no arguments" do + m = Matrix[] + m.column_size.should == 0 + m.row_size.should == 0 + end - it "raises for non-rectangular matrices" do - ->{ Matrix[ [0], [0,1] ] }.should \ - raise_error(Matrix::ErrDimensionMismatch) - ->{ Matrix[ [0,1], [0,1,2], [0,1] ]}.should \ - raise_error(Matrix::ErrDimensionMismatch) - end + it "raises for non-rectangular matrices" do + ->{ Matrix[ [0], [0,1] ] }.should \ + raise_error(Matrix::ErrDimensionMismatch) + ->{ Matrix[ [0,1], [0,1,2], [0,1] ]}.should \ + raise_error(Matrix::ErrDimensionMismatch) + end - it "accepts vector arguments" do - a = Matrix[Vector[1, 2], Vector[3, 4]] - a.should be_an_instance_of(Matrix) - a.should == Matrix[ [1, 2], [3, 4] ] - end + it "accepts vector arguments" do + a = Matrix[Vector[1, 2], Vector[3, 4]] + a.should be_an_instance_of(Matrix) + a.should == Matrix[ [1, 2], [3, 4] ] + end - it "tries to calls :to_ary on arguments" do - array = mock('ary') - array.should_receive(:to_ary).and_return([1,2]) - Matrix[array, [3,4] ].should == Matrix[ [1,2], [3,4] ] - end + it "tries to calls :to_ary on arguments" do + array = mock('ary') + array.should_receive(:to_ary).and_return([1,2]) + Matrix[array, [3,4] ].should == Matrix[ [1,2], [3,4] ] + end - it "returns a Matrix object" do - Matrix[ [1] ].should be_an_instance_of(Matrix) - end + it "returns a Matrix object" do + Matrix[ [1] ].should be_an_instance_of(Matrix) + end - it "can create an nxn Matrix" do - m = Matrix[ [20,30], [40.5, 9] ] - m.row_size.should == 2 - m.column_size.should == 2 - m.column(0).should == Vector[20, 40.5] - m.column(1).should == Vector[30, 9] - m.row(0).should == Vector[20, 30] - m.row(1).should == Vector[40.5, 9] - end + it "can create an nxn Matrix" do + m = Matrix[ [20,30], [40.5, 9] ] + m.row_size.should == 2 + m.column_size.should == 2 + m.column(0).should == Vector[20, 40.5] + m.column(1).should == Vector[30, 9] + m.row(0).should == Vector[20, 30] + m.row(1).should == Vector[40.5, 9] + end - it "can create a 0xn Matrix" do - m = Matrix[ [], [], [] ] - m.row_size.should == 3 - m.column_size.should == 0 - end + it "can create a 0xn Matrix" do + m = Matrix[ [], [], [] ] + m.row_size.should == 3 + m.column_size.should == 0 + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub[ [20,30], [40.5, 9] ].should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub[ [20,30], [40.5, 9] ].should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/det_spec.rb b/spec/ruby/library/matrix/det_spec.rb index 7d3d5477357ec9..aa7086cacf2041 100644 --- a/spec/ruby/library/matrix/det_spec.rb +++ b/spec/ruby/library/matrix/det_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/determinant' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/determinant' - require 'matrix' - - describe "Matrix#det" do - it_behaves_like :determinant, :det - end +describe "Matrix#det" do + it_behaves_like :determinant, :det end diff --git a/spec/ruby/library/matrix/determinant_spec.rb b/spec/ruby/library/matrix/determinant_spec.rb index bfd91fcf684181..825c9907b11b5a 100644 --- a/spec/ruby/library/matrix/determinant_spec.rb +++ b/spec/ruby/library/matrix/determinant_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/determinant' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/determinant' - require 'matrix' - - describe "Matrix#determinant" do - it_behaves_like :determinant, :determinant - end +describe "Matrix#determinant" do + it_behaves_like :determinant, :determinant end diff --git a/spec/ruby/library/matrix/diagonal_spec.rb b/spec/ruby/library/matrix/diagonal_spec.rb index 8c82433fde9a59..ef9738e73e3fde 100644 --- a/spec/ruby/library/matrix/diagonal_spec.rb +++ b/spec/ruby/library/matrix/diagonal_spec.rb @@ -1,75 +1,72 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix.diagonal" do - before :each do - @m = Matrix.diagonal(10, 11, 12, 13, 14) - end +describe "Matrix.diagonal" do + before :each do + @m = Matrix.diagonal(10, 11, 12, 13, 14) + end - it "returns an object of type Matrix" do - @m.should be_kind_of(Matrix) - end + it "returns an object of type Matrix" do + @m.should be_kind_of(Matrix) + end - it "returns a square Matrix of the right size" do - @m.column_size.should == 5 - @m.row_size.should == 5 - end + it "returns a square Matrix of the right size" do + @m.column_size.should == 5 + @m.row_size.should == 5 + end - it "sets the diagonal to the arguments" do - (0..4).each do |i| - @m[i, i].should == i + 10 - end + it "sets the diagonal to the arguments" do + (0..4).each do |i| + @m[i, i].should == i + 10 end + end - it "fills all non-diagonal cells with 0" do - (0..4).each do |i| - (0..4).each do |j| - if i != j - @m[i, j].should == 0 - end + it "fills all non-diagonal cells with 0" do + (0..4).each do |i| + (0..4).each do |j| + if i != j + @m[i, j].should == 0 end end end + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.diagonal(1).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.diagonal(1).should be_an_instance_of(MatrixSub) end end +end - describe "Matrix.diagonal?" do - it "returns true for a diagonal Matrix" do - Matrix.diagonal([1, 2, 3]).diagonal?.should be_true - end +describe "Matrix.diagonal?" do + it "returns true for a diagonal Matrix" do + Matrix.diagonal([1, 2, 3]).diagonal?.should be_true + end - it "returns true for a zero square Matrix" do - Matrix.zero(3).diagonal?.should be_true - end + it "returns true for a zero square Matrix" do + Matrix.zero(3).diagonal?.should be_true + end - it "returns false for a non diagonal square Matrix" do - Matrix[[0, 1], [0, 0]].diagonal?.should be_false - Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].diagonal?.should be_false - end + it "returns false for a non diagonal square Matrix" do + Matrix[[0, 1], [0, 0]].diagonal?.should be_false + Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].diagonal?.should be_false + end - it "returns true for an empty 0x0 matrix" do - Matrix.empty(0,0).diagonal?.should be_true - end + it "returns true for an empty 0x0 matrix" do + Matrix.empty(0,0).diagonal?.should be_true + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.diagonal? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.diagonal? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/divide_spec.rb b/spec/ruby/library/matrix/divide_spec.rb index 68e6f1fde50998..2e3bb85bf656b6 100644 --- a/spec/ruby/library/matrix/divide_spec.rb +++ b/spec/ruby/library/matrix/divide_spec.rb @@ -1,57 +1,54 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/classes' +require 'matrix' + +describe "Matrix#/" do + before :each do + @a = Matrix[ [1, 2], [3, 4] ] + @b = Matrix[ [4, 5], [6, 7] ] + @c = Matrix[ [1.2, 2.4], [3.6, 4.8] ] + end -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/classes' - require 'matrix' + it "returns the result of dividing self by another Matrix" do + (@a / @b).should be_close_to_matrix([[2.5, -1.5], [1.5, -0.5]]) + end - describe "Matrix#/" do - before :each do - @a = Matrix[ [1, 2], [3, 4] ] - @b = Matrix[ [4, 5], [6, 7] ] - @c = Matrix[ [1.2, 2.4], [3.6, 4.8] ] + # Guard against the Mathn library + guard -> { !defined?(Math.rsqrt) } do + it "returns the result of dividing self by a Fixnum" do + (@a / 2).should == Matrix[ [0, 1], [1, 2] ] end - it "returns the result of dividing self by another Matrix" do - (@a / @b).should be_close_to_matrix([[2.5, -1.5], [1.5, -0.5]]) - end - - # Guard against the Mathn library - guard -> { !defined?(Math.rsqrt) } do - it "returns the result of dividing self by a Fixnum" do - (@a / 2).should == Matrix[ [0, 1], [1, 2] ] - end - - it "returns the result of dividing self by a Bignum" do - (@a / bignum_value).should == Matrix[ [0, 0], [0, 0] ] - end + it "returns the result of dividing self by a Bignum" do + (@a / bignum_value).should == Matrix[ [0, 0], [0, 0] ] end + end - it "returns the result of dividing self by a Float" do - (@c / 1.2).should == Matrix[ [1, 2], [3, 4] ] - end + it "returns the result of dividing self by a Float" do + (@c / 1.2).should == Matrix[ [1, 2], [3, 4] ] + end - it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do - -> { @a / Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do + -> { @a / Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "returns an instance of Matrix" do - (@a / @b).should be_kind_of(Matrix) - end + it "returns an instance of Matrix" do + (@a / @b).should be_kind_of(Matrix) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - m = MatrixSub.ins - (m/m).should be_an_instance_of(MatrixSub) - (m/1).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + m = MatrixSub.ins + (m/m).should be_an_instance_of(MatrixSub) + (m/1).should be_an_instance_of(MatrixSub) end + end - it "raises a TypeError if other is of wrong type" do - -> { @a / nil }.should raise_error(TypeError) - -> { @a / "a" }.should raise_error(TypeError) - -> { @a / [ [1, 2] ] }.should raise_error(TypeError) - -> { @a / Object.new }.should raise_error(TypeError) - end + it "raises a TypeError if other is of wrong type" do + -> { @a / nil }.should raise_error(TypeError) + -> { @a / "a" }.should raise_error(TypeError) + -> { @a / [ [1, 2] ] }.should raise_error(TypeError) + -> { @a / Object.new }.should raise_error(TypeError) end end diff --git a/spec/ruby/library/matrix/each_spec.rb b/spec/ruby/library/matrix/each_spec.rb index d2b13c80b60281..f3b0f018678c63 100644 --- a/spec/ruby/library/matrix/each_spec.rb +++ b/spec/ruby/library/matrix/each_spec.rb @@ -1,77 +1,74 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#each" do - before :all do - @m = Matrix[ [1, 2, 3], [4, 5, 6] ] - @result = (1..6).to_a - end +describe "Matrix#each" do + before :all do + @m = Matrix[ [1, 2, 3], [4, 5, 6] ] + @result = (1..6).to_a + end - it "returns an Enumerator when called without a block" do - enum = @m.each - enum.should be_an_instance_of(Enumerator) - enum.to_a.should == @result - end + it "returns an Enumerator when called without a block" do + enum = @m.each + enum.should be_an_instance_of(Enumerator) + enum.to_a.should == @result + end - it "returns self" do - @m.each{}.should equal(@m) - end + it "returns self" do + @m.each{}.should equal(@m) + end - it "yields the elements starting with the those of the first row" do - a = [] - @m.each {|x| a << x} - a.should == @result - end + it "yields the elements starting with the those of the first row" do + a = [] + @m.each {|x| a << x} + a.should == @result end +end - describe "Matrix#each with an argument" do - before :all do - @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] - @t = Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ] - end +describe "Matrix#each with an argument" do + before :all do + @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] + @t = Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ] + end - it "raises an ArgumentError for unrecognized argument" do - -> { - @m.each("all"){} - }.should raise_error(ArgumentError) - -> { - @m.each(nil){} - }.should raise_error(ArgumentError) - -> { - @m.each(:left){} - }.should raise_error(ArgumentError) - end + it "raises an ArgumentError for unrecognized argument" do + -> { + @m.each("all"){} + }.should raise_error(ArgumentError) + -> { + @m.each(nil){} + }.should raise_error(ArgumentError) + -> { + @m.each(:left){} + }.should raise_error(ArgumentError) + end - it "yields the rights elements when passed :diagonal" do - @m.each(:diagonal).to_a.should == [1, 6] - @t.each(:diagonal).to_a.should == [1, 4] - end + it "yields the rights elements when passed :diagonal" do + @m.each(:diagonal).to_a.should == [1, 6] + @t.each(:diagonal).to_a.should == [1, 4] + end - it "yields the rights elements when passed :off_diagonal" do - @m.each(:off_diagonal).to_a.should == [2, 3, 4, 5, 7, 8] - @t.each(:off_diagonal).to_a.should == [2, 3, 5, 6, 7, 8] - end + it "yields the rights elements when passed :off_diagonal" do + @m.each(:off_diagonal).to_a.should == [2, 3, 4, 5, 7, 8] + @t.each(:off_diagonal).to_a.should == [2, 3, 5, 6, 7, 8] + end - it "yields the rights elements when passed :lower" do - @m.each(:lower).to_a.should == [1, 5, 6] - @t.each(:lower).to_a.should == [1, 3, 4, 5, 6, 7, 8] - end + it "yields the rights elements when passed :lower" do + @m.each(:lower).to_a.should == [1, 5, 6] + @t.each(:lower).to_a.should == [1, 3, 4, 5, 6, 7, 8] + end - it "yields the rights elements when passed :strict_lower" do - @m.each(:strict_lower).to_a.should == [5] - @t.each(:strict_lower).to_a.should == [3, 5, 6, 7, 8] - end + it "yields the rights elements when passed :strict_lower" do + @m.each(:strict_lower).to_a.should == [5] + @t.each(:strict_lower).to_a.should == [3, 5, 6, 7, 8] + end - it "yields the rights elements when passed :strict_upper" do - @m.each(:strict_upper).to_a.should == [2, 3, 4, 7, 8] - @t.each(:strict_upper).to_a.should == [2] - end + it "yields the rights elements when passed :strict_upper" do + @m.each(:strict_upper).to_a.should == [2, 3, 4, 7, 8] + @t.each(:strict_upper).to_a.should == [2] + end - it "yields the rights elements when passed :upper" do - @m.each(:upper).to_a.should == [1, 2, 3, 4, 6, 7, 8] - @t.each(:upper).to_a.should == [1, 2, 4] - end + it "yields the rights elements when passed :upper" do + @m.each(:upper).to_a.should == [1, 2, 3, 4, 6, 7, 8] + @t.each(:upper).to_a.should == [1, 2, 4] end end diff --git a/spec/ruby/library/matrix/each_with_index_spec.rb b/spec/ruby/library/matrix/each_with_index_spec.rb index 59549f77b720f5..a005b886216761 100644 --- a/spec/ruby/library/matrix/each_with_index_spec.rb +++ b/spec/ruby/library/matrix/each_with_index_spec.rb @@ -1,84 +1,81 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#each_with_index" do - before :all do - @m = Matrix[ [1, 2, 3], [4, 5, 6] ] - @result = [ - [1, 0, 0], - [2, 0, 1], - [3, 0, 2], - [4, 1, 0], - [5, 1, 1], - [6, 1, 2] - ] - end +describe "Matrix#each_with_index" do + before :all do + @m = Matrix[ [1, 2, 3], [4, 5, 6] ] + @result = [ + [1, 0, 0], + [2, 0, 1], + [3, 0, 2], + [4, 1, 0], + [5, 1, 1], + [6, 1, 2] + ] + end - it "returns an Enumerator when called without a block" do - enum = @m.each_with_index - enum.should be_an_instance_of(Enumerator) - enum.to_a.should == @result - end + it "returns an Enumerator when called without a block" do + enum = @m.each_with_index + enum.should be_an_instance_of(Enumerator) + enum.to_a.should == @result + end - it "returns self" do - @m.each_with_index{}.should equal(@m) - end + it "returns self" do + @m.each_with_index{}.should equal(@m) + end - it "yields the elements starting with the those of the first row" do - a = [] - @m.each_with_index {|x, r, c| a << [x, r, c]} - a.should == @result - end + it "yields the elements starting with the those of the first row" do + a = [] + @m.each_with_index {|x, r, c| a << [x, r, c]} + a.should == @result end +end - describe "Matrix#each_with_index with an argument" do - before :all do - @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] - @t = Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ] - end +describe "Matrix#each_with_index with an argument" do + before :all do + @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] + @t = Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ] + end - it "raises an ArgumentError for unrecognized argument" do - -> { - @m.each_with_index("all"){} - }.should raise_error(ArgumentError) - -> { - @m.each_with_index(nil){} - }.should raise_error(ArgumentError) - -> { - @m.each_with_index(:left){} - }.should raise_error(ArgumentError) - end + it "raises an ArgumentError for unrecognized argument" do + -> { + @m.each_with_index("all"){} + }.should raise_error(ArgumentError) + -> { + @m.each_with_index(nil){} + }.should raise_error(ArgumentError) + -> { + @m.each_with_index(:left){} + }.should raise_error(ArgumentError) + end - it "yields the rights elements when passed :diagonal" do - @m.each_with_index(:diagonal).to_a.should == [[1, 0, 0], [6, 1, 1]] - @t.each_with_index(:diagonal).to_a.should == [[1, 0, 0], [4, 1, 1]] - end + it "yields the rights elements when passed :diagonal" do + @m.each_with_index(:diagonal).to_a.should == [[1, 0, 0], [6, 1, 1]] + @t.each_with_index(:diagonal).to_a.should == [[1, 0, 0], [4, 1, 1]] + end - it "yields the rights elements when passed :off_diagonal" do - @m.each_with_index(:off_diagonal).to_a.should == [[2, 0, 1], [3, 0, 2], [4, 0, 3], [5, 1, 0], [7, 1, 2], [8, 1, 3]] - @t.each_with_index(:off_diagonal).to_a.should == [[2, 0, 1], [3, 1, 0], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] - end + it "yields the rights elements when passed :off_diagonal" do + @m.each_with_index(:off_diagonal).to_a.should == [[2, 0, 1], [3, 0, 2], [4, 0, 3], [5, 1, 0], [7, 1, 2], [8, 1, 3]] + @t.each_with_index(:off_diagonal).to_a.should == [[2, 0, 1], [3, 1, 0], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] + end - it "yields the rights elements when passed :lower" do - @m.each_with_index(:lower).to_a.should == [[1, 0, 0], [5, 1, 0], [6, 1, 1]] - @t.each_with_index(:lower).to_a.should == [[1, 0, 0], [3, 1, 0], [4, 1, 1], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] - end + it "yields the rights elements when passed :lower" do + @m.each_with_index(:lower).to_a.should == [[1, 0, 0], [5, 1, 0], [6, 1, 1]] + @t.each_with_index(:lower).to_a.should == [[1, 0, 0], [3, 1, 0], [4, 1, 1], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] + end - it "yields the rights elements when passed :strict_lower" do - @m.each_with_index(:strict_lower).to_a.should == [[5, 1, 0]] - @t.each_with_index(:strict_lower).to_a.should == [[3, 1, 0], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] - end + it "yields the rights elements when passed :strict_lower" do + @m.each_with_index(:strict_lower).to_a.should == [[5, 1, 0]] + @t.each_with_index(:strict_lower).to_a.should == [[3, 1, 0], [5, 2, 0], [6, 2, 1], [7, 3, 0], [8, 3, 1]] + end - it "yields the rights elements when passed :strict_upper" do - @m.each_with_index(:strict_upper).to_a.should == [[2, 0, 1], [3, 0, 2], [4, 0, 3], [7, 1, 2], [8, 1, 3]] - @t.each_with_index(:strict_upper).to_a.should == [[2, 0, 1]] - end + it "yields the rights elements when passed :strict_upper" do + @m.each_with_index(:strict_upper).to_a.should == [[2, 0, 1], [3, 0, 2], [4, 0, 3], [7, 1, 2], [8, 1, 3]] + @t.each_with_index(:strict_upper).to_a.should == [[2, 0, 1]] + end - it "yields the rights elements when passed :upper" do - @m.each_with_index(:upper).to_a.should == [[1, 0, 0], [2, 0, 1], [3, 0, 2], [4, 0, 3], [6, 1, 1], [7, 1, 2], [8, 1, 3]] - @t.each_with_index(:upper).to_a.should == [[1, 0, 0], [2, 0, 1], [4, 1, 1]] - end + it "yields the rights elements when passed :upper" do + @m.each_with_index(:upper).to_a.should == [[1, 0, 0], [2, 0, 1], [3, 0, 2], [4, 0, 3], [6, 1, 1], [7, 1, 2], [8, 1, 3]] + @t.each_with_index(:upper).to_a.should == [[1, 0, 0], [2, 0, 1], [4, 1, 1]] end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb index f9ffca0123222c..67f9dd1c19abda 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb @@ -1,12 +1,9 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#eigenvalue_matrix" do - it "returns a diagonal matrix with the eigenvalues on the diagonal" do - Matrix[[14, 16], [-6, -6]].eigensystem.eigenvalue_matrix.should == Matrix[[6, 0],[0, 2]] - Matrix[[1, 1], [-1, 1]].eigensystem.eigenvalue_matrix.should == Matrix[[Complex(1,1), 0],[0, Complex(1,-1)]] - end +describe "Matrix::EigenvalueDecomposition#eigenvalue_matrix" do + it "returns a diagonal matrix with the eigenvalues on the diagonal" do + Matrix[[14, 16], [-6, -6]].eigensystem.eigenvalue_matrix.should == Matrix[[6, 0],[0, 2]] + Matrix[[1, 1], [-1, 1]].eigensystem.eigenvalue_matrix.should == Matrix[[Complex(1,1), 0],[0, Complex(1,-1)]] end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb index 650d43d90f2a69..7552b7616c5981 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb @@ -1,25 +1,22 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#eigenvalues" do - it "returns an array of complex eigenvalues for a rotation matrix" do - Matrix[[ 1, 1], - [-1, 1]].eigensystem.eigenvalues.sort_by{|v| v.imag}.should == - [ Complex(1, -1), Complex(1, 1)] - end +describe "Matrix::EigenvalueDecomposition#eigenvalues" do + it "returns an array of complex eigenvalues for a rotation matrix" do + Matrix[[ 1, 1], + [-1, 1]].eigensystem.eigenvalues.sort_by{|v| v.imag}.should == + [ Complex(1, -1), Complex(1, 1)] + end - it "returns an array of real eigenvalues for a symmetric matrix" do - Matrix[[1, 2], - [2, 1]].eigensystem.eigenvalues.sort.map!{|x| x.round(10)}.should == - [ -1, 3 ] - end + it "returns an array of real eigenvalues for a symmetric matrix" do + Matrix[[1, 2], + [2, 1]].eigensystem.eigenvalues.sort.map!{|x| x.round(10)}.should == + [ -1, 3 ] + end - it "returns an array of real eigenvalues for a matrix" do - Matrix[[14, 16], - [-6, -6]].eigensystem.eigenvalues.sort.map!{|x| x.round(10)}.should == - [ 2, 6 ] - end + it "returns an array of real eigenvalues for a matrix" do + Matrix[[14, 16], + [-6, -6]].eigensystem.eigenvalues.sort.map!{|x| x.round(10)}.should == + [ 2, 6 ] end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb index 57299ce69eab53..09f229ee15c690 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb @@ -1,23 +1,20 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#eigenvector_matrix" do - it "returns a complex eigenvector matrix given a rotation matrix" do - # Fix me: should test for linearity, not for equality - Matrix[[ 1, 1], - [-1, 1]].eigensystem.eigenvector_matrix.should == - Matrix[[1, 1], - [Complex(0, 1), Complex(0, -1)]] - end +describe "Matrix::EigenvalueDecomposition#eigenvector_matrix" do + it "returns a complex eigenvector matrix given a rotation matrix" do + # Fix me: should test for linearity, not for equality + Matrix[[ 1, 1], + [-1, 1]].eigensystem.eigenvector_matrix.should == + Matrix[[1, 1], + [Complex(0, 1), Complex(0, -1)]] + end - it "returns an real eigenvector matrix for a symmetric matrix" do - # Fix me: should test for linearity, not for equality - Matrix[[1, 2], - [2, 1]].eigensystem.eigenvector_matrix.should == - Matrix[[0.7071067811865475, 0.7071067811865475], - [-0.7071067811865475, 0.7071067811865475]] - end + it "returns an real eigenvector matrix for a symmetric matrix" do + # Fix me: should test for linearity, not for equality + Matrix[[1, 2], + [2, 1]].eigensystem.eigenvector_matrix.should == + Matrix[[0.7071067811865475, 0.7071067811865475], + [-0.7071067811865475, 0.7071067811865475]] end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb index 54e6857bf3221d..2b6ce74ea83c8e 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb @@ -1,25 +1,22 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#eigenvectors" do - it "returns an array of complex eigenvectors for a rotation matrix" do - # Fix me: should test for linearity, not for equality - Matrix[[ 1, 1], - [-1, 1]].eigensystem.eigenvectors.should == - [ Vector[1, Complex(0, 1)], - Vector[1, Complex(0, -1)] - ] - end +describe "Matrix::EigenvalueDecomposition#eigenvectors" do + it "returns an array of complex eigenvectors for a rotation matrix" do + # Fix me: should test for linearity, not for equality + Matrix[[ 1, 1], + [-1, 1]].eigensystem.eigenvectors.should == + [ Vector[1, Complex(0, 1)], + Vector[1, Complex(0, -1)] + ] + end - it "returns an array of real eigenvectors for a symmetric matrix" do - # Fix me: should test for linearity, not for equality - Matrix[[1, 2], - [2, 1]].eigensystem.eigenvectors.should == - [ Vector[0.7071067811865475, -0.7071067811865475], - Vector[0.7071067811865475, 0.7071067811865475] - ] - end + it "returns an array of real eigenvectors for a symmetric matrix" do + # Fix me: should test for linearity, not for equality + Matrix[[1, 2], + [2, 1]].eigensystem.eigenvectors.should == + [ Vector[0.7071067811865475, -0.7071067811865475], + Vector[0.7071067811865475, 0.7071067811865475] + ] end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb index 02aad65c4b04ee..8438f63133e318 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb @@ -1,27 +1,24 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#initialize" do - it "raises an error if argument is not a matrix" do - -> { - Matrix::EigenvalueDecomposition.new([[]]) - }.should raise_error(TypeError) - -> { - Matrix::EigenvalueDecomposition.new(42) - }.should raise_error(TypeError) - end +describe "Matrix::EigenvalueDecomposition#initialize" do + it "raises an error if argument is not a matrix" do + -> { + Matrix::EigenvalueDecomposition.new([[]]) + }.should raise_error(TypeError) + -> { + Matrix::EigenvalueDecomposition.new(42) + }.should raise_error(TypeError) + end - it "raises an error if matrix is not square" do - -> { - Matrix::EigenvalueDecomposition.new(Matrix[[1, 2]]) - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error if matrix is not square" do + -> { + Matrix::EigenvalueDecomposition.new(Matrix[[1, 2]]) + }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "never hangs" do - m = Matrix[ [0,0,0,0,0], [0,0,0,0,1], [0,0,0,1,0], [1,1,0,0,1], [1,0,1,0,1] ] - Matrix::EigenvalueDecomposition.new(m).should_not == "infinite loop" - end + it "never hangs" do + m = Matrix[ [0,0,0,0,0], [0,0,0,0,1], [0,0,0,1,0], [1,1,0,0,1], [1,0,1,0,1] ] + Matrix::EigenvalueDecomposition.new(m).should_not == "infinite loop" end end diff --git a/spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb b/spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb index 352ae274b48082..8be41a57206e83 100644 --- a/spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb +++ b/spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb @@ -1,21 +1,18 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::EigenvalueDecomposition#to_a" do - before :each do - @a = Matrix[[14, 16], [-6, -6]] - @e = Matrix::EigenvalueDecomposition.new(@a) - end +describe "Matrix::EigenvalueDecomposition#to_a" do + before :each do + @a = Matrix[[14, 16], [-6, -6]] + @e = Matrix::EigenvalueDecomposition.new(@a) + end - it "returns an array of with [V, D, V.inv]" do - @e.to_a.should == [@e.v, @e.d, @e.v_inv] - end + it "returns an array of with [V, D, V.inv]" do + @e.to_a.should == [@e.v, @e.d, @e.v_inv] + end - it "returns a factorization" do - v, d, v_inv = @e.to_a - (v * d * v_inv).map{|e| e.round(10)}.should == @a - end + it "returns a factorization" do + v, d, v_inv = @e.to_a + (v * d * v_inv).map{|e| e.round(10)}.should == @a end end diff --git a/spec/ruby/library/matrix/element_reference_spec.rb b/spec/ruby/library/matrix/element_reference_spec.rb index 286ab851bd0629..b950d1c391f7b0 100644 --- a/spec/ruby/library/matrix/element_reference_spec.rb +++ b/spec/ruby/library/matrix/element_reference_spec.rb @@ -1,26 +1,23 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#[]" do - describe "Matrix#[]" do - - before :all do - @m = Matrix[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]] - end + before :all do + @m = Matrix[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]] + end - it "returns element at (i, j)" do - (0..3).each do |i| - (0..2).each do |j| - @m[i, j].should == (i * 3) + j - end + it "returns element at (i, j)" do + (0..3).each do |i| + (0..2).each do |j| + @m[i, j].should == (i * 3) + j end end + end - it "returns nil for an invalid index pair" do - @m[8,1].should be_nil - @m[1,8].should be_nil - end - + it "returns nil for an invalid index pair" do + @m[8,1].should be_nil + @m[1,8].should be_nil end + end diff --git a/spec/ruby/library/matrix/empty_spec.rb b/spec/ruby/library/matrix/empty_spec.rb index 0b5d5ffe0f075e..5f294711db1847 100644 --- a/spec/ruby/library/matrix/empty_spec.rb +++ b/spec/ruby/library/matrix/empty_spec.rb @@ -1,71 +1,68 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#empty?" do - it "returns true when the Matrix is empty" do - Matrix[ ].empty?.should be_true - Matrix[ [], [], [] ].empty?.should be_true - Matrix[ [], [], [] ].transpose.empty?.should be_true - end - - it "returns false when the Matrix has elements" do - Matrix[ [1, 2] ].empty?.should be_false - Matrix[ [1], [2] ].empty?.should be_false - end +describe "Matrix#empty?" do + it "returns true when the Matrix is empty" do + Matrix[ ].empty?.should be_true + Matrix[ [], [], [] ].empty?.should be_true + Matrix[ [], [], [] ].transpose.empty?.should be_true + end - it "doesn't accept any parameter" do - ->{ - Matrix[ [1, 2] ].empty?(42) - }.should raise_error(ArgumentError) - end + it "returns false when the Matrix has elements" do + Matrix[ [1, 2] ].empty?.should be_false + Matrix[ [1], [2] ].empty?.should be_false end - describe "Matrix.empty" do - it "returns an empty matrix of the requested size" do - m = Matrix.empty(3, 0) - m.row_size.should == 3 - m.column_size.should == 0 + it "doesn't accept any parameter" do + ->{ + Matrix[ [1, 2] ].empty?(42) + }.should raise_error(ArgumentError) + end +end - m = Matrix.empty(0, 3) - m.row_size.should == 0 - m.column_size.should == 3 - end +describe "Matrix.empty" do + it "returns an empty matrix of the requested size" do + m = Matrix.empty(3, 0) + m.row_size.should == 3 + m.column_size.should == 0 - it "has arguments defaulting to 0" do - Matrix.empty.should == Matrix.empty(0, 0) - Matrix.empty(42).should == Matrix.empty(42, 0) - end + m = Matrix.empty(0, 3) + m.row_size.should == 0 + m.column_size.should == 3 + end - it "does not accept more than two parameters" do - ->{ - Matrix.empty(1, 2, 3) - }.should raise_error(ArgumentError) - end + it "has arguments defaulting to 0" do + Matrix.empty.should == Matrix.empty(0, 0) + Matrix.empty(42).should == Matrix.empty(42, 0) + end - it "raises an error if both dimensions are > 0" do - ->{ - Matrix.empty(1, 2) - }.should raise_error(ArgumentError) - end + it "does not accept more than two parameters" do + ->{ + Matrix.empty(1, 2, 3) + }.should raise_error(ArgumentError) + end - it "raises an error if any dimension is < 0" do - ->{ - Matrix.empty(-2, 0) - }.should raise_error(ArgumentError) + it "raises an error if both dimensions are > 0" do + ->{ + Matrix.empty(1, 2) + }.should raise_error(ArgumentError) + end - ->{ - Matrix.empty(0, -2) - }.should raise_error(ArgumentError) - end + it "raises an error if any dimension is < 0" do + ->{ + Matrix.empty(-2, 0) + }.should raise_error(ArgumentError) + ->{ + Matrix.empty(0, -2) + }.should raise_error(ArgumentError) end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.empty(0, 1).should be_an_instance_of(MatrixSub) - end +end + +describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.empty(0, 1).should be_an_instance_of(MatrixSub) end end diff --git a/spec/ruby/library/matrix/eql_spec.rb b/spec/ruby/library/matrix/eql_spec.rb index d3f03dd6f3f6cb..ea26c3320d247c 100644 --- a/spec/ruby/library/matrix/eql_spec.rb +++ b/spec/ruby/library/matrix/eql_spec.rb @@ -1,14 +1,11 @@ require_relative '../../spec_helper' +require_relative 'shared/equal_value' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/equal_value' - require 'matrix' +describe "Matrix#eql?" do + it_behaves_like :equal, :eql? - describe "Matrix#eql?" do - it_behaves_like :equal, :eql? - - it "returns false if some elements are == but not eql?" do - Matrix[[1, 2],[3, 4]].eql?(Matrix[[1, 2],[3, 4.0]]).should be_false - end + it "returns false if some elements are == but not eql?" do + Matrix[[1, 2],[3, 4]].eql?(Matrix[[1, 2],[3, 4.0]]).should be_false end end diff --git a/spec/ruby/library/matrix/equal_value_spec.rb b/spec/ruby/library/matrix/equal_value_spec.rb index 0408a8ef3ea322..10cf1e6c291c8c 100644 --- a/spec/ruby/library/matrix/equal_value_spec.rb +++ b/spec/ruby/library/matrix/equal_value_spec.rb @@ -1,14 +1,11 @@ require_relative '../../spec_helper' +require_relative 'shared/equal_value' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/equal_value' - require 'matrix' +describe "Matrix#==" do + it_behaves_like :equal, :== - describe "Matrix#==" do - it_behaves_like :equal, :== - - it "returns true if some elements are == but not eql?" do - Matrix[[1, 2],[3, 4]].should == Matrix[[1, 2],[3, 4.0]] - end + it "returns true if some elements are == but not eql?" do + Matrix[[1, 2],[3, 4]].should == Matrix[[1, 2],[3, 4.0]] end end diff --git a/spec/ruby/library/matrix/exponent_spec.rb b/spec/ruby/library/matrix/exponent_spec.rb index 5262627fd54760..b76e18b4cdd1fe 100644 --- a/spec/ruby/library/matrix/exponent_spec.rb +++ b/spec/ruby/library/matrix/exponent_spec.rb @@ -1,67 +1,64 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix#**" do - describe "Matrix#**" do + describe "given an integer _n_" do + it "multiples the Matrix by itself _n_ times" do + m = Matrix[ [7,6], [3,9] ] + (m ** 1).should == m + (m ** 2).should == Matrix[ [67, 96], [48,99] ] + (m ** 2).should == m * m + (m ** 3).should == m * m * m + (m ** 4).should == m * m * m * m + (m ** 5).should == m * m * m * m * m + end - describe "given an integer _n_" do - it "multiples the Matrix by itself _n_ times" do - m = Matrix[ [7,6], [3,9] ] - (m ** 1).should == m - (m ** 2).should == Matrix[ [67, 96], [48,99] ] - (m ** 2).should == m * m - (m ** 3).should == m * m * m - (m ** 4).should == m * m * m * m - (m ** 5).should == m * m * m * m * m - end + it "raises a ErrDimensionMismatch for non square matrices" do + m = Matrix[ [1, 1], [1, 2], [2, 3]] + -> { m ** 3 }.should raise_error(Matrix::ErrDimensionMismatch) + -> { m ** 0 }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "raises a ErrDimensionMismatch for non square matrices" do - m = Matrix[ [1, 1], [1, 2], [2, 3]] - -> { m ** 3 }.should raise_error(Matrix::ErrDimensionMismatch) - -> { m ** 0 }.should raise_error(Matrix::ErrDimensionMismatch) + describe "that is < 0" do + it "returns the inverse of **(-n)" do + m = Matrix[ [1, 1], [1, 2] ] + (m ** -2).should == Matrix[ [5, -3], [-3, 2]] + (m ** -4).should == (m.inverse ** 4) end - describe "that is < 0" do - it "returns the inverse of **(-n)" do - m = Matrix[ [1, 1], [1, 2] ] - (m ** -2).should == Matrix[ [5, -3], [-3, 2]] - (m ** -4).should == (m.inverse ** 4) - end + it "raises a ErrNotRegular for irregular matrices" do + m = Matrix[ [1, 1], [1, 1] ] + -> { m ** -2 }.should raise_error(Matrix::ErrNotRegular) + end + end - it "raises a ErrNotRegular for irregular matrices" do + ruby_version_is '3.1.0' do # https://bugs.ruby-lang.org/issues/17521 + describe "that is 0" do + it "returns the identity for square matrices" do m = Matrix[ [1, 1], [1, 1] ] - -> { m ** -2 }.should raise_error(Matrix::ErrNotRegular) + (m ** 0).should == Matrix.identity(2) end - end - - ruby_version_is '3.1.0' do # https://bugs.ruby-lang.org/issues/17521 - describe "that is 0" do - it "returns the identity for square matrices" do - m = Matrix[ [1, 1], [1, 1] ] - (m ** 0).should == Matrix.identity(2) - end - it "raises an ErrDimensionMismatch for non-square matrices" do - m = Matrix[ [1, 1] ] - -> { m ** 0 }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an ErrDimensionMismatch for non-square matrices" do + m = Matrix[ [1, 1] ] + -> { m ** 0 }.should raise_error(Matrix::ErrDimensionMismatch) end end end + end - it "returns the power for non integer powers" do - a = Matrix[[5, 4], [4, 5]] - ((a ** 0.5) ** 2).round(8).should == a - a = Matrix[[7, 10], [15, 22]] - ((a ** 0.25) ** 4).round(8).should == a - end + it "returns the power for non integer powers" do + a = Matrix[[5, 4], [4, 5]] + ((a ** 0.5) ** 2).round(8).should == a + a = Matrix[[7, 10], [15, 22]] + ((a ** 0.25) ** 4).round(8).should == a + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - (MatrixSub.ins ** 1).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + (MatrixSub.ins ** 1).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/find_index_spec.rb b/spec/ruby/library/matrix/find_index_spec.rb index a0e3679aef4090..c2bfa6d61ab529 100644 --- a/spec/ruby/library/matrix/find_index_spec.rb +++ b/spec/ruby/library/matrix/find_index_spec.rb @@ -1,149 +1,146 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#find_index without any argument" do - before :all do - @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] - end +describe "Matrix#find_index without any argument" do + before :all do + @m = Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ] + end - it "returns an Enumerator when called without a block" do - enum = @m.find_index - enum.should be_an_instance_of(Enumerator) - enum.to_a.should == [1, 2, 3, 4, 5, 6, 7, 8] - end + it "returns an Enumerator when called without a block" do + enum = @m.find_index + enum.should be_an_instance_of(Enumerator) + enum.to_a.should == [1, 2, 3, 4, 5, 6, 7, 8] + end - it "returns nil if the block is always false" do - @m.find_index{false}.should be_nil - end + it "returns nil if the block is always false" do + @m.find_index{false}.should be_nil + end - it "returns the first index for which the block is true" do - @m.find_index{|x| x >= 3}.should == [0, 2] - end + it "returns the first index for which the block is true" do + @m.find_index{|x| x >= 3}.should == [0, 2] end +end - describe "Matrix#find_index with a subselection argument" do - before :all do - @tests = [ - [ Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ], { - diagonal: [1, 6] , - off_diagonal: [2, 3, 4, 5, 7, 8], - lower: [1, 5, 6] , - strict_lower: [5] , - strict_upper: [2, 3, 4, 7, 8] , - upper: [1, 2, 3, 4, 6, 7, 8] , - } - ], - [ Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ], { - diagonal: [1, 4] , - off_diagonal: [2, 3, 5, 6, 7, 8], - lower: [1, 3, 4, 5, 6, 7, 8] , - strict_lower: [3, 5, 6, 7, 8] , - strict_upper: [2] , - upper: [1, 2, 4] , - } - ]] - end +describe "Matrix#find_index with a subselection argument" do + before :all do + @tests = [ + [ Matrix[ [1, 2, 3, 4], [5, 6, 7, 8] ], { + diagonal: [1, 6] , + off_diagonal: [2, 3, 4, 5, 7, 8], + lower: [1, 5, 6] , + strict_lower: [5] , + strict_upper: [2, 3, 4, 7, 8] , + upper: [1, 2, 3, 4, 6, 7, 8] , + } + ], + [ Matrix[ [1, 2], [3, 4], [5, 6], [7, 8] ], { + diagonal: [1, 4] , + off_diagonal: [2, 3, 5, 6, 7, 8], + lower: [1, 3, 4, 5, 6, 7, 8] , + strict_lower: [3, 5, 6, 7, 8] , + strict_upper: [2] , + upper: [1, 2, 4] , + } + ]] + end - describe "and no generic argument" do - it "returns an Enumerator when called without a block" do - @tests.each do |matrix, h| - h.each do |selector, result| - matrix.find_index(selector).should be_an_instance_of(Enumerator) - end + describe "and no generic argument" do + it "returns an Enumerator when called without a block" do + @tests.each do |matrix, h| + h.each do |selector, result| + matrix.find_index(selector).should be_an_instance_of(Enumerator) end end + end - it "yields the rights elements" do - @tests.each do |matrix, h| - h.each do |selector, result| - matrix.find_index(selector).to_a.should == result - end + it "yields the rights elements" do + @tests.each do |matrix, h| + h.each do |selector, result| + matrix.find_index(selector).to_a.should == result end end + end - it "returns the first index for which the block returns true" do - @tests.each do |matrix, h| - h.each do |selector, result| - cnt = result.size.div 2 - which = result[cnt] - idx = matrix.find_index(selector){|x| cnt -= 1; x == which} - matrix[*idx].should == which - cnt.should == -1 - end + it "returns the first index for which the block returns true" do + @tests.each do |matrix, h| + h.each do |selector, result| + cnt = result.size.div 2 + which = result[cnt] + idx = matrix.find_index(selector){|x| cnt -= 1; x == which} + matrix[*idx].should == which + cnt.should == -1 end end + end - it "returns nil if the block is always false" do - @tests.each do |matrix, h| - h.each do |selector, result| - matrix.find_index(selector){ nil }.should == nil - end + it "returns nil if the block is always false" do + @tests.each do |matrix, h| + h.each do |selector, result| + matrix.find_index(selector){ nil }.should == nil end end - end - describe "and a generic argument" do - it "ignores a block" do - @m.find_index(42, :diagonal){raise "oups"}.should == nil - end + end + + describe "and a generic argument" do + it "ignores a block" do + @m.find_index(42, :diagonal){raise "oups"}.should == nil + end - it "returns the index of the requested value" do - @tests.each do |matrix, h| - h.each do |selector, result| - cnt = result.size / 2 - which = result[cnt] - idx = matrix.find_index(which, selector) - matrix[*idx].should == which - end + it "returns the index of the requested value" do + @tests.each do |matrix, h| + h.each do |selector, result| + cnt = result.size / 2 + which = result[cnt] + idx = matrix.find_index(which, selector) + matrix[*idx].should == which end end + end - it "returns nil if the requested value is not found" do - @tests.each do |matrix, h| - h.each do |selector, result| - matrix.find_index(42, selector).should == nil - end + it "returns nil if the requested value is not found" do + @tests.each do |matrix, h| + h.each do |selector, result| + matrix.find_index(42, selector).should == nil end end end - end - describe "Matrix#find_index with only a generic argument" do - before :all do - @m = Matrix[ [1, 2, 3, 4], [1, 2, 3, 4] ] - end +end - it "returns nil if the value is not found" do - @m.find_index(42).should be_nil - end +describe "Matrix#find_index with only a generic argument" do + before :all do + @m = Matrix[ [1, 2, 3, 4], [1, 2, 3, 4] ] + end - it "returns the first index for of the requested value" do - @m.find_index(3).should == [0, 2] - end + it "returns nil if the value is not found" do + @m.find_index(42).should be_nil + end - it "ignores a block" do - @m.find_index(4){raise "oups"}.should == [0, 3] - end + it "returns the first index for of the requested value" do + @m.find_index(3).should == [0, 2] end - describe "Matrix#find_index with two arguments" do - it "raises an ArgumentError for an unrecognized last argument" do - -> { - @m.find_index(1, "all"){} - }.should raise_error(ArgumentError) - -> { - @m.find_index(1, nil){} - }.should raise_error(ArgumentError) - -> { - @m.find_index(1, :left){} - }.should raise_error(ArgumentError) - -> { - @m.find_index(:diagonal, 1){} - }.should raise_error(ArgumentError) - end + it "ignores a block" do + @m.find_index(4){raise "oups"}.should == [0, 3] + end +end + +describe "Matrix#find_index with two arguments" do + it "raises an ArgumentError for an unrecognized last argument" do + -> { + @m.find_index(1, "all"){} + }.should raise_error(ArgumentError) + -> { + @m.find_index(1, nil){} + }.should raise_error(ArgumentError) + -> { + @m.find_index(1, :left){} + }.should raise_error(ArgumentError) + -> { + @m.find_index(:diagonal, 1){} + }.should raise_error(ArgumentError) end end diff --git a/spec/ruby/library/matrix/hash_spec.rb b/spec/ruby/library/matrix/hash_spec.rb index 7c1970511bdb83..7dabcd3737cf3f 100644 --- a/spec/ruby/library/matrix/hash_spec.rb +++ b/spec/ruby/library/matrix/hash_spec.rb @@ -1,18 +1,15 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#hash" do - describe "Matrix#hash" do - - it "returns an Integer" do - Matrix[ [1,2] ].hash.should be_an_instance_of(Integer) - end - - it "returns the same value for the same matrix" do - data = [ [40,5], [2,7] ] - Matrix[ *data ].hash.should == Matrix[ *data ].hash - end + it "returns an Integer" do + Matrix[ [1,2] ].hash.should be_an_instance_of(Integer) + end + it "returns the same value for the same matrix" do + data = [ [40,5], [2,7] ] + Matrix[ *data ].hash.should == Matrix[ *data ].hash end + end diff --git a/spec/ruby/library/matrix/hermitian_spec.rb b/spec/ruby/library/matrix/hermitian_spec.rb index 4038ee3fa9fbfd..177ca64d839c0b 100644 --- a/spec/ruby/library/matrix/hermitian_spec.rb +++ b/spec/ruby/library/matrix/hermitian_spec.rb @@ -1,37 +1,34 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.hermitian?" do - it "returns true for a hermitian Matrix" do - Matrix[[1, 2, Complex(0, 3)], [2, 4, 5], [Complex(0, -3), 5, 6]].hermitian?.should be_true - end +describe "Matrix.hermitian?" do + it "returns true for a hermitian Matrix" do + Matrix[[1, 2, Complex(0, 3)], [2, 4, 5], [Complex(0, -3), 5, 6]].hermitian?.should be_true + end - it "returns true for a 0x0 empty matrix" do - Matrix.empty.hermitian?.should be_true - end + it "returns true for a 0x0 empty matrix" do + Matrix.empty.hermitian?.should be_true + end - it "returns false for an asymmetric Matrix" do - Matrix[[1, 2],[-2, 1]].hermitian?.should be_false - end + it "returns false for an asymmetric Matrix" do + Matrix[[1, 2],[-2, 1]].hermitian?.should be_false + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.hermitian? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.hermitian? + }.should raise_error(Matrix::ErrDimensionMismatch) end + end - it "returns false for a matrix with complex values on the diagonal" do - Matrix[[Complex(1,1)]].hermitian?.should be_false - Matrix[[Complex(1,0)]].hermitian?.should be_true - end + it "returns false for a matrix with complex values on the diagonal" do + Matrix[[Complex(1,1)]].hermitian?.should be_false + Matrix[[Complex(1,0)]].hermitian?.should be_true end end diff --git a/spec/ruby/library/matrix/identity_spec.rb b/spec/ruby/library/matrix/identity_spec.rb index 14f51c402e5d24..646462bc477c8d 100644 --- a/spec/ruby/library/matrix/identity_spec.rb +++ b/spec/ruby/library/matrix/identity_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/identity' -ruby_version_is ""..."3.1" do - require_relative 'shared/identity' - - describe "Matrix.identity" do - it_behaves_like :matrix_identity, :identity - end +describe "Matrix.identity" do + it_behaves_like :matrix_identity, :identity end diff --git a/spec/ruby/library/matrix/imag_spec.rb b/spec/ruby/library/matrix/imag_spec.rb index a89186ec02962a..1c988753d87c06 100644 --- a/spec/ruby/library/matrix/imag_spec.rb +++ b/spec/ruby/library/matrix/imag_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/imaginary' -ruby_version_is ""..."3.1" do - require_relative 'shared/imaginary' - - describe "Matrix#imag" do - it_behaves_like :matrix_imaginary, :imag - end +describe "Matrix#imag" do + it_behaves_like :matrix_imaginary, :imag end diff --git a/spec/ruby/library/matrix/imaginary_spec.rb b/spec/ruby/library/matrix/imaginary_spec.rb index e7f0e49d319251..ceae4bbe8d0895 100644 --- a/spec/ruby/library/matrix/imaginary_spec.rb +++ b/spec/ruby/library/matrix/imaginary_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/imaginary' -ruby_version_is ""..."3.1" do - require_relative 'shared/imaginary' - - describe "Matrix#imaginary" do - it_behaves_like :matrix_imaginary, :imaginary - end +describe "Matrix#imaginary" do + it_behaves_like :matrix_imaginary, :imaginary end diff --git a/spec/ruby/library/matrix/inspect_spec.rb b/spec/ruby/library/matrix/inspect_spec.rb index d754c0fe7fc23b..508f478252a0cd 100644 --- a/spec/ruby/library/matrix/inspect_spec.rb +++ b/spec/ruby/library/matrix/inspect_spec.rb @@ -1,30 +1,27 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix#inspect" do - describe "Matrix#inspect" do - - it "returns a stringified representation of the Matrix" do - Matrix[ [1,2], [2,1] ].inspect.should == "Matrix[[1, 2], [2, 1]]" - end + it "returns a stringified representation of the Matrix" do + Matrix[ [1,2], [2,1] ].inspect.should == "Matrix[[1, 2], [2, 1]]" + end - it "returns 'Matrix.empty(...)' for empty matrices" do - Matrix[ [], [], [] ].inspect.should == "Matrix.empty(3, 0)" - Matrix.columns([ [], [], [] ]).inspect.should == "Matrix.empty(0, 3)" - end + it "returns 'Matrix.empty(...)' for empty matrices" do + Matrix[ [], [], [] ].inspect.should == "Matrix.empty(3, 0)" + Matrix.columns([ [], [], [] ]).inspect.should == "Matrix.empty(0, 3)" + end - it "calls inspect on its contents" do - obj = mock("some_value") - obj.should_receive(:inspect).and_return("some_value") - Matrix[ [1, 2], [3, obj] ].inspect.should == "Matrix[[1, 2], [3, some_value]]" - end + it "calls inspect on its contents" do + obj = mock("some_value") + obj.should_receive(:inspect).and_return("some_value") + Matrix[ [1, 2], [3, obj] ].inspect.should == "Matrix[[1, 2], [3, some_value]]" + end - describe "for a subclass of Matrix" do - it "returns a string using the subclass' name" do - MatrixSub.ins.inspect.should == "MatrixSub[[1, 0], [0, 1]]" - end + describe "for a subclass of Matrix" do + it "returns a string using the subclass' name" do + MatrixSub.ins.inspect.should == "MatrixSub[[1, 0], [0, 1]]" end end end diff --git a/spec/ruby/library/matrix/inv_spec.rb b/spec/ruby/library/matrix/inv_spec.rb index 0ad817a2538569..82879a6d82d07b 100644 --- a/spec/ruby/library/matrix/inv_spec.rb +++ b/spec/ruby/library/matrix/inv_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'shared/inverse' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'shared/inverse' - - describe "Matrix#inv" do - it_behaves_like :inverse, :inv - end +describe "Matrix#inv" do + it_behaves_like :inverse, :inv end diff --git a/spec/ruby/library/matrix/inverse_from_spec.rb b/spec/ruby/library/matrix/inverse_from_spec.rb index bca40542f63819..651d56a2440e1b 100644 --- a/spec/ruby/library/matrix/inverse_from_spec.rb +++ b/spec/ruby/library/matrix/inverse_from_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#inverse_from" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix#inverse_from" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/inverse_spec.rb b/spec/ruby/library/matrix/inverse_spec.rb index dd9099bec579cd..fa3fa7de8a7ee4 100644 --- a/spec/ruby/library/matrix/inverse_spec.rb +++ b/spec/ruby/library/matrix/inverse_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'shared/inverse' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'shared/inverse' - - describe "Matrix#inverse" do - it_behaves_like :inverse, :inverse - end +describe "Matrix#inverse" do + it_behaves_like :inverse, :inverse end diff --git a/spec/ruby/library/matrix/lower_triangular_spec.rb b/spec/ruby/library/matrix/lower_triangular_spec.rb index 0223b8b6199386..f3aa4501f4f1b8 100644 --- a/spec/ruby/library/matrix/lower_triangular_spec.rb +++ b/spec/ruby/library/matrix/lower_triangular_spec.rb @@ -1,27 +1,24 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.lower_triangular?" do - it "returns true for a square lower triangular Matrix" do - Matrix[[1, 0, 0], [1, 2, 0], [1, 2, 3]].lower_triangular?.should be_true - Matrix.diagonal([1, 2, 3]).lower_triangular?.should be_true - Matrix[[1, 0], [1, 2], [1, 2], [1, 2]].lower_triangular?.should be_true - Matrix[[1, 0, 0, 0], [1, 2, 0, 0]].lower_triangular?.should be_true - end +describe "Matrix.lower_triangular?" do + it "returns true for a square lower triangular Matrix" do + Matrix[[1, 0, 0], [1, 2, 0], [1, 2, 3]].lower_triangular?.should be_true + Matrix.diagonal([1, 2, 3]).lower_triangular?.should be_true + Matrix[[1, 0], [1, 2], [1, 2], [1, 2]].lower_triangular?.should be_true + Matrix[[1, 0, 0, 0], [1, 2, 0, 0]].lower_triangular?.should be_true + end - it "returns true for an empty Matrix" do - Matrix.empty(3, 0).lower_triangular?.should be_true - Matrix.empty(0, 3).lower_triangular?.should be_true - Matrix.empty(0, 0).lower_triangular?.should be_true - end + it "returns true for an empty Matrix" do + Matrix.empty(3, 0).lower_triangular?.should be_true + Matrix.empty(0, 3).lower_triangular?.should be_true + Matrix.empty(0, 0).lower_triangular?.should be_true + end - it "returns false for a non lower triangular square Matrix" do - Matrix[[0, 1], [0, 0]].lower_triangular?.should be_false - Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].lower_triangular?.should be_false - Matrix[[0, 1], [0, 0], [0, 0], [0, 0]].lower_triangular?.should be_false - Matrix[[0, 0, 0, 1], [0, 0, 0, 0]].lower_triangular?.should be_false - end + it "returns false for a non lower triangular square Matrix" do + Matrix[[0, 1], [0, 0]].lower_triangular?.should be_false + Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].lower_triangular?.should be_false + Matrix[[0, 1], [0, 0], [0, 0], [0, 0]].lower_triangular?.should be_false + Matrix[[0, 0, 0, 1], [0, 0, 0, 0]].lower_triangular?.should be_false end end diff --git a/spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb b/spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb index 1ac4bc971e26c9..9d733066c17977 100644 --- a/spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb @@ -1,24 +1,21 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#determinant" do - it "returns the determinant when the matrix is square" do - a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - a.lup.determinant.should == 15120 # == a.determinant - end +describe "Matrix::LUPDecomposition#determinant" do + it "returns the determinant when the matrix is square" do + a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + a.lup.determinant.should == 15120 # == a.determinant + end - it "raises an error for rectangular matrices" do - [ - Matrix[[7, 8, 9], [14, 46, 51]], - Matrix[[7, 8], [14, 46], [28, 82]], - ].each do |m| - lup = m.lup - -> { - lup.determinant - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[7, 8, 9], [14, 46, 51]], + Matrix[[7, 8], [14, 46], [28, 82]], + ].each do |m| + lup = m.lup + -> { + lup.determinant + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb b/spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb index 42f78c7540085a..36afb349e60f4f 100644 --- a/spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb @@ -1,16 +1,13 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#initialize" do - it "raises an error if argument is not a matrix" do - -> { - Matrix::LUPDecomposition.new([[]]) - }.should raise_error(TypeError) - -> { - Matrix::LUPDecomposition.new(42) - }.should raise_error(TypeError) - end +describe "Matrix::LUPDecomposition#initialize" do + it "raises an error if argument is not a matrix" do + -> { + Matrix::LUPDecomposition.new([[]]) + }.should raise_error(TypeError) + -> { + Matrix::LUPDecomposition.new(42) + }.should raise_error(TypeError) end end diff --git a/spec/ruby/library/matrix/lup_decomposition/l_spec.rb b/spec/ruby/library/matrix/lup_decomposition/l_spec.rb index 6c751f12b716af..9514ab5d063561 100644 --- a/spec/ruby/library/matrix/lup_decomposition/l_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/l_spec.rb @@ -1,21 +1,18 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#l" do - before :each do - @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - @lu = Matrix::LUPDecomposition.new(@a) - @l = @lu.l - end +describe "Matrix::LUPDecomposition#l" do + before :each do + @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + @lu = Matrix::LUPDecomposition.new(@a) + @l = @lu.l + end - it "returns the first element of to_a" do - @l.should == @lu.to_a[0] - end + it "returns the first element of to_a" do + @l.should == @lu.to_a[0] + end - it "returns a lower triangular matrix" do - @l.lower_triangular?.should be_true - end + it "returns a lower triangular matrix" do + @l.lower_triangular?.should be_true end end diff --git a/spec/ruby/library/matrix/lup_decomposition/p_spec.rb b/spec/ruby/library/matrix/lup_decomposition/p_spec.rb index 481f8a17d55551..c7b5e9196e9808 100644 --- a/spec/ruby/library/matrix/lup_decomposition/p_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/p_spec.rb @@ -1,21 +1,18 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#p" do - before :each do - @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - @lu = Matrix::LUPDecomposition.new(@a) - @p = @lu.p - end +describe "Matrix::LUPDecomposition#p" do + before :each do + @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + @lu = Matrix::LUPDecomposition.new(@a) + @p = @lu.p + end - it "returns the third element of to_a" do - @p.should == @lu.to_a[2] - end + it "returns the third element of to_a" do + @p.should == @lu.to_a[2] + end - it "returns a permutation matrix" do - @p.permutation?.should be_true - end + it "returns a permutation matrix" do + @p.permutation?.should be_true end end diff --git a/spec/ruby/library/matrix/lup_decomposition/solve_spec.rb b/spec/ruby/library/matrix/lup_decomposition/solve_spec.rb index 773fcb3e6525b9..66242627e9610c 100644 --- a/spec/ruby/library/matrix/lup_decomposition/solve_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/solve_spec.rb @@ -1,55 +1,52 @@ require_relative '../../../spec_helper' +require 'matrix' + +describe "Matrix::LUPDecomposition#solve" do + describe "for rectangular matrices" do + it "raises an error for singular matrices" do + a = Matrix[[1, 2, 3], [1, 3, 5], [2, 5, 8]] + lu = Matrix::LUPDecomposition.new(a) + -> { + lu.solve(a) + }.should raise_error(Matrix::ErrNotRegular) + end -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#solve" do - describe "for rectangular matrices" do - it "raises an error for singular matrices" do - a = Matrix[[1, 2, 3], [1, 3, 5], [2, 5, 8]] - lu = Matrix::LUPDecomposition.new(a) - -> { - lu.solve(a) - }.should raise_error(Matrix::ErrNotRegular) + describe "for non singular matrices" do + before :each do + @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + @lu = Matrix::LUPDecomposition.new(@a) end - describe "for non singular matrices" do - before :each do - @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - @lu = Matrix::LUPDecomposition.new(@a) - end - - it "returns the appropriate empty matrix when given an empty matrix" do - @lu.solve(Matrix.empty(3,0)).should == Matrix.empty(3,0) - empty = Matrix::LUPDecomposition.new(Matrix.empty(0, 0)) - empty.solve(Matrix.empty(0,3)).should == Matrix.empty(0,3) - end + it "returns the appropriate empty matrix when given an empty matrix" do + @lu.solve(Matrix.empty(3,0)).should == Matrix.empty(3,0) + empty = Matrix::LUPDecomposition.new(Matrix.empty(0, 0)) + empty.solve(Matrix.empty(0,3)).should == Matrix.empty(0,3) + end - it "returns the right matrix when given a matrix of the appropriate size" do - solution = Matrix[[1, 2, 3, 4], [0, 1, 2, 3], [-1, -2, -3, -4]] - values = Matrix[[-2, 4, 10, 16], [-37, -28, -19, -10], [-135, -188, -241, -294]] # == @a * solution - @lu.solve(values).should == solution - end + it "returns the right matrix when given a matrix of the appropriate size" do + solution = Matrix[[1, 2, 3, 4], [0, 1, 2, 3], [-1, -2, -3, -4]] + values = Matrix[[-2, 4, 10, 16], [-37, -28, -19, -10], [-135, -188, -241, -294]] # == @a * solution + @lu.solve(values).should == solution + end - it "raises an error when given a matrix of the wrong size" do - values = Matrix[[1, 2, 3, 4], [0, 1, 2, 3]] - -> { - @lu.solve(values) - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error when given a matrix of the wrong size" do + values = Matrix[[1, 2, 3, 4], [0, 1, 2, 3]] + -> { + @lu.solve(values) + }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "returns the right vector when given a vector of the appropriate size" do - solution = Vector[1, 2, -1] - values = Vector[14, 55, 29] # == @a * solution - @lu.solve(values).should == solution - end + it "returns the right vector when given a vector of the appropriate size" do + solution = Vector[1, 2, -1] + values = Vector[14, 55, 29] # == @a * solution + @lu.solve(values).should == solution + end - it "raises an error when given a vector of the wrong size" do - values = Vector[14, 55] - -> { - @lu.solve(values) - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error when given a vector of the wrong size" do + values = Vector[14, 55] + -> { + @lu.solve(values) + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb b/spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb index 8702292865905f..9b1dccbbacee9e 100644 --- a/spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb @@ -1,36 +1,33 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#to_a" do - before :each do - @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - @lu = Matrix::LUPDecomposition.new(@a) - @to_a = @lu.to_a - @l, @u, @p = @to_a - end +describe "Matrix::LUPDecomposition#to_a" do + before :each do + @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + @lu = Matrix::LUPDecomposition.new(@a) + @to_a = @lu.to_a + @l, @u, @p = @to_a + end - it "returns an array of three matrices" do - @to_a.should be_kind_of(Array) - @to_a.length.should == 3 - @to_a.each{|m| m.should be_kind_of(Matrix)} - end + it "returns an array of three matrices" do + @to_a.should be_kind_of(Array) + @to_a.length.should == 3 + @to_a.each{|m| m.should be_kind_of(Matrix)} + end - it "returns [l, u, p] such that l*u == a*p" do - (@l * @u).should == (@p * @a) - end + it "returns [l, u, p] such that l*u == a*p" do + (@l * @u).should == (@p * @a) + end - it "returns the right values for rectangular matrices" do - [ - Matrix[[7, 8, 9], [14, 46, 51]], - Matrix[[4, 11], [5, 8], [3, 4]], - ].each do |a| - l, u, p = Matrix::LUPDecomposition.new(a).to_a - (l * u).should == (p * a) - end + it "returns the right values for rectangular matrices" do + [ + Matrix[[7, 8, 9], [14, 46, 51]], + Matrix[[4, 11], [5, 8], [3, 4]], + ].each do |a| + l, u, p = Matrix::LUPDecomposition.new(a).to_a + (l * u).should == (p * a) end - - it "has other properties implied by the specs of #l, #u and #p" end + + it "has other properties implied by the specs of #l, #u and #p" end diff --git a/spec/ruby/library/matrix/lup_decomposition/u_spec.rb b/spec/ruby/library/matrix/lup_decomposition/u_spec.rb index cd884b88ec267b..ca3dfc1f00e5d8 100644 --- a/spec/ruby/library/matrix/lup_decomposition/u_spec.rb +++ b/spec/ruby/library/matrix/lup_decomposition/u_spec.rb @@ -1,21 +1,18 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::LUPDecomposition#u" do - before :each do - @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] - @lu = Matrix::LUPDecomposition.new(@a) - @u = @lu.u - end +describe "Matrix::LUPDecomposition#u" do + before :each do + @a = Matrix[[7, 8, 9], [14, 46, 51], [28, 82, 163]] + @lu = Matrix::LUPDecomposition.new(@a) + @u = @lu.u + end - it "returns the second element of to_a" do - @u.should == @lu.to_a[1] - end + it "returns the second element of to_a" do + @u.should == @lu.to_a[1] + end - it "returns an upper triangular matrix" do - @u.upper_triangular?.should be_true - end + it "returns an upper triangular matrix" do + @u.upper_triangular?.should be_true end end diff --git a/spec/ruby/library/matrix/map_spec.rb b/spec/ruby/library/matrix/map_spec.rb index cde0df54411eb7..bc07c48cda9a98 100644 --- a/spec/ruby/library/matrix/map_spec.rb +++ b/spec/ruby/library/matrix/map_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/collect' -ruby_version_is ""..."3.1" do - require_relative 'shared/collect' - - describe "Matrix#map" do - it_behaves_like :collect, :map - end +describe "Matrix#map" do + it_behaves_like :collect, :map end diff --git a/spec/ruby/library/matrix/minor_spec.rb b/spec/ruby/library/matrix/minor_spec.rb index 0a6b0823c89c5d..009826c3d660c1 100644 --- a/spec/ruby/library/matrix/minor_spec.rb +++ b/spec/ruby/library/matrix/minor_spec.rb @@ -1,88 +1,85 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix#minor" do + before :each do + @matrix = Matrix[ [1,2], [3,4], [5,6] ] + end - describe "Matrix#minor" do - before :each do - @matrix = Matrix[ [1,2], [3,4], [5,6] ] + describe "with start_row, nrows, start_col, ncols" do + it "returns the given portion of the Matrix" do + @matrix.minor(0,1,0,2).should == Matrix[ [1, 2] ] + @matrix.minor(1,2,1,1).should == Matrix[ [4], [6] ] end - describe "with start_row, nrows, start_col, ncols" do - it "returns the given portion of the Matrix" do - @matrix.minor(0,1,0,2).should == Matrix[ [1, 2] ] - @matrix.minor(1,2,1,1).should == Matrix[ [4], [6] ] - end - - it "returns an empty Matrix if nrows or ncols is 0" do - @matrix.minor(0,0,0,0).should == Matrix[] - @matrix.minor(1,0,1,0).should == Matrix[] - @matrix.minor(1,0,1,1).should == Matrix.columns([[]]) - @matrix.minor(1,1,1,0).should == Matrix[[]] - end + it "returns an empty Matrix if nrows or ncols is 0" do + @matrix.minor(0,0,0,0).should == Matrix[] + @matrix.minor(1,0,1,0).should == Matrix[] + @matrix.minor(1,0,1,1).should == Matrix.columns([[]]) + @matrix.minor(1,1,1,0).should == Matrix[[]] + end - it "returns nil for out-of-bounds start_row/col" do - r = @matrix.row_size + 1 - c = @matrix.column_size + 1 - @matrix.minor(r,0,0,10).should == nil - @matrix.minor(0,10,c,9).should == nil - @matrix.minor(-r,0,0,10).should == nil - @matrix.minor(0,10,-c,9).should == nil - end + it "returns nil for out-of-bounds start_row/col" do + r = @matrix.row_size + 1 + c = @matrix.column_size + 1 + @matrix.minor(r,0,0,10).should == nil + @matrix.minor(0,10,c,9).should == nil + @matrix.minor(-r,0,0,10).should == nil + @matrix.minor(0,10,-c,9).should == nil + end - it "returns nil for negative nrows or ncols" do - @matrix.minor(0,1,0,-1).should == nil - @matrix.minor(0,-1,0,1).should == nil - end + it "returns nil for negative nrows or ncols" do + @matrix.minor(0,1,0,-1).should == nil + @matrix.minor(0,-1,0,1).should == nil + end - it "start counting backwards for start_row or start_col below zero" do - @matrix.minor(0, 1, -1, 1).should == @matrix.minor(0, 1, 1, 1) - @matrix.minor(-1, 1, 0, 1).should == @matrix.minor(2, 1, 0, 1) - end + it "start counting backwards for start_row or start_col below zero" do + @matrix.minor(0, 1, -1, 1).should == @matrix.minor(0, 1, 1, 1) + @matrix.minor(-1, 1, 0, 1).should == @matrix.minor(2, 1, 0, 1) + end - it "returns empty matrices for extreme start_row/col" do - @matrix.minor(3,10,1,10).should == Matrix.columns([[]]) - @matrix.minor(1,10,2,10).should == Matrix[[], []] - @matrix.minor(3,0,0,10).should == Matrix.columns([[], []]) - end + it "returns empty matrices for extreme start_row/col" do + @matrix.minor(3,10,1,10).should == Matrix.columns([[]]) + @matrix.minor(1,10,2,10).should == Matrix[[], []] + @matrix.minor(3,0,0,10).should == Matrix.columns([[], []]) + end - it "ignores big nrows or ncols" do - @matrix.minor(0,1,0,20).should == Matrix[ [1, 2] ] - @matrix.minor(1,20,1,1).should == Matrix[ [4], [6] ] - end + it "ignores big nrows or ncols" do + @matrix.minor(0,1,0,20).should == Matrix[ [1, 2] ] + @matrix.minor(1,20,1,1).should == Matrix[ [4], [6] ] end + end - describe "with col_range, row_range" do - it "returns the given portion of the Matrix" do - @matrix.minor(0..0, 0..1).should == Matrix[ [1, 2] ] - @matrix.minor(1..2, 1..2).should == Matrix[ [4], [6] ] - @matrix.minor(1...3, 1...3).should == Matrix[ [4], [6] ] - end + describe "with col_range, row_range" do + it "returns the given portion of the Matrix" do + @matrix.minor(0..0, 0..1).should == Matrix[ [1, 2] ] + @matrix.minor(1..2, 1..2).should == Matrix[ [4], [6] ] + @matrix.minor(1...3, 1...3).should == Matrix[ [4], [6] ] + end - it "returns nil if col_range or row_range is out of range" do - r = @matrix.row_size + 1 - c = @matrix.column_size + 1 - @matrix.minor(r..6, c..6).should == nil - @matrix.minor(0..1, c..6).should == nil - @matrix.minor(r..6, 0..1).should == nil - @matrix.minor(-r..6, -c..6).should == nil - @matrix.minor(0..1, -c..6).should == nil - @matrix.minor(-r..6, 0..1).should == nil - end + it "returns nil if col_range or row_range is out of range" do + r = @matrix.row_size + 1 + c = @matrix.column_size + 1 + @matrix.minor(r..6, c..6).should == nil + @matrix.minor(0..1, c..6).should == nil + @matrix.minor(r..6, 0..1).should == nil + @matrix.minor(-r..6, -c..6).should == nil + @matrix.minor(0..1, -c..6).should == nil + @matrix.minor(-r..6, 0..1).should == nil + end - it "start counting backwards for col_range or row_range below zero" do - @matrix.minor(0..1, -2..-1).should == @matrix.minor(0..1, 0..1) - @matrix.minor(0..1, -2..1).should == @matrix.minor(0..1, 0..1) - @matrix.minor(-2..-1, 0..1).should == @matrix.minor(1..2, 0..1) - @matrix.minor(-2..2, 0..1).should == @matrix.minor(1..2, 0..1) - end + it "start counting backwards for col_range or row_range below zero" do + @matrix.minor(0..1, -2..-1).should == @matrix.minor(0..1, 0..1) + @matrix.minor(0..1, -2..1).should == @matrix.minor(0..1, 0..1) + @matrix.minor(-2..-1, 0..1).should == @matrix.minor(1..2, 0..1) + @matrix.minor(-2..2, 0..1).should == @matrix.minor(1..2, 0..1) end + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.ins.minor(0, 1, 0, 1).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.ins.minor(0, 1, 0, 1).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/minus_spec.rb b/spec/ruby/library/matrix/minus_spec.rb index 27dfbeaea55386..95cf4a6072279b 100644 --- a/spec/ruby/library/matrix/minus_spec.rb +++ b/spec/ruby/library/matrix/minus_spec.rb @@ -1,45 +1,42 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#-" do - before :each do - @a = Matrix[ [1, 2], [3, 4] ] - @b = Matrix[ [4, 5], [6, 7] ] - end +describe "Matrix#-" do + before :each do + @a = Matrix[ [1, 2], [3, 4] ] + @b = Matrix[ [4, 5], [6, 7] ] + end - it "returns the result of subtracting the corresponding elements of other from self" do - (@a - @b).should == Matrix[ [-3,-3], [-3,-3] ] - end + it "returns the result of subtracting the corresponding elements of other from self" do + (@a - @b).should == Matrix[ [-3,-3], [-3,-3] ] + end - it "returns an instance of Matrix" do - (@a - @b).should be_kind_of(Matrix) - end + it "returns an instance of Matrix" do + (@a - @b).should be_kind_of(Matrix) + end - it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do - -> { @a - Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do + -> { @a - Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "raises a ExceptionForMatrix::ErrOperationNotDefined if other is a Numeric Type" do - -> { @a - 2 }.should raise_error(Matrix::ErrOperationNotDefined) - -> { @a - 1.2 }.should raise_error(Matrix::ErrOperationNotDefined) - -> { @a - bignum_value }.should raise_error(Matrix::ErrOperationNotDefined) - end + it "raises a ExceptionForMatrix::ErrOperationNotDefined if other is a Numeric Type" do + -> { @a - 2 }.should raise_error(Matrix::ErrOperationNotDefined) + -> { @a - 1.2 }.should raise_error(Matrix::ErrOperationNotDefined) + -> { @a - bignum_value }.should raise_error(Matrix::ErrOperationNotDefined) + end - it "raises a TypeError if other is of wrong type" do - -> { @a - nil }.should raise_error(TypeError) - -> { @a - "a" }.should raise_error(TypeError) - -> { @a - [ [1, 2] ] }.should raise_error(TypeError) - -> { @a - Object.new }.should raise_error(TypeError) - end + it "raises a TypeError if other is of wrong type" do + -> { @a - nil }.should raise_error(TypeError) + -> { @a - "a" }.should raise_error(TypeError) + -> { @a - [ [1, 2] ] }.should raise_error(TypeError) + -> { @a - Object.new }.should raise_error(TypeError) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - m = MatrixSub.ins - (m-m).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + m = MatrixSub.ins + (m-m).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/multiply_spec.rb b/spec/ruby/library/matrix/multiply_spec.rb index a63fcf4020feae..206868af92970f 100644 --- a/spec/ruby/library/matrix/multiply_spec.rb +++ b/spec/ruby/library/matrix/multiply_spec.rb @@ -1,71 +1,69 @@ require_relative '../../spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +require_relative 'fixtures/classes' +require 'matrix' - describe "Matrix#*" do - before :each do - @a = Matrix[ [1, 2], [3, 4] ] - @b = Matrix[ [4, 5], [6, 7] ] - end +describe "Matrix#*" do + before :each do + @a = Matrix[ [1, 2], [3, 4] ] + @b = Matrix[ [4, 5], [6, 7] ] + end - it "returns the result of multiplying the corresponding elements of self and a Matrix" do - (@a * @b).should == Matrix[ [16,19], [36,43] ] - end + it "returns the result of multiplying the corresponding elements of self and a Matrix" do + (@a * @b).should == Matrix[ [16,19], [36,43] ] + end - it "returns the result of multiplying the corresponding elements of self and a Vector" do - (@a * Vector[1,2]).should == Vector[5, 11] - end + it "returns the result of multiplying the corresponding elements of self and a Vector" do + (@a * Vector[1,2]).should == Vector[5, 11] + end - it "returns the result of multiplying the elements of self and a Fixnum" do - (@a * 2).should == Matrix[ [2, 4], [6, 8] ] - end + it "returns the result of multiplying the elements of self and a Fixnum" do + (@a * 2).should == Matrix[ [2, 4], [6, 8] ] + end - it "returns the result of multiplying the elements of self and a Bignum" do - (@a * bignum_value).should == Matrix[ - [18446744073709551616, 36893488147419103232], - [55340232221128654848, 73786976294838206464] - ] - end + it "returns the result of multiplying the elements of self and a Bignum" do + (@a * bignum_value).should == Matrix[ + [18446744073709551616, 36893488147419103232], + [55340232221128654848, 73786976294838206464] + ] + end - it "returns the result of multiplying the elements of self and a Float" do - (@a * 2.0).should == Matrix[ [2.0, 4.0], [6.0, 8.0] ] - end + it "returns the result of multiplying the elements of self and a Float" do + (@a * 2.0).should == Matrix[ [2.0, 4.0], [6.0, 8.0] ] + end - it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do - -> { @a * Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do + -> { @a * Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "returns a zero matrix if (nx0) * (0xn)" do - (Matrix[[],[],[]] * Matrix.columns([[],[],[]])).should == Matrix.zero(3) - end + it "returns a zero matrix if (nx0) * (0xn)" do + (Matrix[[],[],[]] * Matrix.columns([[],[],[]])).should == Matrix.zero(3) + end - it "returns an empty matrix if (0xn) * (nx0)" do - (Matrix.columns([[],[],[]]) * Matrix[[],[],[]]).should == Matrix[] - end + it "returns an empty matrix if (0xn) * (nx0)" do + (Matrix.columns([[],[],[]]) * Matrix[[],[],[]]).should == Matrix[] + end - it "returns a mx0 matrix if (mxn) * (nx0)" do - (Matrix[[1,2],[3,4],[5,6]] * Matrix[[],[]]).should == Matrix[[],[],[]] - end + it "returns a mx0 matrix if (mxn) * (nx0)" do + (Matrix[[1,2],[3,4],[5,6]] * Matrix[[],[]]).should == Matrix[[],[],[]] + end - it "returns a 0xm matrix if (0xm) * (mxn)" do - (Matrix.columns([[], [], []]) * Matrix[[1,2],[3,4],[5,6]]).should == Matrix.columns([[],[]]) - end + it "returns a 0xm matrix if (0xm) * (mxn)" do + (Matrix.columns([[], [], []]) * Matrix[[1,2],[3,4],[5,6]]).should == Matrix.columns([[],[]]) + end - it "raises a TypeError if other is of wrong type" do - -> { @a * nil }.should raise_error(TypeError) - -> { @a * "a" }.should raise_error(TypeError) - -> { @a * [ [1, 2] ] }.should raise_error(TypeError) - -> { @a * Object.new }.should raise_error(TypeError) - end + it "raises a TypeError if other is of wrong type" do + -> { @a * nil }.should raise_error(TypeError) + -> { @a * "a" }.should raise_error(TypeError) + -> { @a * [ [1, 2] ] }.should raise_error(TypeError) + -> { @a * Object.new }.should raise_error(TypeError) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - m = MatrixSub.ins - (m*m).should be_an_instance_of(MatrixSub) - (m*1).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + m = MatrixSub.ins + (m*m).should be_an_instance_of(MatrixSub) + (m*1).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/new_spec.rb b/spec/ruby/library/matrix/new_spec.rb index 4be2e17116ee45..3005066846058d 100644 --- a/spec/ruby/library/matrix/new_spec.rb +++ b/spec/ruby/library/matrix/new_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.new" do - it "is private" do - Matrix.should have_private_method(:new) - end +describe "Matrix.new" do + it "is private" do + Matrix.should have_private_method(:new) end end diff --git a/spec/ruby/library/matrix/normal_spec.rb b/spec/ruby/library/matrix/normal_spec.rb index 2f2e138c1beb80..a9e6c645faf75e 100644 --- a/spec/ruby/library/matrix/normal_spec.rb +++ b/spec/ruby/library/matrix/normal_spec.rb @@ -1,29 +1,26 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix.normal?" do + # it "returns false for non normal matrices" do + # Matrix[[0, 1], [1, 2]].should_not.normal? + # end - describe "Matrix.normal?" do - # it "returns false for non normal matrices" do - # Matrix[[0, 1], [1, 2]].should_not.normal? - # end - - it "returns true for normal matrices" do - Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should.normal? - Matrix[[0, Complex(0, 2)], [Complex(0, -2), 0]].should.normal? - end + it "returns true for normal matrices" do + Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should.normal? + Matrix[[0, Complex(0, 2)], [Complex(0, -2), 0]].should.normal? + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.normal? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.normal? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/orthogonal_spec.rb b/spec/ruby/library/matrix/orthogonal_spec.rb index eb06305040e21a..26afe89ff08e75 100644 --- a/spec/ruby/library/matrix/orthogonal_spec.rb +++ b/spec/ruby/library/matrix/orthogonal_spec.rb @@ -1,29 +1,26 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.orthogonal?" do - it "returns false for non orthogonal matrices" do - Matrix[[0, 1], [1, 2]].should_not.orthogonal? - Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should_not.orthogonal? - end +describe "Matrix.orthogonal?" do + it "returns false for non orthogonal matrices" do + Matrix[[0, 1], [1, 2]].should_not.orthogonal? + Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should_not.orthogonal? + end - it "returns true for orthogonal matrices" do - Matrix[[0, 1], [1, 0]].should.orthogonal? - end + it "returns true for orthogonal matrices" do + Matrix[[0, 1], [1, 0]].should.orthogonal? + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.orthogonal? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.orthogonal? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/permutation_spec.rb b/spec/ruby/library/matrix/permutation_spec.rb index ed8edad7555684..825a9d982c5cf2 100644 --- a/spec/ruby/library/matrix/permutation_spec.rb +++ b/spec/ruby/library/matrix/permutation_spec.rb @@ -1,35 +1,32 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#permutation?" do - it "returns true for a permutation Matrix" do - Matrix[[0, 1, 0], [0, 0, 1], [1, 0, 0]].permutation?.should be_true - end +describe "Matrix#permutation?" do + it "returns true for a permutation Matrix" do + Matrix[[0, 1, 0], [0, 0, 1], [1, 0, 0]].permutation?.should be_true + end - it "returns false for a non permutation square Matrix" do - Matrix[[0, 1], [0, 0]].permutation?.should be_false - Matrix[[-1, 0], [0, -1]].permutation?.should be_false - Matrix[[1, 0], [1, 0]].permutation?.should be_false - Matrix[[1, 0], [1, 1]].permutation?.should be_false - end + it "returns false for a non permutation square Matrix" do + Matrix[[0, 1], [0, 0]].permutation?.should be_false + Matrix[[-1, 0], [0, -1]].permutation?.should be_false + Matrix[[1, 0], [1, 0]].permutation?.should be_false + Matrix[[1, 0], [1, 1]].permutation?.should be_false + end - it "returns true for an empty 0x0 matrix" do - Matrix.empty(0,0).permutation?.should be_true - end + it "returns true for an empty 0x0 matrix" do + Matrix.empty(0,0).permutation?.should be_true + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.permutation? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.permutation? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/plus_spec.rb b/spec/ruby/library/matrix/plus_spec.rb index 99e6615778d452..2706bad060ea44 100644 --- a/spec/ruby/library/matrix/plus_spec.rb +++ b/spec/ruby/library/matrix/plus_spec.rb @@ -1,45 +1,42 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#+" do - before :each do - @a = Matrix[ [1,2], [3,4] ] - @b = Matrix[ [4,5], [6,7] ] - end +describe "Matrix#+" do + before :each do + @a = Matrix[ [1,2], [3,4] ] + @b = Matrix[ [4,5], [6,7] ] + end - it "returns the result of adding the corresponding elements of self and other" do - (@a + @b).should == Matrix[ [5,7], [9,11] ] - end + it "returns the result of adding the corresponding elements of self and other" do + (@a + @b).should == Matrix[ [5,7], [9,11] ] + end - it "returns an instance of Matrix" do - (@a + @b).should be_kind_of(Matrix) - end + it "returns an instance of Matrix" do + (@a + @b).should be_kind_of(Matrix) + end - it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do - -> { @a + Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises a Matrix::ErrDimensionMismatch if the matrices are different sizes" do + -> { @a + Matrix[ [1] ] }.should raise_error(Matrix::ErrDimensionMismatch) + end - it "raises a ExceptionForMatrix::ErrOperationNotDefined if other is a Numeric Type" do - -> { @a + 2 }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) - -> { @a + 1.2 }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) - -> { @a + bignum_value }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) - end + it "raises a ExceptionForMatrix::ErrOperationNotDefined if other is a Numeric Type" do + -> { @a + 2 }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) + -> { @a + 1.2 }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) + -> { @a + bignum_value }.should raise_error(ExceptionForMatrix::ErrOperationNotDefined) + end - it "raises a TypeError if other is of wrong type" do - -> { @a + nil }.should raise_error(TypeError) - -> { @a + "a" }.should raise_error(TypeError) - -> { @a + [ [1, 2] ] }.should raise_error(TypeError) - -> { @a + Object.new }.should raise_error(TypeError) - end + it "raises a TypeError if other is of wrong type" do + -> { @a + nil }.should raise_error(TypeError) + -> { @a + "a" }.should raise_error(TypeError) + -> { @a + [ [1, 2] ] }.should raise_error(TypeError) + -> { @a + Object.new }.should raise_error(TypeError) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - m = MatrixSub.ins - (m+m).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + m = MatrixSub.ins + (m+m).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/rank_spec.rb b/spec/ruby/library/matrix/rank_spec.rb index fc795b58c16da7..d4403d23ed0c42 100644 --- a/spec/ruby/library/matrix/rank_spec.rb +++ b/spec/ruby/library/matrix/rank_spec.rb @@ -1,22 +1,19 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#rank" do - it "returns the rank of the Matrix" do - Matrix[ [7,6], [3,9] ].rank.should == 2 - end +describe "Matrix#rank" do + it "returns the rank of the Matrix" do + Matrix[ [7,6], [3,9] ].rank.should == 2 + end - it "doesn't loop forever" do - Matrix[ [1,2,3], [4,5,6], [7,8,9] ].rank.should == 2 - Matrix[ [1, 2, 0, 3], [1, -2, 3, 0], [0, 0, 4, 8], [2, 4, 0, 6] ].rank. - should == 3 - end + it "doesn't loop forever" do + Matrix[ [1,2,3], [4,5,6], [7,8,9] ].rank.should == 2 + Matrix[ [1, 2, 0, 3], [1, -2, 3, 0], [0, 0, 4, 8], [2, 4, 0, 6] ].rank. + should == 3 + end - it "works for some easy rectangular matrices" do - Matrix[[0,0],[0,0],[1,0]].rank.should == 1 - Matrix[[0,1],[0,0],[1,0]].rank.should == 2 - end + it "works for some easy rectangular matrices" do + Matrix[[0,0],[0,0],[1,0]].rank.should == 1 + Matrix[[0,1],[0,0],[1,0]].rank.should == 2 end end diff --git a/spec/ruby/library/matrix/real_spec.rb b/spec/ruby/library/matrix/real_spec.rb index 63a6bde923b9e2..38033c63c8f47d 100644 --- a/spec/ruby/library/matrix/real_spec.rb +++ b/spec/ruby/library/matrix/real_spec.rb @@ -1,46 +1,43 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#real?" do - it "returns true for matrices with all real entries" do - Matrix[ [1, 2], [3, 4] ].real?.should be_true - Matrix[ [1.9, 2], [3, 4] ].real?.should be_true - end +describe "Matrix#real?" do + it "returns true for matrices with all real entries" do + Matrix[ [1, 2], [3, 4] ].real?.should be_true + Matrix[ [1.9, 2], [3, 4] ].real?.should be_true + end - it "returns true for empty matrices" do - Matrix.empty.real?.should be_true - end + it "returns true for empty matrices" do + Matrix.empty.real?.should be_true + end - it "returns false if one element is a Complex" do - Matrix[ [Complex(1,1), 2], [3, 4] ].real?.should be_false - end + it "returns false if one element is a Complex" do + Matrix[ [Complex(1,1), 2], [3, 4] ].real?.should be_false + end - # Guard against the Mathn library - guard -> { !defined?(Math.rsqrt) } do - it "returns false if one element is a Complex whose imaginary part is 0" do - Matrix[ [Complex(1,0), 2], [3, 4] ].real?.should be_false - end + # Guard against the Mathn library + guard -> { !defined?(Math.rsqrt) } do + it "returns false if one element is a Complex whose imaginary part is 0" do + Matrix[ [Complex(1,0), 2], [3, 4] ].real?.should be_false end end +end - describe "Matrix#real" do - it "returns a matrix with the real part of the elements of the receiver" do - Matrix[ [1, 2], [3, 4] ].real.should == Matrix[ [1, 2], [3, 4] ] - Matrix[ [1.9, Complex(1,1)], [Complex(-0.42, 0), 4] ].real.should == Matrix[ [1.9, 1], [-0.42, 4] ] - end +describe "Matrix#real" do + it "returns a matrix with the real part of the elements of the receiver" do + Matrix[ [1, 2], [3, 4] ].real.should == Matrix[ [1, 2], [3, 4] ] + Matrix[ [1.9, Complex(1,1)], [Complex(-0.42, 0), 4] ].real.should == Matrix[ [1.9, 1], [-0.42, 4] ] + end - it "returns empty matrices on the same size if empty" do - Matrix.empty(0, 3).real.should == Matrix.empty(0, 3) - Matrix.empty(3, 0).real.should == Matrix.empty(3, 0) - end + it "returns empty matrices on the same size if empty" do + Matrix.empty(0, 3).real.should == Matrix.empty(0, 3) + Matrix.empty(3, 0).real.should == Matrix.empty(3, 0) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.ins.real.should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.ins.real.should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/rect_spec.rb b/spec/ruby/library/matrix/rect_spec.rb index b3b7ac05c99640..83a0404e47d18d 100644 --- a/spec/ruby/library/matrix/rect_spec.rb +++ b/spec/ruby/library/matrix/rect_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/rectangular' -ruby_version_is ""..."3.1" do - require_relative 'shared/rectangular' - - describe "Matrix#rect" do - it_behaves_like :matrix_rectangular, :rect - end +describe "Matrix#rect" do + it_behaves_like :matrix_rectangular, :rect end diff --git a/spec/ruby/library/matrix/rectangular_spec.rb b/spec/ruby/library/matrix/rectangular_spec.rb index 1fc2e0e60db37b..a235fac640c3fa 100644 --- a/spec/ruby/library/matrix/rectangular_spec.rb +++ b/spec/ruby/library/matrix/rectangular_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/rectangular' -ruby_version_is ""..."3.1" do - require_relative 'shared/rectangular' - - describe "Matrix#rectangular" do - it_behaves_like :matrix_rectangular, :rectangular - end +describe "Matrix#rectangular" do + it_behaves_like :matrix_rectangular, :rectangular end diff --git a/spec/ruby/library/matrix/regular_spec.rb b/spec/ruby/library/matrix/regular_spec.rb index f6688bba3027c5..3699d0ef8bdc8e 100644 --- a/spec/ruby/library/matrix/regular_spec.rb +++ b/spec/ruby/library/matrix/regular_spec.rb @@ -1,34 +1,31 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#regular?" do - describe "Matrix#regular?" do + it "returns false for singular matrices" do + m = Matrix[ [1,2,3], [3,4,3], [0,0,0] ] + m.regular?.should be_false - it "returns false for singular matrices" do - m = Matrix[ [1,2,3], [3,4,3], [0,0,0] ] - m.regular?.should be_false - - m = Matrix[ [1,2,9], [3,4,9], [1,2,9] ] - m.regular?.should be_false - end + m = Matrix[ [1,2,9], [3,4,9], [1,2,9] ] + m.regular?.should be_false + end - it "returns true if the Matrix is regular" do - Matrix[ [0,1], [1,0] ].regular?.should be_true - end + it "returns true if the Matrix is regular" do + Matrix[ [0,1], [1,0] ].regular?.should be_true + end - it "returns true for an empty 0x0 matrix" do - Matrix.empty(0,0).regular?.should be_true - end + it "returns true for an empty 0x0 matrix" do + Matrix.empty(0,0).regular?.should be_true + end - it "raises an error for rectangular matrices" do - -> { - Matrix[[1], [2], [3]].regular? - }.should raise_error(Matrix::ErrDimensionMismatch) + it "raises an error for rectangular matrices" do + -> { + Matrix[[1], [2], [3]].regular? + }.should raise_error(Matrix::ErrDimensionMismatch) - -> { - Matrix.empty(3,0).regular? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + -> { + Matrix.empty(3,0).regular? + }.should raise_error(Matrix::ErrDimensionMismatch) end end diff --git a/spec/ruby/library/matrix/round_spec.rb b/spec/ruby/library/matrix/round_spec.rb index db33268414ad57..1dc29df890b01b 100644 --- a/spec/ruby/library/matrix/round_spec.rb +++ b/spec/ruby/library/matrix/round_spec.rb @@ -1,24 +1,21 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix#round" do - it "returns a matrix with all entries rounded" do - Matrix[ [1, 2.34], [5.67, 8] ].round.should == Matrix[ [1, 2], [6, 8] ] - Matrix[ [1, 2.34], [5.67, 8] ].round(1).should == Matrix[ [1, 2.3], [5.7, 8] ] - end +describe "Matrix#round" do + it "returns a matrix with all entries rounded" do + Matrix[ [1, 2.34], [5.67, 8] ].round.should == Matrix[ [1, 2], [6, 8] ] + Matrix[ [1, 2.34], [5.67, 8] ].round(1).should == Matrix[ [1, 2.3], [5.7, 8] ] + end - it "returns empty matrices on the same size if empty" do - Matrix.empty(0, 3).round.should == Matrix.empty(0, 3) - Matrix.empty(3, 0).round(42).should == Matrix.empty(3, 0) - end + it "returns empty matrices on the same size if empty" do + Matrix.empty(0, 3).round.should == Matrix.empty(0, 3) + Matrix.empty(3, 0).round(42).should == Matrix.empty(3, 0) + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.ins.round.should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.ins.round.should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/row_size_spec.rb b/spec/ruby/library/matrix/row_size_spec.rb index fca5a846ab98df..eb3aef2e2fdf0b 100644 --- a/spec/ruby/library/matrix/row_size_spec.rb +++ b/spec/ruby/library/matrix/row_size_spec.rb @@ -1,16 +1,13 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#row_size" do - it "returns the number rows" do - Matrix[ [1,2], [3, 4], [5, 6] ].row_size.should == 3 - end - - it "returns the number rows even for some empty matrices" do - Matrix[ [], [], [] ].row_size.should == 3 - end +describe "Matrix#row_size" do + it "returns the number rows" do + Matrix[ [1,2], [3, 4], [5, 6] ].row_size.should == 3 + end + it "returns the number rows even for some empty matrices" do + Matrix[ [], [], [] ].row_size.should == 3 end + end diff --git a/spec/ruby/library/matrix/row_spec.rb b/spec/ruby/library/matrix/row_spec.rb index eb05cd92730cc3..00b1f02a8e0189 100644 --- a/spec/ruby/library/matrix/row_spec.rb +++ b/spec/ruby/library/matrix/row_spec.rb @@ -1,39 +1,36 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#row" do - before :all do - @m = Matrix[ [1, 2], [2, 3], [3, 4] ] - end +describe "Matrix#row" do + before :all do + @m = Matrix[ [1, 2], [2, 3], [3, 4] ] + end - it "returns a Vector when called without a block" do - @m.row(0).should == Vector[1,2] - end + it "returns a Vector when called without a block" do + @m.row(0).should == Vector[1,2] + end - it "yields the elements of the row when called with a block" do - a = [] - @m.row(0) {|x| a << x} - a.should == [1,2] - end + it "yields the elements of the row when called with a block" do + a = [] + @m.row(0) {|x| a << x} + a.should == [1,2] + end - it "counts backwards for negative argument" do - @m.row(-1).should == Vector[3, 4] - end + it "counts backwards for negative argument" do + @m.row(-1).should == Vector[3, 4] + end - it "returns self when called with a block" do - @m.row(0) { |x| x }.should equal(@m) - end + it "returns self when called with a block" do + @m.row(0) { |x| x }.should equal(@m) + end - it "returns nil when out of bounds" do - @m.row(3).should == nil - @m.row(-4).should == nil - end + it "returns nil when out of bounds" do + @m.row(3).should == nil + @m.row(-4).should == nil + end - it "never yields when out of bounds" do - -> { @m.row(3){ raise } }.should_not raise_error - -> { @m.row(-4){ raise } }.should_not raise_error - end + it "never yields when out of bounds" do + -> { @m.row(3){ raise } }.should_not raise_error + -> { @m.row(-4){ raise } }.should_not raise_error end end diff --git a/spec/ruby/library/matrix/row_vector_spec.rb b/spec/ruby/library/matrix/row_vector_spec.rb index 4c97d6013ad07d..341437ee05c0e3 100644 --- a/spec/ruby/library/matrix/row_vector_spec.rb +++ b/spec/ruby/library/matrix/row_vector_spec.rb @@ -1,27 +1,24 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' +describe "Matrix.row_vector" do - describe "Matrix.row_vector" do - - it "returns a Matrix" do - Matrix.row_vector([]).should be_an_instance_of(Matrix) - end + it "returns a Matrix" do + Matrix.row_vector([]).should be_an_instance_of(Matrix) + end - it "returns a single-row Matrix with the specified values" do - Matrix.row_vector([1,2]).should == Matrix[ [1,2] ] - end + it "returns a single-row Matrix with the specified values" do + Matrix.row_vector([1,2]).should == Matrix[ [1,2] ] + end - it "returns a 1x0 matrix when called with an empty Array" do - Matrix.row_vector([]).should == Matrix[ [] ] - end + it "returns a 1x0 matrix when called with an empty Array" do + Matrix.row_vector([]).should == Matrix[ [] ] + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.row_vector([1]).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.row_vector([1]).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/row_vectors_spec.rb b/spec/ruby/library/matrix/row_vectors_spec.rb index d01a4ca10dd15a..6f99c439a67bb0 100644 --- a/spec/ruby/library/matrix/row_vectors_spec.rb +++ b/spec/ruby/library/matrix/row_vectors_spec.rb @@ -1,29 +1,26 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#row_vectors" do - describe "Matrix#row_vectors" do - - before :each do - @vectors = Matrix[ [1,2], [3,4] ].row_vectors - end + before :each do + @vectors = Matrix[ [1,2], [3,4] ].row_vectors + end - it "returns an Array" do - Matrix[ [1,2], [3,4] ].row_vectors.should be_an_instance_of(Array) - end + it "returns an Array" do + Matrix[ [1,2], [3,4] ].row_vectors.should be_an_instance_of(Array) + end - it "returns an Array of Vectors" do - @vectors.all? {|v| v.should be_an_instance_of(Vector)} - end + it "returns an Array of Vectors" do + @vectors.all? {|v| v.should be_an_instance_of(Vector)} + end - it "returns each row as a Vector" do - @vectors.should == [Vector[1,2], Vector[3,4]] - end + it "returns each row as a Vector" do + @vectors.should == [Vector[1,2], Vector[3,4]] + end - it "returns an empty Array for empty matrices" do - Matrix[].row_vectors.should == [] - Matrix[ [] ].row_vectors.should == [ Vector[] ] - end + it "returns an empty Array for empty matrices" do + Matrix[].row_vectors.should == [] + Matrix[ [] ].row_vectors.should == [ Vector[] ] end end diff --git a/spec/ruby/library/matrix/rows_spec.rb b/spec/ruby/library/matrix/rows_spec.rb index 5f0515a37bdecf..41ba635775779e 100644 --- a/spec/ruby/library/matrix/rows_spec.rb +++ b/spec/ruby/library/matrix/rows_spec.rb @@ -1,44 +1,41 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'fixtures/classes' - require 'matrix' - - describe "Matrix.rows" do - before :each do - @a = [1, 2] - @b = [3, 4] - @m = Matrix.rows([@a, @b]) - end +describe "Matrix.rows" do + before :each do + @a = [1, 2] + @b = [3, 4] + @m = Matrix.rows([@a, @b]) + end - it "returns a Matrix" do - @m.should be_kind_of(Matrix) - end + it "returns a Matrix" do + @m.should be_kind_of(Matrix) + end - it "creates a matrix from argument rows" do - @m.row(0).to_a.should == @a - @m.row(1).to_a.should == @b - end + it "creates a matrix from argument rows" do + @m.row(0).to_a.should == @a + @m.row(1).to_a.should == @b + end - it "copies the original rows by default" do - @a << 3 - @b << 6 - @m.row(0).should_not equal(@a) - @m.row(1).should_not equal(@b) - end + it "copies the original rows by default" do + @a << 3 + @b << 6 + @m.row(0).should_not equal(@a) + @m.row(1).should_not equal(@b) + end - it "references the original rows if copy is false" do - @m_ref = Matrix.rows([@a, @b], false) - @a << 3 - @b << 6 - @m_ref.row(0).to_a.should == @a - @m_ref.row(1).to_a.should == @b - end + it "references the original rows if copy is false" do + @m_ref = Matrix.rows([@a, @b], false) + @a << 3 + @b << 6 + @m_ref.row(0).to_a.should == @a + @m_ref.row(1).to_a.should == @b + end - describe "for a subclass of Matrix" do - it "returns an instance of that subclass" do - MatrixSub.rows([[0, 1], [0, 1]]).should be_an_instance_of(MatrixSub) - end + describe "for a subclass of Matrix" do + it "returns an instance of that subclass" do + MatrixSub.rows([[0, 1], [0, 1]]).should be_an_instance_of(MatrixSub) end end end diff --git a/spec/ruby/library/matrix/scalar/Fail_spec.rb b/spec/ruby/library/matrix/scalar/Fail_spec.rb index 4f774eda285276..9d8f9bd5e87a7f 100644 --- a/spec/ruby/library/matrix/scalar/Fail_spec.rb +++ b/spec/ruby/library/matrix/scalar/Fail_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#Fail" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#Fail" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/Raise_spec.rb b/spec/ruby/library/matrix/scalar/Raise_spec.rb index b405b6d6c5568a..27e11c1f77b9d1 100644 --- a/spec/ruby/library/matrix/scalar/Raise_spec.rb +++ b/spec/ruby/library/matrix/scalar/Raise_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#Raise" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#Raise" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/divide_spec.rb b/spec/ruby/library/matrix/scalar/divide_spec.rb index 0ef2206bf6df12..5d726943fe43c5 100644 --- a/spec/ruby/library/matrix/scalar/divide_spec.rb +++ b/spec/ruby/library/matrix/scalar/divide_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#/" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#/" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/exponent_spec.rb b/spec/ruby/library/matrix/scalar/exponent_spec.rb index 87eea283d1667b..8e9ef52ff2ee14 100644 --- a/spec/ruby/library/matrix/scalar/exponent_spec.rb +++ b/spec/ruby/library/matrix/scalar/exponent_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#**" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#**" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/included_spec.rb b/spec/ruby/library/matrix/scalar/included_spec.rb index bab80e5120284b..cb3beb2ecd6767 100644 --- a/spec/ruby/library/matrix/scalar/included_spec.rb +++ b/spec/ruby/library/matrix/scalar/included_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar.included" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar.included" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/initialize_spec.rb b/spec/ruby/library/matrix/scalar/initialize_spec.rb index af51562b431de0..23145ad0de8f89 100644 --- a/spec/ruby/library/matrix/scalar/initialize_spec.rb +++ b/spec/ruby/library/matrix/scalar/initialize_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#initialize" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#initialize" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/minus_spec.rb b/spec/ruby/library/matrix/scalar/minus_spec.rb index 966db1d75b5b23..c727ea165951ab 100644 --- a/spec/ruby/library/matrix/scalar/minus_spec.rb +++ b/spec/ruby/library/matrix/scalar/minus_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#-" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#-" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/multiply_spec.rb b/spec/ruby/library/matrix/scalar/multiply_spec.rb index 21caac478b0150..1a2a83d83e69d6 100644 --- a/spec/ruby/library/matrix/scalar/multiply_spec.rb +++ b/spec/ruby/library/matrix/scalar/multiply_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#*" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#*" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar/plus_spec.rb b/spec/ruby/library/matrix/scalar/plus_spec.rb index 78cdf9367f8932..c94689a70253b4 100644 --- a/spec/ruby/library/matrix/scalar/plus_spec.rb +++ b/spec/ruby/library/matrix/scalar/plus_spec.rb @@ -1,9 +1,6 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix::Scalar#+" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix::Scalar#+" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/scalar_spec.rb b/spec/ruby/library/matrix/scalar_spec.rb index 1ec64d2d782dd9..7fdd64c9d95026 100644 --- a/spec/ruby/library/matrix/scalar_spec.rb +++ b/spec/ruby/library/matrix/scalar_spec.rb @@ -1,68 +1,65 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix.scalar" do - describe "Matrix.scalar" do - - before :each do - @side = 3 - @value = 8 - @a = Matrix.scalar(@side, @value) - end + before :each do + @side = 3 + @value = 8 + @a = Matrix.scalar(@side, @value) + end - it "returns a Matrix" do - @a.should be_kind_of(Matrix) - end + it "returns a Matrix" do + @a.should be_kind_of(Matrix) + end - it "returns a n x n matrix" do - @a.row_size.should == @side - @a.column_size.should == @side - end + it "returns a n x n matrix" do + @a.row_size.should == @side + @a.column_size.should == @side + end - it "initializes diagonal to value" do - (0...@a.row_size).each do |i| - @a[i, i].should == @value - end + it "initializes diagonal to value" do + (0...@a.row_size).each do |i| + @a[i, i].should == @value end + end - it "initializes all non-diagonal values to 0" do - (0...@a.row_size).each do |i| - (0...@a.column_size).each do |j| - if i != j - @a[i, j].should == 0 - end + it "initializes all non-diagonal values to 0" do + (0...@a.row_size).each do |i| + (0...@a.column_size).each do |j| + if i != j + @a[i, j].should == 0 end end end + end - before :each do - @side = 3 - @value = 8 - @a = Matrix.scalar(@side, @value) - end + before :each do + @side = 3 + @value = 8 + @a = Matrix.scalar(@side, @value) + end - it "returns a Matrix" do - @a.should be_kind_of(Matrix) - end + it "returns a Matrix" do + @a.should be_kind_of(Matrix) + end - it "returns a square matrix, where the first argument specifies the side of the square" do - @a.row_size.should == @side - @a.column_size.should == @side - end + it "returns a square matrix, where the first argument specifies the side of the square" do + @a.row_size.should == @side + @a.column_size.should == @side + end - it "puts the second argument in all diagonal values" do - (0...@a.row_size).each do |i| - @a[i, i].should == @value - end + it "puts the second argument in all diagonal values" do + (0...@a.row_size).each do |i| + @a[i, i].should == @value end + end - it "fills all values not on the main diagonal with 0" do - (0...@a.row_size).each do |i| - (0...@a.column_size).each do |j| - if i != j - @a[i, j].should == 0 - end + it "fills all values not on the main diagonal with 0" do + (0...@a.row_size).each do |i| + (0...@a.column_size).each do |j| + if i != j + @a[i, j].should == 0 end end end diff --git a/spec/ruby/library/matrix/singular_spec.rb b/spec/ruby/library/matrix/singular_spec.rb index 341c2675a8103c..7bba36a54ac1fc 100644 --- a/spec/ruby/library/matrix/singular_spec.rb +++ b/spec/ruby/library/matrix/singular_spec.rb @@ -1,34 +1,31 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#singular?" do + it "returns true for singular matrices" do + m = Matrix[ [1,2,3], [3,4,3], [0,0,0] ] + m.singular?.should be_true - describe "Matrix#singular?" do - it "returns true for singular matrices" do - m = Matrix[ [1,2,3], [3,4,3], [0,0,0] ] - m.singular?.should be_true - - m = Matrix[ [1,2,9], [3,4,9], [1,2,9] ] - m.singular?.should be_true - end - - it "returns false if the Matrix is regular" do - Matrix[ [0,1], [1,0] ].singular?.should be_false - end + m = Matrix[ [1,2,9], [3,4,9], [1,2,9] ] + m.singular?.should be_true + end - it "returns false for an empty 0x0 matrix" do - Matrix.empty(0,0).singular?.should be_false - end + it "returns false if the Matrix is regular" do + Matrix[ [0,1], [1,0] ].singular?.should be_false + end - it "raises an error for rectangular matrices" do - -> { - Matrix[[1], [2], [3]].singular? - }.should raise_error(Matrix::ErrDimensionMismatch) + it "returns false for an empty 0x0 matrix" do + Matrix.empty(0,0).singular?.should be_false + end - -> { - Matrix.empty(3,0).singular? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + -> { + Matrix[[1], [2], [3]].singular? + }.should raise_error(Matrix::ErrDimensionMismatch) + -> { + Matrix.empty(3,0).singular? + }.should raise_error(Matrix::ErrDimensionMismatch) end + end diff --git a/spec/ruby/library/matrix/square_spec.rb b/spec/ruby/library/matrix/square_spec.rb index e678f1c7021f3c..25d2d1ad9c25d9 100644 --- a/spec/ruby/library/matrix/square_spec.rb +++ b/spec/ruby/library/matrix/square_spec.rb @@ -1,31 +1,28 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Matrix#square?" do - describe "Matrix#square?" do - - it "returns true when the Matrix is square" do - Matrix[ [1,2], [2,4] ].square?.should be_true - Matrix[ [100,3,5], [9.5, 4.9, 8], [2,0,77] ].square?.should be_true - end + it "returns true when the Matrix is square" do + Matrix[ [1,2], [2,4] ].square?.should be_true + Matrix[ [100,3,5], [9.5, 4.9, 8], [2,0,77] ].square?.should be_true + end - it "returns true when the Matrix has only one element" do - Matrix[ [9] ].square?.should be_true - end + it "returns true when the Matrix has only one element" do + Matrix[ [9] ].square?.should be_true + end - it "returns false when the Matrix is rectangular" do - Matrix[ [1, 2] ].square?.should be_false - end + it "returns false when the Matrix is rectangular" do + Matrix[ [1, 2] ].square?.should be_false + end - it "returns false when the Matrix is rectangular" do - Matrix[ [1], [2] ].square?.should be_false - end + it "returns false when the Matrix is rectangular" do + Matrix[ [1], [2] ].square?.should be_false + end - it "returns handles empty matrices" do - Matrix[].square?.should be_true - Matrix[[]].square?.should be_false - Matrix.columns([[]]).square?.should be_false - end + it "returns handles empty matrices" do + Matrix[].square?.should be_true + Matrix[[]].square?.should be_false + Matrix.columns([[]]).square?.should be_false end end diff --git a/spec/ruby/library/matrix/symmetric_spec.rb b/spec/ruby/library/matrix/symmetric_spec.rb index 9eed28ac0d35ee..6f2a99276ab31b 100644 --- a/spec/ruby/library/matrix/symmetric_spec.rb +++ b/spec/ruby/library/matrix/symmetric_spec.rb @@ -1,32 +1,29 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.symmetric?" do - it "returns true for a symmetric Matrix" do - Matrix[[1, 2, Complex(0, 3)], [2, 4, 5], [Complex(0, 3), 5, 6]].symmetric?.should be_true - end +describe "Matrix.symmetric?" do + it "returns true for a symmetric Matrix" do + Matrix[[1, 2, Complex(0, 3)], [2, 4, 5], [Complex(0, 3), 5, 6]].symmetric?.should be_true + end - it "returns true for a 0x0 empty matrix" do - Matrix.empty.symmetric?.should be_true - end + it "returns true for a 0x0 empty matrix" do + Matrix.empty.symmetric?.should be_true + end - it "returns false for an asymmetric Matrix" do - Matrix[[1, 2],[-2, 1]].symmetric?.should be_false - end + it "returns false for an asymmetric Matrix" do + Matrix[[1, 2],[-2, 1]].symmetric?.should be_false + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.symmetric? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.symmetric? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/t_spec.rb b/spec/ruby/library/matrix/t_spec.rb index 6eb54371ee8680..6f1a5178e0a5a1 100644 --- a/spec/ruby/library/matrix/t_spec.rb +++ b/spec/ruby/library/matrix/t_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/transpose' -ruby_version_is ""..."3.1" do - require_relative 'shared/transpose' - - describe "Matrix#transpose" do - it_behaves_like :matrix_transpose, :t - end +describe "Matrix#transpose" do + it_behaves_like :matrix_transpose, :t end diff --git a/spec/ruby/library/matrix/to_a_spec.rb b/spec/ruby/library/matrix/to_a_spec.rb index 0222a663ac2c04..b5d55c5d6759ac 100644 --- a/spec/ruby/library/matrix/to_a_spec.rb +++ b/spec/ruby/library/matrix/to_a_spec.rb @@ -1,14 +1,11 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#to_a" do - it "returns the array of arrays that describe the rows of the matrix" do - Matrix[].to_a.should == [] - Matrix[[]].to_a.should == [[]] - Matrix[[1]].to_a.should == [[1]] - Matrix[[1, 2], [3, 4]].to_a.should == [[1, 2],[3, 4]] - end +describe "Matrix#to_a" do + it "returns the array of arrays that describe the rows of the matrix" do + Matrix[].to_a.should == [] + Matrix[[]].to_a.should == [[]] + Matrix[[1]].to_a.should == [[1]] + Matrix[[1, 2], [3, 4]].to_a.should == [[1, 2],[3, 4]] end end diff --git a/spec/ruby/library/matrix/to_s_spec.rb b/spec/ruby/library/matrix/to_s_spec.rb index 7d38655e0dedda..f529fe3bcd3d1e 100644 --- a/spec/ruby/library/matrix/to_s_spec.rb +++ b/spec/ruby/library/matrix/to_s_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix#to_s" do - it "needs to be reviewed for spec completeness" - end +describe "Matrix#to_s" do + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/matrix/tr_spec.rb b/spec/ruby/library/matrix/tr_spec.rb index bbf274bb5ef954..e17bd790d7412a 100644 --- a/spec/ruby/library/matrix/tr_spec.rb +++ b/spec/ruby/library/matrix/tr_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/trace' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/trace' - require 'matrix' - - describe "Matrix#tr" do - it_behaves_like :trace, :tr - end +describe "Matrix#tr" do + it_behaves_like :trace, :tr end diff --git a/spec/ruby/library/matrix/trace_spec.rb b/spec/ruby/library/matrix/trace_spec.rb index ac6ce7927d4891..290e7cb1f71d64 100644 --- a/spec/ruby/library/matrix/trace_spec.rb +++ b/spec/ruby/library/matrix/trace_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/trace' +require 'matrix' -ruby_version_is ""..."3.1" do - require_relative 'shared/trace' - require 'matrix' - - describe "Matrix#trace" do - it_behaves_like :trace, :trace - end +describe "Matrix#trace" do + it_behaves_like :trace, :trace end diff --git a/spec/ruby/library/matrix/transpose_spec.rb b/spec/ruby/library/matrix/transpose_spec.rb index d7f495b946f620..79600dd439ec10 100644 --- a/spec/ruby/library/matrix/transpose_spec.rb +++ b/spec/ruby/library/matrix/transpose_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/transpose' -ruby_version_is ""..."3.1" do - require_relative 'shared/transpose' - - describe "Matrix#transpose" do - it_behaves_like :matrix_transpose, :transpose - end +describe "Matrix#transpose" do + it_behaves_like :matrix_transpose, :transpose end diff --git a/spec/ruby/library/matrix/unit_spec.rb b/spec/ruby/library/matrix/unit_spec.rb index 439e0d616bec77..6a41d729c72349 100644 --- a/spec/ruby/library/matrix/unit_spec.rb +++ b/spec/ruby/library/matrix/unit_spec.rb @@ -1,9 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/identity' -ruby_version_is ""..."3.1" do - require_relative 'shared/identity' - - describe "Matrix.unit" do - it_behaves_like :matrix_identity, :unit - end +describe "Matrix.unit" do + it_behaves_like :matrix_identity, :unit end diff --git a/spec/ruby/library/matrix/unitary_spec.rb b/spec/ruby/library/matrix/unitary_spec.rb index 04e6df8be09104..c214ee9b2f6562 100644 --- a/spec/ruby/library/matrix/unitary_spec.rb +++ b/spec/ruby/library/matrix/unitary_spec.rb @@ -1,34 +1,32 @@ require_relative '../../spec_helper' -ruby_version_is ""..."3.1" do - require 'matrix' +require 'matrix' - describe "Matrix.unitary?" do - it "returns false for non unitary matrices" do - Matrix[[0, 1], [1, 2]].should_not.unitary? - Matrix[[0, Complex(0, 2)], [Complex(0, 2), 0]].should_not.unitary? - Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should_not.unitary? - end +describe "Matrix.unitary?" do + it "returns false for non unitary matrices" do + Matrix[[0, 1], [1, 2]].should_not.unitary? + Matrix[[0, Complex(0, 2)], [Complex(0, 2), 0]].should_not.unitary? + Matrix[[1, 1, 0], [0, 1, 1], [1, 0, 1]].should_not.unitary? + end - it "returns true for unitary matrices" do - Matrix[[0, Complex(0, 1)], [Complex(0, 1), 0]].should.unitary? - end + it "returns true for unitary matrices" do + Matrix[[0, Complex(0, 1)], [Complex(0, 1), 0]].should.unitary? + end - it "returns true for unitary matrices with a Complex and a negative #imag" do - Matrix[[0, Complex(0, 1)], [Complex(0, -1), 0]].should.unitary? - end + it "returns true for unitary matrices with a Complex and a negative #imag" do + Matrix[[0, Complex(0, 1)], [Complex(0, -1), 0]].should.unitary? + end - it "raises an error for rectangular matrices" do - [ - Matrix[[0], [0]], - Matrix[[0, 0]], - Matrix.empty(0, 2), - Matrix.empty(2, 0), - ].each do |rectangular_matrix| - -> { - rectangular_matrix.unitary? - }.should raise_error(Matrix::ErrDimensionMismatch) - end + it "raises an error for rectangular matrices" do + [ + Matrix[[0], [0]], + Matrix[[0, 0]], + Matrix.empty(0, 2), + Matrix.empty(2, 0), + ].each do |rectangular_matrix| + -> { + rectangular_matrix.unitary? + }.should raise_error(Matrix::ErrDimensionMismatch) end end end diff --git a/spec/ruby/library/matrix/upper_triangular_spec.rb b/spec/ruby/library/matrix/upper_triangular_spec.rb index cc2aeb723336e1..2514294a804c70 100644 --- a/spec/ruby/library/matrix/upper_triangular_spec.rb +++ b/spec/ruby/library/matrix/upper_triangular_spec.rb @@ -1,27 +1,24 @@ require_relative '../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Matrix.upper_triangular?" do - it "returns true for an upper triangular Matrix" do - Matrix[[1, 2, 3], [0, 2, 3], [0, 0, 3]].upper_triangular?.should be_true - Matrix.diagonal([1, 2, 3]).upper_triangular?.should be_true - Matrix[[1, 2], [0, 2], [0, 0], [0, 0]].upper_triangular?.should be_true - Matrix[[1, 2, 3, 4], [0, 2, 3, 4]].upper_triangular?.should be_true - end +describe "Matrix.upper_triangular?" do + it "returns true for an upper triangular Matrix" do + Matrix[[1, 2, 3], [0, 2, 3], [0, 0, 3]].upper_triangular?.should be_true + Matrix.diagonal([1, 2, 3]).upper_triangular?.should be_true + Matrix[[1, 2], [0, 2], [0, 0], [0, 0]].upper_triangular?.should be_true + Matrix[[1, 2, 3, 4], [0, 2, 3, 4]].upper_triangular?.should be_true + end - it "returns false for a non upper triangular square Matrix" do - Matrix[[0, 0], [1, 0]].upper_triangular?.should be_false - Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].upper_triangular?.should be_false - Matrix[[0, 0], [0, 0], [0, 0], [0, 1]].upper_triangular?.should be_false - Matrix[[0, 0, 0, 0], [1, 0, 0, 0]].upper_triangular?.should be_false - end + it "returns false for a non upper triangular square Matrix" do + Matrix[[0, 0], [1, 0]].upper_triangular?.should be_false + Matrix[[1, 2, 3], [1, 2, 3], [1, 2, 3]].upper_triangular?.should be_false + Matrix[[0, 0], [0, 0], [0, 0], [0, 1]].upper_triangular?.should be_false + Matrix[[0, 0, 0, 0], [1, 0, 0, 0]].upper_triangular?.should be_false + end - it "returns true for an empty matrix" do - Matrix.empty(3,0).upper_triangular?.should be_true - Matrix.empty(0,3).upper_triangular?.should be_true - Matrix.empty(0,0).upper_triangular?.should be_true - end + it "returns true for an empty matrix" do + Matrix.empty(3,0).upper_triangular?.should be_true + Matrix.empty(0,3).upper_triangular?.should be_true + Matrix.empty(0,0).upper_triangular?.should be_true end end diff --git a/spec/ruby/library/matrix/vector/cross_product_spec.rb b/spec/ruby/library/matrix/vector/cross_product_spec.rb index 88523824cd965a..c2698ade4c7554 100644 --- a/spec/ruby/library/matrix/vector/cross_product_spec.rb +++ b/spec/ruby/library/matrix/vector/cross_product_spec.rb @@ -1,17 +1,14 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Vector#cross_product" do - it "returns the cross product of a vector" do - Vector[1, 2, 3].cross_product(Vector[0, -4, 5]).should == Vector[22, -5, -4] - end +describe "Vector#cross_product" do + it "returns the cross product of a vector" do + Vector[1, 2, 3].cross_product(Vector[0, -4, 5]).should == Vector[22, -5, -4] + end - it "raises an error unless both vectors have dimension 3" do - -> { - Vector[1, 2, 3].cross_product(Vector[0, -4]) - }.should raise_error(Vector::ErrDimensionMismatch) - end + it "raises an error unless both vectors have dimension 3" do + -> { + Vector[1, 2, 3].cross_product(Vector[0, -4]) + }.should raise_error(Vector::ErrDimensionMismatch) end end diff --git a/spec/ruby/library/matrix/vector/each2_spec.rb b/spec/ruby/library/matrix/vector/each2_spec.rb index bdd6966472ef27..10d2fc404d4425 100644 --- a/spec/ruby/library/matrix/vector/each2_spec.rb +++ b/spec/ruby/library/matrix/vector/each2_spec.rb @@ -1,52 +1,49 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' +describe "Vector.each2" do + before :all do + @v = Vector[1, 2, 3] + @v2 = Vector[4, 5, 6] + end + + it "requires one argument" do + -> { @v.each2(@v2, @v2){} }.should raise_error(ArgumentError) + -> { @v.each2(){} }.should raise_error(ArgumentError) + end + + describe "given one argument" do + it "accepts an Array argument" do + a = [] + @v.each2([7, 8, 9]){|x, y| a << x << y} + a.should == [1, 7, 2, 8, 3, 9] + end + + it "raises a DimensionMismatch error if the Vector size is different" do + -> { @v.each2(Vector[1,2]){} }.should raise_error(Vector::ErrDimensionMismatch) + -> { @v.each2(Vector[1,2,3,4]){} }.should raise_error(Vector::ErrDimensionMismatch) + end + + it "yields arguments in sequence" do + a = [] + @v.each2(@v2){|first, second| a << [first, second]} + a.should == [[1, 4], [2, 5], [3, 6]] + end - describe "Vector.each2" do - before :all do - @v = Vector[1, 2, 3] - @v2 = Vector[4, 5, 6] + it "yield arguments in pairs" do + a = [] + @v.each2(@v2){|*pair| a << pair} + a.should == [[1, 4], [2, 5], [3, 6]] end - it "requires one argument" do - -> { @v.each2(@v2, @v2){} }.should raise_error(ArgumentError) - -> { @v.each2(){} }.should raise_error(ArgumentError) + it "returns self when given a block" do + @v.each2(@v2){}.should equal(@v) end - describe "given one argument" do - it "accepts an Array argument" do - a = [] - @v.each2([7, 8, 9]){|x, y| a << x << y} - a.should == [1, 7, 2, 8, 3, 9] - end - - it "raises a DimensionMismatch error if the Vector size is different" do - -> { @v.each2(Vector[1,2]){} }.should raise_error(Vector::ErrDimensionMismatch) - -> { @v.each2(Vector[1,2,3,4]){} }.should raise_error(Vector::ErrDimensionMismatch) - end - - it "yields arguments in sequence" do - a = [] - @v.each2(@v2){|first, second| a << [first, second]} - a.should == [[1, 4], [2, 5], [3, 6]] - end - - it "yield arguments in pairs" do - a = [] - @v.each2(@v2){|*pair| a << pair} - a.should == [[1, 4], [2, 5], [3, 6]] - end - - it "returns self when given a block" do - @v.each2(@v2){}.should equal(@v) - end - - it "returns an enumerator if no block given" do - enum = @v.each2(@v2) - enum.should be_an_instance_of(Enumerator) - enum.to_a.should == [[1, 4], [2, 5], [3, 6]] - end + it "returns an enumerator if no block given" do + enum = @v.each2(@v2) + enum.should be_an_instance_of(Enumerator) + enum.to_a.should == [[1, 4], [2, 5], [3, 6]] end end end diff --git a/spec/ruby/library/matrix/vector/eql_spec.rb b/spec/ruby/library/matrix/vector/eql_spec.rb index fa086bd33af0fa..eb2451b550dd8b 100644 --- a/spec/ruby/library/matrix/vector/eql_spec.rb +++ b/spec/ruby/library/matrix/vector/eql_spec.rb @@ -1,19 +1,16 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Vector#eql?" do - before do - @vector = Vector[1, 2, 3, 4, 5] - end +describe "Vector#eql?" do + before do + @vector = Vector[1, 2, 3, 4, 5] + end - it "returns true for self" do - @vector.eql?(@vector).should be_true - end + it "returns true for self" do + @vector.eql?(@vector).should be_true + end - it "returns false when there are a pair corresponding elements which are not equal in the sense of Kernel#eql?" do - @vector.eql?(Vector[1, 2, 3, 4, 5.0]).should be_false - end + it "returns false when there are a pair corresponding elements which are not equal in the sense of Kernel#eql?" do + @vector.eql?(Vector[1, 2, 3, 4, 5.0]).should be_false end end diff --git a/spec/ruby/library/matrix/vector/inner_product_spec.rb b/spec/ruby/library/matrix/vector/inner_product_spec.rb index 95dc4806b50305..1cf8771e0450b4 100644 --- a/spec/ruby/library/matrix/vector/inner_product_spec.rb +++ b/spec/ruby/library/matrix/vector/inner_product_spec.rb @@ -1,25 +1,22 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Vector#inner_product" do - it "returns the inner product of a vector" do - Vector[1, 2, 3].inner_product(Vector[0, -4, 5]).should == 7 - end +describe "Vector#inner_product" do + it "returns the inner product of a vector" do + Vector[1, 2, 3].inner_product(Vector[0, -4, 5]).should == 7 + end - it "returns 0 for empty vectors" do - Vector[].inner_product(Vector[]).should == 0 - end + it "returns 0 for empty vectors" do + Vector[].inner_product(Vector[]).should == 0 + end - it "raises an error for mismatched vectors" do - -> { - Vector[1, 2, 3].inner_product(Vector[0, -4]) - }.should raise_error(Vector::ErrDimensionMismatch) - end + it "raises an error for mismatched vectors" do + -> { + Vector[1, 2, 3].inner_product(Vector[0, -4]) + }.should raise_error(Vector::ErrDimensionMismatch) + end - it "uses the conjugate of its argument" do - Vector[Complex(1,2)].inner_product(Vector[Complex(3,4)]).should == Complex(11, 2) - end + it "uses the conjugate of its argument" do + Vector[Complex(1,2)].inner_product(Vector[Complex(3,4)]).should == Complex(11, 2) end end diff --git a/spec/ruby/library/matrix/vector/normalize_spec.rb b/spec/ruby/library/matrix/vector/normalize_spec.rb index 7345e11fa49ac7..527c9260debf3f 100644 --- a/spec/ruby/library/matrix/vector/normalize_spec.rb +++ b/spec/ruby/library/matrix/vector/normalize_spec.rb @@ -1,21 +1,18 @@ require_relative '../../../spec_helper' +require 'matrix' -ruby_version_is ""..."3.1" do - require 'matrix' - - describe "Vector#normalize" do - it "returns a normalized copy of the vector" do - x = 0.2672612419124244 - Vector[1, 2, 3].normalize.should == Vector[x, x * 2, x * 3] - end +describe "Vector#normalize" do + it "returns a normalized copy of the vector" do + x = 0.2672612419124244 + Vector[1, 2, 3].normalize.should == Vector[x, x * 2, x * 3] + end - it "raises an error for zero vectors" do - -> { - Vector[].normalize - }.should raise_error(Vector::ZeroVectorError) - -> { - Vector[0, 0, 0].normalize - }.should raise_error(Vector::ZeroVectorError) - end + it "raises an error for zero vectors" do + -> { + Vector[].normalize + }.should raise_error(Vector::ZeroVectorError) + -> { + Vector[0, 0, 0].normalize + }.should raise_error(Vector::ZeroVectorError) end end diff --git a/spec/ruby/library/matrix/zero_spec.rb b/spec/ruby/library/matrix/zero_spec.rb index 80162a03d0aefa..68e8567c260256 100644 --- a/spec/ruby/library/matrix/zero_spec.rb +++ b/spec/ruby/library/matrix/zero_spec.rb @@ -1,55 +1,52 @@ require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require 'matrix' -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 +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 + 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 + 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) + 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 + (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 + 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 +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 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 + it "returns false for matrices with non zero entries" do + Matrix[[1]].should_not.zero? end end diff --git a/spec/ruby/library/net-ftp/FTPError_spec.rb b/spec/ruby/library/net-ftp/FTPError_spec.rb index 84128511db22f0..0c31b65dcc437c 100644 --- a/spec/ruby/library/net-ftp/FTPError_spec.rb +++ b/spec/ruby/library/net-ftp/FTPError_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require 'net/ftp' -ruby_version_is ""..."3.1" do - require 'net/ftp' - - describe "Net::FTPError" do - it "is an Exception" do - Net::FTPError.should < Exception - end +describe "Net::FTPError" do + it "is an Exception" do + Net::FTPError.should < Exception end end diff --git a/spec/ruby/library/net-ftp/FTPPermError_spec.rb b/spec/ruby/library/net-ftp/FTPPermError_spec.rb index 0da35e7d82cd80..b43e12c5035564 100644 --- a/spec/ruby/library/net-ftp/FTPPermError_spec.rb +++ b/spec/ruby/library/net-ftp/FTPPermError_spec.rb @@ -1,15 +1,12 @@ require_relative '../../spec_helper' +require 'net/ftp' -ruby_version_is ""..."3.1" do - require 'net/ftp' - - describe "Net::FTPPermError" do - it "is an Exception" do - Net::FTPPermError.should < Exception - end +describe "Net::FTPPermError" do + it "is an Exception" do + Net::FTPPermError.should < Exception + end - it "is a subclass of Net::FTPError" do - Net::FTPPermError.should < Net::FTPError - end + it "is a subclass of Net::FTPError" do + Net::FTPPermError.should < Net::FTPError end end diff --git a/spec/ruby/library/net-ftp/FTPProtoError_spec.rb b/spec/ruby/library/net-ftp/FTPProtoError_spec.rb index 20e30dd2dd39e4..e7abbc0dd81acf 100644 --- a/spec/ruby/library/net-ftp/FTPProtoError_spec.rb +++ b/spec/ruby/library/net-ftp/FTPProtoError_spec.rb @@ -1,15 +1,12 @@ require_relative '../../spec_helper' +require 'net/ftp' -ruby_version_is ""..."3.1" do - require 'net/ftp' - - describe "Net::FTPProtoError" do - it "is an Exception" do - Net::FTPProtoError.should < Exception - end +describe "Net::FTPProtoError" do + it "is an Exception" do + Net::FTPProtoError.should < Exception + end - it "is a subclass of Net::FTPError" do - Net::FTPPermError.should < Net::FTPError - end + it "is a subclass of Net::FTPError" do + Net::FTPPermError.should < Net::FTPError end end diff --git a/spec/ruby/library/net-ftp/FTPReplyError_spec.rb b/spec/ruby/library/net-ftp/FTPReplyError_spec.rb index cc774aabe5baf5..fcc7501fc11f4c 100644 --- a/spec/ruby/library/net-ftp/FTPReplyError_spec.rb +++ b/spec/ruby/library/net-ftp/FTPReplyError_spec.rb @@ -1,15 +1,12 @@ require_relative '../../spec_helper' +require 'net/ftp' -ruby_version_is ""..."3.1" do - require 'net/ftp' - - describe "Net::FTPReplyError" do - it "is an Exception" do - Net::FTPReplyError.should < Exception - end +describe "Net::FTPReplyError" do + it "is an Exception" do + Net::FTPReplyError.should < Exception + end - it "is a subclass of Net::FTPError" do - Net::FTPPermError.should < Net::FTPError - end + it "is a subclass of Net::FTPError" do + Net::FTPPermError.should < Net::FTPError end end diff --git a/spec/ruby/library/net-ftp/FTPTempError_spec.rb b/spec/ruby/library/net-ftp/FTPTempError_spec.rb index e2fbdfd842e08f..f4b045dfb5ba1d 100644 --- a/spec/ruby/library/net-ftp/FTPTempError_spec.rb +++ b/spec/ruby/library/net-ftp/FTPTempError_spec.rb @@ -1,15 +1,12 @@ require_relative '../../spec_helper' +require 'net/ftp' -ruby_version_is ""..."3.1" do - require 'net/ftp' - - describe "Net::FTPTempError" do - it "is an Exception" do - Net::FTPTempError.should < Exception - end +describe "Net::FTPTempError" do + it "is an Exception" do + Net::FTPTempError.should < Exception + end - it "is a subclass of Net::FTPError" do - Net::FTPPermError.should < Net::FTPError - end + it "is a subclass of Net::FTPError" do + Net::FTPPermError.should < Net::FTPError end end diff --git a/spec/ruby/library/net-ftp/abort_spec.rb b/spec/ruby/library/net-ftp/abort_spec.rb index f27cae30ad55d7..335d056512a6c5 100644 --- a/spec/ruby/library/net-ftp/abort_spec.rb +++ b/spec/ruby/library/net-ftp/abort_spec.rb @@ -1,65 +1,62 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#abort" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#abort" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the ABOR command to the server" do - -> { @ftp.abort }.should_not raise_error - end + it "sends the ABOR command to the server" do + -> { @ftp.abort }.should_not raise_error + end - it "ignores the response" do - @ftp.abort - @ftp.last_response.should == "220 Dummy FTP Server ready!\n" - end + it "ignores the response" do + @ftp.abort + @ftp.last_response.should == "220 Dummy FTP Server ready!\n" + end - it "returns the full response" do - @ftp.abort.should == "226 Closing data connection. (ABOR)\n" - end + it "returns the full response" do + @ftp.abort.should == "226 Closing data connection. (ABOR)\n" + end - it "does not raise any error when the response code is 225" do - @server.should_receive(:abor).and_respond("225 Data connection open; no transfer in progress.") - -> { @ftp.abort }.should_not raise_error - end + it "does not raise any error when the response code is 225" do + @server.should_receive(:abor).and_respond("225 Data connection open; no transfer in progress.") + -> { @ftp.abort }.should_not raise_error + end - it "does not raise any error when the response code is 226" do - @server.should_receive(:abor).and_respond("226 Closing data connection.") - -> { @ftp.abort }.should_not raise_error - end + it "does not raise any error when the response code is 226" do + @server.should_receive(:abor).and_respond("226 Closing data connection.") + -> { @ftp.abort }.should_not raise_error + end - it "raises a Net::FTPProtoError when the response code is 500" do - @server.should_receive(:abor).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.abort }.should raise_error(Net::FTPProtoError) - end + it "raises a Net::FTPProtoError when the response code is 500" do + @server.should_receive(:abor).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.abort }.should raise_error(Net::FTPProtoError) + end - it "raises a Net::FTPProtoError when the response code is 501" do - @server.should_receive(:abor).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.abort }.should raise_error(Net::FTPProtoError) - end + it "raises a Net::FTPProtoError when the response code is 501" do + @server.should_receive(:abor).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.abort }.should raise_error(Net::FTPProtoError) + end - it "raises a Net::FTPProtoError when the response code is 502" do - @server.should_receive(:abor).and_respond("502 Command not implemented.") - -> { @ftp.abort }.should raise_error(Net::FTPProtoError) - end + it "raises a Net::FTPProtoError when the response code is 502" do + @server.should_receive(:abor).and_respond("502 Command not implemented.") + -> { @ftp.abort }.should raise_error(Net::FTPProtoError) + end - it "raises a Net::FTPProtoError when the response code is 421" do - @server.should_receive(:abor).and_respond("421 Service not available, closing control connection.") - -> { @ftp.abort }.should raise_error(Net::FTPProtoError) - end + it "raises a Net::FTPProtoError when the response code is 421" do + @server.should_receive(:abor).and_respond("421 Service not available, closing control connection.") + -> { @ftp.abort }.should raise_error(Net::FTPProtoError) end end diff --git a/spec/ruby/library/net-ftp/acct_spec.rb b/spec/ruby/library/net-ftp/acct_spec.rb index 498d583ebb8b56..ab093448a26021 100644 --- a/spec/ruby/library/net-ftp/acct_spec.rb +++ b/spec/ruby/library/net-ftp/acct_spec.rb @@ -1,61 +1,58 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#acct" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "writes the ACCT command to the server" do - @ftp.acct("my_account") - @ftp.last_response.should == "230 User 'my_account' logged in, proceed. (ACCT)\n" - end - - it "returns nil" do - @ftp.acct("my_account").should == nil - end - - it "does not raise any error when the response code is 230" do - @server.should_receive(:acct).and_respond("230 User logged in, proceed.") - -> { @ftp.acct("my_account") }.should_not raise_error - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:acct).and_respond("530 Not logged in.") - -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:acct).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:acct).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 503" do - @server.should_receive(:acct).and_respond("503 Bad sequence of commands.") - -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:acct).and_respond("421 Service not available, closing control connection.") - -> { @ftp.acct("my_account") }.should raise_error(Net::FTPTempError) - end +describe "Net::FTP#acct" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "writes the ACCT command to the server" do + @ftp.acct("my_account") + @ftp.last_response.should == "230 User 'my_account' logged in, proceed. (ACCT)\n" + end + + it "returns nil" do + @ftp.acct("my_account").should == nil + end + + it "does not raise any error when the response code is 230" do + @server.should_receive(:acct).and_respond("230 User logged in, proceed.") + -> { @ftp.acct("my_account") }.should_not raise_error + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:acct).and_respond("530 Not logged in.") + -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:acct).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:acct).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 503" do + @server.should_receive(:acct).and_respond("503 Bad sequence of commands.") + -> { @ftp.acct("my_account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:acct).and_respond("421 Service not available, closing control connection.") + -> { @ftp.acct("my_account") }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/binary_spec.rb b/spec/ruby/library/net-ftp/binary_spec.rb index 3d6c7d6497d04c..1e0585b7954264 100644 --- a/spec/ruby/library/net-ftp/binary_spec.rb +++ b/spec/ruby/library/net-ftp/binary_spec.rb @@ -1,27 +1,24 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#binary" do + it "returns true when self is in binary mode" do + ftp = Net::FTP.new + ftp.binary.should be_true - describe "Net::FTP#binary" do - it "returns true when self is in binary mode" do - ftp = Net::FTP.new - ftp.binary.should be_true - - ftp.binary = false - ftp.binary.should be_false - end + ftp.binary = false + ftp.binary.should be_false end +end - describe "Net::FTP#binary=" do - it "sets self to binary mode when passed true" do - ftp = Net::FTP.new +describe "Net::FTP#binary=" do + it "sets self to binary mode when passed true" do + ftp = Net::FTP.new - ftp.binary = true - ftp.binary.should be_true + ftp.binary = true + ftp.binary.should be_true - ftp.binary = false - ftp.binary.should be_false - end + ftp.binary = false + ftp.binary.should be_false end end diff --git a/spec/ruby/library/net-ftp/chdir_spec.rb b/spec/ruby/library/net-ftp/chdir_spec.rb index 427877db9ba542..cc129b5e42c391 100644 --- a/spec/ruby/library/net-ftp/chdir_spec.rb +++ b/spec/ruby/library/net-ftp/chdir_spec.rb @@ -1,102 +1,99 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#chdir" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#chdir" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - describe "when switching to the parent directory" do - it "sends the 'CDUP' command to the server" do - @ftp.chdir("..") - @ftp.last_response.should == "200 Command okay. (CDUP)\n" - end - - it "returns nil" do - @ftp.chdir("..").should be_nil - end - - it "does not raise a Net::FTPPermError when the response code is 500" do - @server.should_receive(:cdup).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.chdir("..") }.should_not raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:cdup).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:cdup).and_respond("502 Command not implemented.") - -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:cdup).and_respond("421 Service not available, closing control connection.") - -> { @ftp.chdir("..") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:cdup).and_respond("530 Not logged in.") - -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:cdup).and_respond("550 Requested action not taken.") - -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) - end - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "writes the 'CWD' command with the passed directory to the socket" do - @ftp.chdir("test") - @ftp.last_response.should == "200 Command okay. (CWD test)\n" + describe "when switching to the parent directory" do + it "sends the 'CDUP' command to the server" do + @ftp.chdir("..") + @ftp.last_response.should == "200 Command okay. (CDUP)\n" end it "returns nil" do - @ftp.chdir("test").should be_nil + @ftp.chdir("..").should be_nil end - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:cwd).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + it "does not raise a Net::FTPPermError when the response code is 500" do + @server.should_receive(:cdup).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.chdir("..") }.should_not raise_error(Net::FTPPermError) end it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:cwd).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + @server.should_receive(:cdup).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) end it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:cwd).and_respond("502 Command not implemented.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + @server.should_receive(:cdup).and_respond("502 Command not implemented.") + -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) end it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:cwd).and_respond("421 Service not available, closing control connection.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPTempError) + @server.should_receive(:cdup).and_respond("421 Service not available, closing control connection.") + -> { @ftp.chdir("..") }.should raise_error(Net::FTPTempError) end it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:cwd).and_respond("530 Not logged in.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + @server.should_receive(:cdup).and_respond("530 Not logged in.") + -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) end it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:cwd).and_respond("550 Requested action not taken.") - -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + @server.should_receive(:cdup).and_respond("550 Requested action not taken.") + -> { @ftp.chdir("..") }.should raise_error(Net::FTPPermError) end end + + it "writes the 'CWD' command with the passed directory to the socket" do + @ftp.chdir("test") + @ftp.last_response.should == "200 Command okay. (CWD test)\n" + end + + it "returns nil" do + @ftp.chdir("test").should be_nil + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:cwd).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:cwd).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:cwd).and_respond("502 Command not implemented.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:cwd).and_respond("421 Service not available, closing control connection.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:cwd).and_respond("530 Not logged in.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:cwd).and_respond("550 Requested action not taken.") + -> { @ftp.chdir("test") }.should raise_error(Net::FTPPermError) + end end diff --git a/spec/ruby/library/net-ftp/close_spec.rb b/spec/ruby/library/net-ftp/close_spec.rb index 0d5f0d0cfb1dc4..183f14a84b553a 100644 --- a/spec/ruby/library/net-ftp/close_spec.rb +++ b/spec/ruby/library/net-ftp/close_spec.rb @@ -1,33 +1,30 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#close" do + before :each do + @socket = mock("Socket") + @socket.stub!(:closed?).and_return(false) + @socket.stub!(:read_timeout).and_return(60) + @socket.stub!(:read_timeout=).and_return(3) - describe "Net::FTP#close" do - before :each do - @socket = mock("Socket") - @socket.stub!(:closed?).and_return(false) - @socket.stub!(:read_timeout).and_return(60) - @socket.stub!(:read_timeout=).and_return(3) - - @ftp = Net::FTP.new - @ftp.instance_variable_set(:@sock, @socket) - end + @ftp = Net::FTP.new + @ftp.instance_variable_set(:@sock, @socket) + end - it "closes the socket" do - @socket.should_receive(:close) - @ftp.close.should be_nil - end + it "closes the socket" do + @socket.should_receive(:close) + @ftp.close.should be_nil + end - it "does not try to close the socket if it has already been closed" do - @socket.should_receive(:closed?).and_return(true) - @socket.should_not_receive(:close) - @ftp.close.should be_nil - end + it "does not try to close the socket if it has already been closed" do + @socket.should_receive(:closed?).and_return(true) + @socket.should_not_receive(:close) + @ftp.close.should be_nil + end - it "does not try to close the socket if it is nil" do - @ftp.instance_variable_set(:@sock, nil) - @ftp.close.should be_nil - end + it "does not try to close the socket if it is nil" do + @ftp.instance_variable_set(:@sock, nil) + @ftp.close.should be_nil end end diff --git a/spec/ruby/library/net-ftp/closed_spec.rb b/spec/ruby/library/net-ftp/closed_spec.rb index 662ed2b71e0400..84001cdc0f585c 100644 --- a/spec/ruby/library/net-ftp/closed_spec.rb +++ b/spec/ruby/library/net-ftp/closed_spec.rb @@ -1,24 +1,21 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#closed?" do + before :each do + @socket = mock("Socket") - describe "Net::FTP#closed?" do - before :each do - @socket = mock("Socket") - - @ftp = Net::FTP.new - @ftp.instance_variable_set(:@sock, @socket) - end + @ftp = Net::FTP.new + @ftp.instance_variable_set(:@sock, @socket) + end - it "returns true when the socket is closed" do - @socket.should_receive(:closed?).and_return(true) - @ftp.closed?.should be_true - end + it "returns true when the socket is closed" do + @socket.should_receive(:closed?).and_return(true) + @ftp.closed?.should be_true + end - it "returns true when the socket is nil" do - @ftp.instance_variable_set(:@sock, nil) - @ftp.closed?.should be_true - end + it "returns true when the socket is nil" do + @ftp.instance_variable_set(:@sock, nil) + @ftp.closed?.should be_true end end diff --git a/spec/ruby/library/net-ftp/connect_spec.rb b/spec/ruby/library/net-ftp/connect_spec.rb index db79a78cb4f31c..129fc243340be2 100644 --- a/spec/ruby/library/net-ftp/connect_spec.rb +++ b/spec/ruby/library/net-ftp/connect_spec.rb @@ -1,52 +1,49 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - # TODO: Add specs for using the SOCKSSocket - describe "Net::FTP#connect" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - end - - after :each do - @server.connect_message = nil - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "tries to connect to the FTP Server on the given host and port" do - -> { @ftp.connect(@server.hostname, @server.server_port) }.should_not raise_error - end - - it "returns nil" do - @ftp.connect(@server.hostname, @server.server_port).should be_nil - end - - it "prints a small debug line when in debug mode" do - @ftp.debug_mode = true - -> { @ftp.connect(@server.hostname, @server.server_port) }.should output(/#{"connect: "}#{@server.hostname}#{", "}#{@server.server_port}#{"\\nget: 220 Dummy FTP Server ready!"}/) - @ftp.debug_mode = false - end - - it "does not raise any error when the response code is 220" do - @server.connect_message = "220 Dummy FTP Server ready!" - -> { @ftp.connect(@server.hostname, @server.server_port) }.should_not raise_error - end - - it "raises a Net::FTPReplyError when the response code is 120" do - @server.connect_message = "120 Service ready in nnn minutes." - -> { @ftp.connect(@server.hostname, @server.server_port) }.should raise_error(Net::FTPReplyError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.connect_message = "421 Service not available, closing control connection." - -> { @ftp.connect(@server.hostname, @server.server_port) }.should raise_error(Net::FTPTempError) - end +# TODO: Add specs for using the SOCKSSocket +describe "Net::FTP#connect" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + end + + after :each do + @server.connect_message = nil + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "tries to connect to the FTP Server on the given host and port" do + -> { @ftp.connect(@server.hostname, @server.server_port) }.should_not raise_error + end + + it "returns nil" do + @ftp.connect(@server.hostname, @server.server_port).should be_nil + end + + it "prints a small debug line when in debug mode" do + @ftp.debug_mode = true + -> { @ftp.connect(@server.hostname, @server.server_port) }.should output(/#{"connect: "}#{@server.hostname}#{", "}#{@server.server_port}#{"\\nget: 220 Dummy FTP Server ready!"}/) + @ftp.debug_mode = false + end + + it "does not raise any error when the response code is 220" do + @server.connect_message = "220 Dummy FTP Server ready!" + -> { @ftp.connect(@server.hostname, @server.server_port) }.should_not raise_error + end + + it "raises a Net::FTPReplyError when the response code is 120" do + @server.connect_message = "120 Service ready in nnn minutes." + -> { @ftp.connect(@server.hostname, @server.server_port) }.should raise_error(Net::FTPReplyError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.connect_message = "421 Service not available, closing control connection." + -> { @ftp.connect(@server.hostname, @server.server_port) }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/debug_mode_spec.rb b/spec/ruby/library/net-ftp/debug_mode_spec.rb index 4cb96c6a35f19d..f2ef53c089670a 100644 --- a/spec/ruby/library/net-ftp/debug_mode_spec.rb +++ b/spec/ruby/library/net-ftp/debug_mode_spec.rb @@ -1,26 +1,23 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#debug_mode" do + it "returns true when self is in debug mode" do + ftp = Net::FTP.new + ftp.debug_mode.should be_false - describe "Net::FTP#debug_mode" do - it "returns true when self is in debug mode" do - ftp = Net::FTP.new - ftp.debug_mode.should be_false - - ftp.debug_mode = true - ftp.debug_mode.should be_true - end + ftp.debug_mode = true + ftp.debug_mode.should be_true end +end - describe "Net::FTP#debug_mode=" do - it "sets self into debug mode when passed true" do - ftp = Net::FTP.new - ftp.debug_mode = true - ftp.debug_mode.should be_true +describe "Net::FTP#debug_mode=" do + it "sets self into debug mode when passed true" do + ftp = Net::FTP.new + ftp.debug_mode = true + ftp.debug_mode.should be_true - ftp.debug_mode = false - ftp.debug_mode.should be_false - end + ftp.debug_mode = false + ftp.debug_mode.should be_false end end diff --git a/spec/ruby/library/net-ftp/default_passive_spec.rb b/spec/ruby/library/net-ftp/default_passive_spec.rb index 517830aa1dffa0..3f14f6187e6c7f 100644 --- a/spec/ruby/library/net-ftp/default_passive_spec.rb +++ b/spec/ruby/library/net-ftp/default_passive_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - - describe "Net::FTP#default_passive" do - it "is true by default" do - ruby_exe(fixture(__FILE__, "default_passive.rb")).should == "true\ntrue\n" - end +describe "Net::FTP#default_passive" do + it "is true by default" do + ruby_exe(fixture(__FILE__, "default_passive.rb")).should == "true\ntrue\n" end end diff --git a/spec/ruby/library/net-ftp/delete_spec.rb b/spec/ruby/library/net-ftp/delete_spec.rb index 41e0396c653682..bfb7da1ffefc86 100644 --- a/spec/ruby/library/net-ftp/delete_spec.rb +++ b/spec/ruby/library/net-ftp/delete_spec.rb @@ -1,62 +1,59 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#delete" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the DELE command with the passed filename to the server" do - @ftp.delete("test.file") - @ftp.last_response.should == "250 Requested file action okay, completed. (DELE test.file)\n" - end - - it "raises a Net::FTPTempError when the response code is 450" do - @server.should_receive(:dele).and_respond("450 Requested file action not taken.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:dele).and_respond("550 Requested action not taken.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:dele).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:dele).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:dele).and_respond("502 Command not implemented.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:dele).and_respond("421 Service not available, closing control connection.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:dele).and_respond("530 Not logged in.") - -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) - end +describe "Net::FTP#delete" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the DELE command with the passed filename to the server" do + @ftp.delete("test.file") + @ftp.last_response.should == "250 Requested file action okay, completed. (DELE test.file)\n" + end + + it "raises a Net::FTPTempError when the response code is 450" do + @server.should_receive(:dele).and_respond("450 Requested file action not taken.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:dele).and_respond("550 Requested action not taken.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:dele).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:dele).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:dele).and_respond("502 Command not implemented.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:dele).and_respond("421 Service not available, closing control connection.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:dele).and_respond("530 Not logged in.") + -> { @ftp.delete("test.file") }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/dir_spec.rb b/spec/ruby/library/net-ftp/dir_spec.rb index a4b9e54965177f..894f03dd7b87b8 100644 --- a/spec/ruby/library/net-ftp/dir_spec.rb +++ b/spec/ruby/library/net-ftp/dir_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/list' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/list' - - describe "Net::FTP#dir" do - it_behaves_like :net_ftp_list, :dir - end +describe "Net::FTP#dir" do + it_behaves_like :net_ftp_list, :dir end diff --git a/spec/ruby/library/net-ftp/get_spec.rb b/spec/ruby/library/net-ftp/get_spec.rb index a4247385190faf..1bc1bd744bb851 100644 --- a/spec/ruby/library/net-ftp/get_spec.rb +++ b/spec/ruby/library/net-ftp/get_spec.rb @@ -1,24 +1,21 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/gettextfile' +require_relative 'shared/getbinaryfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/gettextfile' - require_relative 'shared/getbinaryfile' - - describe "Net::FTP#get (binary mode)" do - before :each do - @binary_mode = true - end - - it_behaves_like :net_ftp_getbinaryfile, :get +describe "Net::FTP#get (binary mode)" do + before :each do + @binary_mode = true end - describe "Net::FTP#get (text mode)" do - before :each do - @binary_mode = false - end + it_behaves_like :net_ftp_getbinaryfile, :get +end - it_behaves_like :net_ftp_gettextfile, :get +describe "Net::FTP#get (text mode)" do + before :each do + @binary_mode = false end + + it_behaves_like :net_ftp_gettextfile, :get end diff --git a/spec/ruby/library/net-ftp/getbinaryfile_spec.rb b/spec/ruby/library/net-ftp/getbinaryfile_spec.rb index 11dba38d861cd9..e9898fccc7cb10 100644 --- a/spec/ruby/library/net-ftp/getbinaryfile_spec.rb +++ b/spec/ruby/library/net-ftp/getbinaryfile_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/getbinaryfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/getbinaryfile' - - describe "Net::FTP#getbinaryfile" do - it_behaves_like :net_ftp_getbinaryfile, :getbinaryfile - end +describe "Net::FTP#getbinaryfile" do + it_behaves_like :net_ftp_getbinaryfile, :getbinaryfile end diff --git a/spec/ruby/library/net-ftp/getdir_spec.rb b/spec/ruby/library/net-ftp/getdir_spec.rb index e092f9496c1a56..756d6a23af0806 100644 --- a/spec/ruby/library/net-ftp/getdir_spec.rb +++ b/spec/ruby/library/net-ftp/getdir_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'shared/pwd' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'shared/pwd' - - describe "Net::FTP#getdir" do - it_behaves_like :net_ftp_pwd, :getdir - end +describe "Net::FTP#getdir" do + it_behaves_like :net_ftp_pwd, :getdir end diff --git a/spec/ruby/library/net-ftp/gettextfile_spec.rb b/spec/ruby/library/net-ftp/gettextfile_spec.rb index 294189d60736bf..cdd1b4c797b943 100644 --- a/spec/ruby/library/net-ftp/gettextfile_spec.rb +++ b/spec/ruby/library/net-ftp/gettextfile_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/gettextfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/gettextfile' - - describe "Net::FTP#gettextfile" do - it_behaves_like :net_ftp_gettextfile, :gettextfile - end +describe "Net::FTP#gettextfile" do + it_behaves_like :net_ftp_gettextfile, :gettextfile end diff --git a/spec/ruby/library/net-ftp/help_spec.rb b/spec/ruby/library/net-ftp/help_spec.rb index d47fe9a390de6f..c562be50b2b8bb 100644 --- a/spec/ruby/library/net-ftp/help_spec.rb +++ b/spec/ruby/library/net-ftp/help_spec.rb @@ -1,69 +1,66 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#help" do - def with_connection - yield - end +describe "Net::FTP#help" do + def with_connection + yield + end - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "writes the HELP command to the server" do - @ftp.help - @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" - end + it "writes the HELP command to the server" do + @ftp.help + @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" + end - it "returns the server's response" do - @ftp.help.should == "211 System status, or system help reply. (HELP)\n" - end + it "returns the server's response" do + @ftp.help.should == "211 System status, or system help reply. (HELP)\n" + end - it "writes the HELP command with an optional parameter to the socket" do - @ftp.help("some parameter").should == "211 System status, or system help reply. (HELP some parameter)\n" - end + it "writes the HELP command with an optional parameter to the socket" do + @ftp.help("some parameter").should == "211 System status, or system help reply. (HELP some parameter)\n" + end - it "does not raise any error when the response code is 211" do - @server.should_receive(:help).and_respond("211 System status, or system help reply.") - -> { @ftp.help }.should_not raise_error - end + it "does not raise any error when the response code is 211" do + @server.should_receive(:help).and_respond("211 System status, or system help reply.") + -> { @ftp.help }.should_not raise_error + end - it "does not raise any error when the response code is 214" do - @server.should_receive(:help).and_respond("214 Help message.") - -> { @ftp.help }.should_not raise_error - end + it "does not raise any error when the response code is 214" do + @server.should_receive(:help).and_respond("214 Help message.") + -> { @ftp.help }.should_not raise_error + end - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:help).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.help }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:help).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.help }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:help).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.help }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:help).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.help }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:help).and_respond("502 Command not implemented.") - -> { @ftp.help }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:help).and_respond("502 Command not implemented.") + -> { @ftp.help }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:help).and_respond("421 Service not available, closing control connection.") - -> { @ftp.help }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:help).and_respond("421 Service not available, closing control connection.") + -> { @ftp.help }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/initialize_spec.rb b/spec/ruby/library/net-ftp/initialize_spec.rb index 72870ffe305b2a..4d775e8dc12cc6 100644 --- a/spec/ruby/library/net-ftp/initialize_spec.rb +++ b/spec/ruby/library/net-ftp/initialize_spec.rb @@ -1,405 +1,402 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' + +describe "Net::FTP#initialize" do + before :each do + @ftp = Net::FTP.allocate + @ftp.stub!(:connect) + @port_args = [] + @port_args << 21 + end -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' + it "is private" do + Net::FTP.should have_private_instance_method(:initialize) + end - describe "Net::FTP#initialize" do - before :each do - @ftp = Net::FTP.allocate - @ftp.stub!(:connect) - @port_args = [] - @port_args << 21 - end + it "sets self into binary mode" do + @ftp.binary.should be_nil + @ftp.send(:initialize) + @ftp.binary.should be_true + end - it "is private" do - Net::FTP.should have_private_instance_method(:initialize) - end + it "sets self into active mode" do + @ftp.passive.should be_nil + @ftp.send(:initialize) + @ftp.passive.should be_false + end - it "sets self into binary mode" do - @ftp.binary.should be_nil - @ftp.send(:initialize) - @ftp.binary.should be_true - end + it "sets self into non-debug mode" do + @ftp.debug_mode.should be_nil + @ftp.send(:initialize) + @ftp.debug_mode.should be_false + end - it "sets self into active mode" do - @ftp.passive.should be_nil - @ftp.send(:initialize) - @ftp.passive.should be_false - end + it "sets self to not resume file uploads/downloads" do + @ftp.resume.should be_nil + @ftp.send(:initialize) + @ftp.resume.should be_false + end - it "sets self into non-debug mode" do - @ftp.debug_mode.should be_nil + describe "when passed no arguments" do + it "does not try to connect" do + @ftp.should_not_receive(:connect) @ftp.send(:initialize) - @ftp.debug_mode.should be_false end + end - it "sets self to not resume file uploads/downloads" do - @ftp.resume.should be_nil - @ftp.send(:initialize) - @ftp.resume.should be_false + describe "when passed host" do + it "tries to connect to the passed host" do + @ftp.should_receive(:connect).with("localhost", *@port_args) + @ftp.send(:initialize, "localhost") end + end - describe "when passed no arguments" do - it "does not try to connect" do - @ftp.should_not_receive(:connect) - @ftp.send(:initialize) - end + describe "when passed host, user" do + it "tries to connect to the passed host" do + @ftp.should_receive(:connect).with("localhost", *@port_args) + @ftp.send(:initialize, "localhost") end - describe "when passed host" do - it "tries to connect to the passed host" do - @ftp.should_receive(:connect).with("localhost", *@port_args) - @ftp.send(:initialize, "localhost") - end + it "tries to login with the passed username" do + @ftp.should_receive(:login).with("rubyspec", nil, nil) + @ftp.send(:initialize, "localhost", "rubyspec") end + end - describe "when passed host, user" do - it "tries to connect to the passed host" do - @ftp.should_receive(:connect).with("localhost", *@port_args) - @ftp.send(:initialize, "localhost") - end - - it "tries to login with the passed username" do - @ftp.should_receive(:login).with("rubyspec", nil, nil) - @ftp.send(:initialize, "localhost", "rubyspec") - end + describe "when passed host, user, password" do + it "tries to connect to the passed host" do + @ftp.should_receive(:connect).with("localhost", *@port_args) + @ftp.send(:initialize, "localhost") end - describe "when passed host, user, password" do - it "tries to connect to the passed host" do - @ftp.should_receive(:connect).with("localhost", *@port_args) - @ftp.send(:initialize, "localhost") - end - - it "tries to login with the passed username and password" do - @ftp.should_receive(:login).with("rubyspec", "rocks", nil) - @ftp.send(:initialize, "localhost", "rubyspec", "rocks") - end + it "tries to login with the passed username and password" do + @ftp.should_receive(:login).with("rubyspec", "rocks", nil) + @ftp.send(:initialize, "localhost", "rubyspec", "rocks") end + end - describe "when passed host, user" do - it "tries to connect to the passed host" do - @ftp.should_receive(:connect).with("localhost", *@port_args) - @ftp.send(:initialize, "localhost") - end - - it "tries to login with the passed username, password and account" do - @ftp.should_receive(:login).with("rubyspec", "rocks", "account") - @ftp.send(:initialize, "localhost", "rubyspec", "rocks", "account") - end + describe "when passed host, user" do + it "tries to connect to the passed host" do + @ftp.should_receive(:connect).with("localhost", *@port_args) + @ftp.send(:initialize, "localhost") end - before :each do - @ftp.stub!(:login) + it "tries to login with the passed username, password and account" do + @ftp.should_receive(:login).with("rubyspec", "rocks", "account") + @ftp.send(:initialize, "localhost", "rubyspec", "rocks", "account") end + end - describe 'when the host' do - describe 'is set' do - describe 'and port option' do - describe 'is set' do - it 'tries to connect to the host on the specified port' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ port: 8080 }) - @ftp.should_receive(:connect).with('localhost', 8080) + before :each do + @ftp.stub!(:login) + end - @ftp.send(:initialize, 'localhost', options) - end + describe 'when the host' do + describe 'is set' do + describe 'and port option' do + describe 'is set' do + it 'tries to connect to the host on the specified port' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ port: 8080 }) + @ftp.should_receive(:connect).with('localhost', 8080) + + @ftp.send(:initialize, 'localhost', options) end + end - describe 'is not set' do - it 'tries to connect to the host without a port' do - @ftp.should_receive(:connect).with("localhost", *@port_args) + describe 'is not set' do + it 'tries to connect to the host without a port' do + @ftp.should_receive(:connect).with("localhost", *@port_args) - @ftp.send(:initialize, 'localhost') - end + @ftp.send(:initialize, 'localhost') end end + end - describe 'when the username option' do - describe 'is set' do - describe 'and the password option' do - describe 'is set' do - describe 'and the account option' do - describe 'is set' do - it 'tries to log in with the supplied parameters' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ username: 'a', password: 'topsecret', account: 'b' }) - @ftp.should_receive(:login).with('a', 'topsecret', 'b') - - @ftp.send(:initialize, 'localhost', options) - end + describe 'when the username option' do + describe 'is set' do + describe 'and the password option' do + describe 'is set' do + describe 'and the account option' do + describe 'is set' do + it 'tries to log in with the supplied parameters' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ username: 'a', password: 'topsecret', account: 'b' }) + @ftp.should_receive(:login).with('a', 'topsecret', 'b') + + @ftp.send(:initialize, 'localhost', options) end + end - describe 'is unset' do - it 'tries to log in with the supplied parameters' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ username: 'a', password: 'topsecret' }) - @ftp.should_receive(:login).with('a', 'topsecret', nil) + describe 'is unset' do + it 'tries to log in with the supplied parameters' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ username: 'a', password: 'topsecret' }) + @ftp.should_receive(:login).with('a', 'topsecret', nil) - @ftp.send(:initialize, 'localhost', options) - end + @ftp.send(:initialize, 'localhost', options) end end end + end - describe 'is unset' do - describe 'and the account option' do - describe 'is set' do - it 'tries to log in with the supplied parameters' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ username: 'a', account: 'b' }) - @ftp.should_receive(:login).with('a', nil, 'b') + describe 'is unset' do + describe 'and the account option' do + describe 'is set' do + it 'tries to log in with the supplied parameters' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ username: 'a', account: 'b' }) + @ftp.should_receive(:login).with('a', nil, 'b') - @ftp.send(:initialize, 'localhost', options) - end + @ftp.send(:initialize, 'localhost', options) end + end - describe 'is unset' do - it 'tries to log in with the supplied parameters' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ username: 'a'}) - @ftp.should_receive(:login).with('a', nil, nil) + describe 'is unset' do + it 'tries to log in with the supplied parameters' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ username: 'a'}) + @ftp.should_receive(:login).with('a', nil, nil) - @ftp.send(:initialize, 'localhost', options) - end + @ftp.send(:initialize, 'localhost', options) end end end end end + end - describe 'is not set' do - it 'does not try to log in' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({}) - @ftp.should_not_receive(:login) + describe 'is not set' do + it 'does not try to log in' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({}) + @ftp.should_not_receive(:login) - @ftp.send(:initialize, 'localhost', options) - end + @ftp.send(:initialize, 'localhost', options) end end end + end - describe 'is unset' do - it 'does not try to connect' do - @ftp.should_not_receive(:connect) + describe 'is unset' do + it 'does not try to connect' do + @ftp.should_not_receive(:connect) - @ftp.send(:initialize) - end + @ftp.send(:initialize) + end - it 'does not try to log in' do - @ftp.should_not_receive(:login) + it 'does not try to log in' do + @ftp.should_not_receive(:login) - @ftp.send(:initialize) - end + @ftp.send(:initialize) end end + end - describe 'when the passive option' do - describe 'is set' do - describe 'to true' do - it 'sets passive to true' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ passive: true }) - - @ftp.send(:initialize, nil, options) - @ftp.passive.should == true - end - end - - describe 'to false' do - it 'sets passive to false' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ passive: false }) + describe 'when the passive option' do + describe 'is set' do + describe 'to true' do + it 'sets passive to true' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ passive: true }) - @ftp.send(:initialize, nil, options) - @ftp.passive.should == false - end + @ftp.send(:initialize, nil, options) + @ftp.passive.should == true end end - describe 'is unset' do + describe 'to false' do it 'sets passive to false' do - @ftp.send(:initialize) + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ passive: false }) + + @ftp.send(:initialize, nil, options) @ftp.passive.should == false end end end - describe 'when the debug_mode option' do - describe 'is set' do - describe 'to true' do - it 'sets debug_mode to true' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ debug_mode: true }) - - @ftp.send(:initialize, nil, options) - @ftp.debug_mode.should == true - end - end + describe 'is unset' do + it 'sets passive to false' do + @ftp.send(:initialize) + @ftp.passive.should == false + end + end + end - describe 'to false' do - it 'sets debug_mode to false' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ debug_mode: false }) + describe 'when the debug_mode option' do + describe 'is set' do + describe 'to true' do + it 'sets debug_mode to true' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ debug_mode: true }) - @ftp.send(:initialize, nil, options) - @ftp.debug_mode.should == false - end + @ftp.send(:initialize, nil, options) + @ftp.debug_mode.should == true end end - describe 'is unset' do + describe 'to false' do it 'sets debug_mode to false' do - @ftp.send(:initialize) + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ debug_mode: false }) + + @ftp.send(:initialize, nil, options) @ftp.debug_mode.should == false end end end - describe 'when the open_timeout option' do - describe 'is set' do - it 'sets open_timeout to the specified value' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ open_timeout: 42 }) + describe 'is unset' do + it 'sets debug_mode to false' do + @ftp.send(:initialize) + @ftp.debug_mode.should == false + end + end + end - @ftp.send(:initialize, nil, options) - @ftp.open_timeout.should == 42 - end + describe 'when the open_timeout option' do + describe 'is set' do + it 'sets open_timeout to the specified value' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ open_timeout: 42 }) + + @ftp.send(:initialize, nil, options) + @ftp.open_timeout.should == 42 end + end - describe 'is not set' do - it 'sets open_timeout to nil' do - @ftp.send(:initialize) - @ftp.open_timeout.should == nil - end + describe 'is not set' do + it 'sets open_timeout to nil' do + @ftp.send(:initialize) + @ftp.open_timeout.should == nil end end + end - describe 'when the read_timeout option' do - describe 'is set' do - it 'sets read_timeout to the specified value' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ read_timeout: 100 }) + describe 'when the read_timeout option' do + describe 'is set' do + it 'sets read_timeout to the specified value' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ read_timeout: 100 }) - @ftp.send(:initialize, nil, options) - @ftp.read_timeout.should == 100 - end + @ftp.send(:initialize, nil, options) + @ftp.read_timeout.should == 100 end + end - describe 'is not set' do - it 'sets read_timeout to the default value' do - @ftp.send(:initialize) - @ftp.read_timeout.should == 60 - end + describe 'is not set' do + it 'sets read_timeout to the default value' do + @ftp.send(:initialize) + @ftp.read_timeout.should == 60 end end + end - describe 'when the ssl_handshake_timeout option' do - describe 'is set' do - it 'sets ssl_handshake_timeout to the specified value' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ ssl_handshake_timeout: 23 }) + describe 'when the ssl_handshake_timeout option' do + describe 'is set' do + it 'sets ssl_handshake_timeout to the specified value' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ ssl_handshake_timeout: 23 }) - @ftp.send(:initialize, nil, options) - @ftp.ssl_handshake_timeout.should == 23 - end + @ftp.send(:initialize, nil, options) + @ftp.ssl_handshake_timeout.should == 23 end + end - describe 'is not set' do - it 'sets ssl_handshake_timeout to nil' do - @ftp.send(:initialize) - @ftp.ssl_handshake_timeout.should == nil - end + describe 'is not set' do + it 'sets ssl_handshake_timeout to nil' do + @ftp.send(:initialize) + @ftp.ssl_handshake_timeout.should == nil end end + end - describe 'when the ssl option' do - describe 'is set' do - describe "and the ssl option's value is true" do - it 'initializes ssl_context to a blank SSLContext object' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ ssl: true }) + describe 'when the ssl option' do + describe 'is set' do + describe "and the ssl option's value is true" do + it 'initializes ssl_context to a blank SSLContext object' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ ssl: true }) - ssl_context = OpenSSL::SSL::SSLContext.allocate - ssl_context.stub!(:set_params) + ssl_context = OpenSSL::SSL::SSLContext.allocate + ssl_context.stub!(:set_params) - OpenSSL::SSL::SSLContext.should_receive(:new).and_return(ssl_context) - ssl_context.should_receive(:set_params).with({}) + OpenSSL::SSL::SSLContext.should_receive(:new).and_return(ssl_context) + ssl_context.should_receive(:set_params).with({}) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@ssl_context).should == ssl_context - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@ssl_context).should == ssl_context end + end - describe "and the ssl option's value is a hash" do - it 'initializes ssl_context to a configured SSLContext object' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ ssl: {key: 'value'} }) + describe "and the ssl option's value is a hash" do + it 'initializes ssl_context to a configured SSLContext object' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ ssl: {key: 'value'} }) - ssl_context = OpenSSL::SSL::SSLContext.allocate - ssl_context.stub!(:set_params) + ssl_context = OpenSSL::SSL::SSLContext.allocate + ssl_context.stub!(:set_params) - OpenSSL::SSL::SSLContext.should_receive(:new).and_return(ssl_context) - ssl_context.should_receive(:set_params).with({key: 'value'}) + OpenSSL::SSL::SSLContext.should_receive(:new).and_return(ssl_context) + ssl_context.should_receive(:set_params).with({key: 'value'}) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@ssl_context).should == ssl_context - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@ssl_context).should == ssl_context end + end - describe 'and private_data_connection' do - describe 'is set' do - it 'sets private_data_connection to that value' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ ssl: true, private_data_connection: 'true' }) + describe 'and private_data_connection' do + describe 'is set' do + it 'sets private_data_connection to that value' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ ssl: true, private_data_connection: 'true' }) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@private_data_connection).should == 'true' - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@private_data_connection).should == 'true' end + end - describe 'is not set' do - it 'sets private_data_connection to nil' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ ssl: true }) + describe 'is not set' do + it 'sets private_data_connection to nil' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ ssl: true }) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@private_data_connection).should == true - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@private_data_connection).should == true end end end + end - describe 'is not set' do - it 'sets ssl_context to nil' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({}) + describe 'is not set' do + it 'sets ssl_context to nil' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({}) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@ssl_context).should == nil - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@ssl_context).should == nil + end - describe 'private_data_connection' do - describe 'is set' do - it 'raises an ArgumentError' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({ private_data_connection: true }) + describe 'private_data_connection' do + describe 'is set' do + it 'raises an ArgumentError' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({ private_data_connection: true }) - -> { - @ftp.send(:initialize, nil, options) - }.should raise_error(ArgumentError, /private_data_connection can be set to true only when ssl is enabled/) - end + -> { + @ftp.send(:initialize, nil, options) + }.should raise_error(ArgumentError, /private_data_connection can be set to true only when ssl is enabled/) end + end - describe 'is not set' do - it 'sets private_data_connection to false' do - options = mock('ftp initialize options') - options.should_receive(:to_hash).and_return({}) + describe 'is not set' do + it 'sets private_data_connection to false' do + options = mock('ftp initialize options') + options.should_receive(:to_hash).and_return({}) - @ftp.send(:initialize, nil, options) - @ftp.instance_variable_get(:@private_data_connection).should == false - end + @ftp.send(:initialize, nil, options) + @ftp.instance_variable_get(:@private_data_connection).should == false end end end diff --git a/spec/ruby/library/net-ftp/last_response_code_spec.rb b/spec/ruby/library/net-ftp/last_response_code_spec.rb index 0feed02f5c2972..c17c28f0f8d637 100644 --- a/spec/ruby/library/net-ftp/last_response_code_spec.rb +++ b/spec/ruby/library/net-ftp/last_response_code_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'shared/last_response_code' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'shared/last_response_code' - require_relative 'fixtures/server' - - describe "Net::FTP#last_response_code" do - it_behaves_like :net_ftp_last_response_code, :last_response_code - end +describe "Net::FTP#last_response_code" do + it_behaves_like :net_ftp_last_response_code, :last_response_code end diff --git a/spec/ruby/library/net-ftp/last_response_spec.rb b/spec/ruby/library/net-ftp/last_response_spec.rb index ba12c9c91aec57..c9d9d70f35a732 100644 --- a/spec/ruby/library/net-ftp/last_response_spec.rb +++ b/spec/ruby/library/net-ftp/last_response_spec.rb @@ -1,28 +1,25 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#last_response" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#last_response" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "returns the last response" do - @ftp.last_response.should == "220 Dummy FTP Server ready!\n" - @ftp.help - @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" - end + it "returns the last response" do + @ftp.last_response.should == "220 Dummy FTP Server ready!\n" + @ftp.help + @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" end end diff --git a/spec/ruby/library/net-ftp/lastresp_spec.rb b/spec/ruby/library/net-ftp/lastresp_spec.rb index 020893664a4f03..e0c1b862a052b2 100644 --- a/spec/ruby/library/net-ftp/lastresp_spec.rb +++ b/spec/ruby/library/net-ftp/lastresp_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'shared/last_response_code' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'shared/last_response_code' - require_relative 'fixtures/server' - - describe "Net::FTP#lastresp" do - it_behaves_like :net_ftp_last_response_code, :lastresp - end +describe "Net::FTP#lastresp" do + it_behaves_like :net_ftp_last_response_code, :lastresp end diff --git a/spec/ruby/library/net-ftp/list_spec.rb b/spec/ruby/library/net-ftp/list_spec.rb index 8d880cf7352f33..6cb1bbc4b8e4e9 100644 --- a/spec/ruby/library/net-ftp/list_spec.rb +++ b/spec/ruby/library/net-ftp/list_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/list' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/list' - - describe "Net::FTP#list" do - it_behaves_like :net_ftp_list, :list - end +describe "Net::FTP#list" do + it_behaves_like :net_ftp_list, :list end diff --git a/spec/ruby/library/net-ftp/login_spec.rb b/spec/ruby/library/net-ftp/login_spec.rb index 5c296d5a48852a..0de2f5cc630bf8 100644 --- a/spec/ruby/library/net-ftp/login_spec.rb +++ b/spec/ruby/library/net-ftp/login_spec.rb @@ -1,198 +1,195 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#login" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#login" do + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + describe "when passed no arguments" do + it "sends the USER command with 'anonymous' as name to the server" do + @ftp.login + @server.login_user.should == "anonymous" + end + + it "sends 'anonymous@' as a password when required" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @ftp.login + @server.login_pass.should == "anonymous@" + end + + it "raises a Net::FTPReplyError when the server requests an account" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @server.should_receive(:pass).and_respond("332 Need account for login.") + -> { @ftp.login }.should raise_error(Net::FTPReplyError) + end + end + + describe "when passed name" do + it "sends the USER command with the passed name to the server" do + @ftp.login("rubyspec") + @server.login_user.should == "rubyspec" + end + + it "raises a Net::FTPReplyError when the server requests a password, but none was given" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + -> { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError) + end + + it "raises a Net::FTPReplyError when the server requests an account, but none was given" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @server.should_receive(:pass).and_respond("332 Need account for login.") + -> { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError) + end + end + + describe "when passed name, password" do + it "sends the USER command with the passed name to the server" do + @ftp.login("rubyspec", "rocks") + @server.login_user.should == "rubyspec" + end + + it "sends the passed password when required" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @ftp.login("rubyspec", "rocks") + @server.login_pass.should == "rocks" + end + + it "raises a Net::FTPReplyError when the server requests an account" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @server.should_receive(:pass).and_respond("332 Need account for login.") + -> { @ftp.login("rubyspec", "rocks") }.should raise_error(Net::FTPReplyError) + end + end + + describe "when passed name, password, account" do + it "sends the USER command with the passed name to the server" do + @ftp.login("rubyspec", "rocks", "account") + @server.login_user.should == "rubyspec" + end + + it "sends the passed password when required" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @ftp.login("rubyspec", "rocks", "account") + @server.login_pass.should == "rocks" + end + + it "sends the passed account when required" do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @server.should_receive(:pass).and_respond("332 Need account for login.") + @ftp.login("rubyspec", "rocks", "account") + @server.login_acct.should == "account" + end + end + + describe "when the USER command fails" do + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:user).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:user).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:user).and_respond("502 Command not implemented.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:user).and_respond("421 Service not available, closing control connection.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:user).and_respond("530 Not logged in.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + end + + describe "when the PASS command fails" do before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - describe "when passed no arguments" do - it "sends the USER command with 'anonymous' as name to the server" do - @ftp.login - @server.login_user.should == "anonymous" - end - - it "sends 'anonymous@' as a password when required" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @ftp.login - @server.login_pass.should == "anonymous@" - end - - it "raises a Net::FTPReplyError when the server requests an account" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @server.should_receive(:pass).and_respond("332 Need account for login.") - -> { @ftp.login }.should raise_error(Net::FTPReplyError) - end - end - - describe "when passed name" do - it "sends the USER command with the passed name to the server" do - @ftp.login("rubyspec") - @server.login_user.should == "rubyspec" - end - - it "raises a Net::FTPReplyError when the server requests a password, but none was given" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - -> { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError) - end - - it "raises a Net::FTPReplyError when the server requests an account, but none was given" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @server.should_receive(:pass).and_respond("332 Need account for login.") - -> { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError) - end - end - - describe "when passed name, password" do - it "sends the USER command with the passed name to the server" do - @ftp.login("rubyspec", "rocks") - @server.login_user.should == "rubyspec" - end - - it "sends the passed password when required" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @ftp.login("rubyspec", "rocks") - @server.login_pass.should == "rocks" - end - - it "raises a Net::FTPReplyError when the server requests an account" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @server.should_receive(:pass).and_respond("332 Need account for login.") - -> { @ftp.login("rubyspec", "rocks") }.should raise_error(Net::FTPReplyError) - end - end - - describe "when passed name, password, account" do - it "sends the USER command with the passed name to the server" do - @ftp.login("rubyspec", "rocks", "account") - @server.login_user.should == "rubyspec" - end - - it "sends the passed password when required" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @ftp.login("rubyspec", "rocks", "account") - @server.login_pass.should == "rocks" - end - - it "sends the passed account when required" do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @server.should_receive(:pass).and_respond("332 Need account for login.") - @ftp.login("rubyspec", "rocks", "account") - @server.login_acct.should == "account" - end - end - - describe "when the USER command fails" do - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:user).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:user).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:user).and_respond("502 Command not implemented.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:user).and_respond("421 Service not available, closing control connection.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:user).and_respond("530 Not logged in.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - end - - describe "when the PASS command fails" do - before :each do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - end - - it "does not raise an Error when the response code is 202" do - @server.should_receive(:pass).and_respond("202 Command not implemented, superfluous at this site.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:pass).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:pass).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:pass).and_respond("502 Command not implemented.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:pass).and_respond("421 Service not available, closing control connection.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:pass).and_respond("530 Not logged in.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - end - - describe "when the ACCT command fails" do - before :each do - @server.should_receive(:user).and_respond("331 User name okay, need password.") - @server.should_receive(:pass).and_respond("332 Need account for login.") - end - - it "does not raise an Error when the response code is 202" do - @server.should_receive(:acct).and_respond("202 Command not implemented, superfluous at this site.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:acct).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:acct).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:acct).and_respond("502 Command not implemented.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:acct).and_respond("421 Service not available, closing control connection.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:acct).and_respond("530 Not logged in.") - -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) - end + @server.should_receive(:user).and_respond("331 User name okay, need password.") + end + + it "does not raise an Error when the response code is 202" do + @server.should_receive(:pass).and_respond("202 Command not implemented, superfluous at this site.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:pass).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:pass).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:pass).and_respond("502 Command not implemented.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:pass).and_respond("421 Service not available, closing control connection.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:pass).and_respond("530 Not logged in.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + end + + describe "when the ACCT command fails" do + before :each do + @server.should_receive(:user).and_respond("331 User name okay, need password.") + @server.should_receive(:pass).and_respond("332 Need account for login.") + end + + it "does not raise an Error when the response code is 202" do + @server.should_receive(:acct).and_respond("202 Command not implemented, superfluous at this site.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:acct).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:acct).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:acct).and_respond("502 Command not implemented.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:acct).and_respond("421 Service not available, closing control connection.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:acct).and_respond("530 Not logged in.") + -> { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError) end end end diff --git a/spec/ruby/library/net-ftp/ls_spec.rb b/spec/ruby/library/net-ftp/ls_spec.rb index 15b9f444286a17..acd7e9e52363f6 100644 --- a/spec/ruby/library/net-ftp/ls_spec.rb +++ b/spec/ruby/library/net-ftp/ls_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/list' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/list' - - describe "Net::FTP#ls" do - it_behaves_like :net_ftp_list, :ls - end +describe "Net::FTP#ls" do + it_behaves_like :net_ftp_list, :ls end diff --git a/spec/ruby/library/net-ftp/mdtm_spec.rb b/spec/ruby/library/net-ftp/mdtm_spec.rb index 204ee44885f047..a504507c84ea57 100644 --- a/spec/ruby/library/net-ftp/mdtm_spec.rb +++ b/spec/ruby/library/net-ftp/mdtm_spec.rb @@ -1,41 +1,38 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#mdtm" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#mdtm" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the MDTM with the passed filename command to the server" do - @ftp.mdtm("test.file") - @ftp.last_response.should == "213 19980705132316\n" - end + it "sends the MDTM with the passed filename command to the server" do + @ftp.mdtm("test.file") + @ftp.last_response.should == "213 19980705132316\n" + end - it "returns the last modification time of the passed file" do - @ftp.mdtm("test.file").should == "19980705132316" - end + it "returns the last modification time of the passed file" do + @ftp.mdtm("test.file").should == "19980705132316" + end - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:mdtm).and_respond("550 Requested action not taken.") - -> { @ftp.mdtm("test.file") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:mdtm).and_respond("550 Requested action not taken.") + -> { @ftp.mdtm("test.file") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.") - -> { @ftp.mdtm("test.file") }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.") + -> { @ftp.mdtm("test.file") }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/mkdir_spec.rb b/spec/ruby/library/net-ftp/mkdir_spec.rb index 6250827e929c8f..8cc6ae785e6f7b 100644 --- a/spec/ruby/library/net-ftp/mkdir_spec.rb +++ b/spec/ruby/library/net-ftp/mkdir_spec.rb @@ -1,64 +1,61 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#mkdir" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#mkdir" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the MKD command with the passed pathname to the server" do - @ftp.mkdir("test.folder") - @ftp.last_response.should == %{257 "test.folder" created.\n} - end + it "sends the MKD command with the passed pathname to the server" do + @ftp.mkdir("test.folder") + @ftp.last_response.should == %{257 "test.folder" created.\n} + end - it "returns the path to the newly created directory" do - @ftp.mkdir("test.folder").should == "test.folder" - @ftp.mkdir("/absolute/path/to/test.folder").should == "/absolute/path/to/test.folder" - @ftp.mkdir("relative/path/to/test.folder").should == "relative/path/to/test.folder" - @ftp.mkdir('/usr/dm/foo"bar').should == '/usr/dm/foo"bar' - end + it "returns the path to the newly created directory" do + @ftp.mkdir("test.folder").should == "test.folder" + @ftp.mkdir("/absolute/path/to/test.folder").should == "/absolute/path/to/test.folder" + @ftp.mkdir("relative/path/to/test.folder").should == "relative/path/to/test.folder" + @ftp.mkdir('/usr/dm/foo"bar').should == '/usr/dm/foo"bar' + end - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:mkd).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:mkd).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:mkd).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:mkd).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:mkd).and_respond("502 Command not implemented.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:mkd).and_respond("502 Command not implemented.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:mkd).and_respond("421 Service not available, closing control connection.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:mkd).and_respond("421 Service not available, closing control connection.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPTempError) + end - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:mkd).and_respond("530 Not logged in.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:mkd).and_respond("530 Not logged in.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:mkd).and_respond("550 Requested action not taken.") - -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:mkd).and_respond("550 Requested action not taken.") + -> { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/mtime_spec.rb b/spec/ruby/library/net-ftp/mtime_spec.rb index fd126a72da6f25..9dde1278a84812 100644 --- a/spec/ruby/library/net-ftp/mtime_spec.rb +++ b/spec/ruby/library/net-ftp/mtime_spec.rb @@ -1,53 +1,50 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#mtime" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#mtime" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + it "sends the MDTM with the passed filename command to the server" do + @ftp.mtime("test.file") + @ftp.last_response.should == "213 19980705132316\n" + end - it "sends the MDTM with the passed filename command to the server" do - @ftp.mtime("test.file") - @ftp.last_response.should == "213 19980705132316\n" + describe "when passed filename" do + it "returns the last modification time of the passed file as a Time object in the local time" do + @ftp.mtime("test.file").should == Time.gm("1998", "07", "05", "13", "23", "16") end + end - describe "when passed filename" do - it "returns the last modification time of the passed file as a Time object in the local time" do - @ftp.mtime("test.file").should == Time.gm("1998", "07", "05", "13", "23", "16") - end + describe "when passed filename, local_time" do + it "returns the last modification time as a Time object in UTC when local_time is true" do + @ftp.mtime("test.file", true).should == Time.local("1998", "07", "05", "13", "23", "16") end - describe "when passed filename, local_time" do - it "returns the last modification time as a Time object in UTC when local_time is true" do - @ftp.mtime("test.file", true).should == Time.local("1998", "07", "05", "13", "23", "16") - end - - it "returns the last modification time as a Time object in the local time when local_time is false" do - @ftp.mtime("test.file", false).should == Time.gm("1998", "07", "05", "13", "23", "16") - end + it "returns the last modification time as a Time object in the local time when local_time is false" do + @ftp.mtime("test.file", false).should == Time.gm("1998", "07", "05", "13", "23", "16") end + end - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:mdtm).and_respond("550 Requested action not taken.") - -> { @ftp.mtime("test.file") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:mdtm).and_respond("550 Requested action not taken.") + -> { @ftp.mtime("test.file") }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.") - -> { @ftp.mtime("test.file") }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.") + -> { @ftp.mtime("test.file") }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/nlst_spec.rb b/spec/ruby/library/net-ftp/nlst_spec.rb index 0b88e66f388f7b..2f22543af61f68 100644 --- a/spec/ruby/library/net-ftp/nlst_spec.rb +++ b/spec/ruby/library/net-ftp/nlst_spec.rb @@ -1,95 +1,92 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#nlst" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#nlst" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once + @ftp = Net::FTP.new + @ftp.passive = false + @ftp.connect(@server.hostname, @server.server_port) + end - @ftp = Net::FTP.new - @ftp.passive = false - @ftp.connect(@server.hostname, @server.server_port) - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop + describe "when passed no arguments" do + it "returns an Array containing a list of files in the current dir" do + @ftp.nlst.should == ["last_response_code.rb", "list.rb", "pwd.rb"] + @ftp.last_response.should == "226 transfer complete (NLST)\n" end + end - describe "when passed no arguments" do - it "returns an Array containing a list of files in the current dir" do - @ftp.nlst.should == ["last_response_code.rb", "list.rb", "pwd.rb"] - @ftp.last_response.should == "226 transfer complete (NLST)\n" - end + describe "when passed dir" do + it "returns an Array containing a list of files in the passed dir" do + @ftp.nlst("test.folder").should == ["last_response_code.rb", "list.rb", "pwd.rb"] + @ftp.last_response.should == "226 transfer complete (NLST test.folder)\n" end + end - describe "when passed dir" do - it "returns an Array containing a list of files in the passed dir" do - @ftp.nlst("test.folder").should == ["last_response_code.rb", "list.rb", "pwd.rb"] - @ftp.last_response.should == "226 transfer complete (NLST test.folder)\n" - end + describe "when the NLST command fails" do + it "raises a Net::FTPTempError when the response code is 450" do + @server.should_receive(:nlst).and_respond("450 Requested file action not taken..") + -> { @ftp.nlst }.should raise_error(Net::FTPTempError) end - describe "when the NLST command fails" do - it "raises a Net::FTPTempError when the response code is 450" do - @server.should_receive(:nlst).and_respond("450 Requested file action not taken..") - -> { @ftp.nlst }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:nlst).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:nlst).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:nlst).and_respond("501 Syntax error, command unrecognized.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:nlst).and_respond("501 Syntax error, command unrecognized.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:nlst).and_respond("502 Command not implemented.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:nlst).and_respond("502 Command not implemented.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:nlst).and_respond("421 Service not available, closing control connection.") - -> { @ftp.nlst }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:nlst).and_respond("421 Service not available, closing control connection.") + -> { @ftp.nlst }.should raise_error(Net::FTPTempError) + end - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:nlst).and_respond("530 Not logged in.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:nlst).and_respond("530 Not logged in.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) end + end - describe "when opening the data port fails" do - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:eprt).and_respond("500 Syntax error, command unrecognized.") - @server.should_receive(:port).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + describe "when opening the data port fails" do + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:eprt).and_respond("500 Syntax error, command unrecognized.") + @server.should_receive(:port).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:eprt).and_respond("501 Syntax error in parameters or arguments.") - @server.should_receive(:port).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:eprt).and_respond("501 Syntax error in parameters or arguments.") + @server.should_receive(:port).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:eprt).and_respond("421 Service not available, closing control connection.") - @server.should_receive(:port).and_respond("421 Service not available, closing control connection.") - -> { @ftp.nlst }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:eprt).and_respond("421 Service not available, closing control connection.") + @server.should_receive(:port).and_respond("421 Service not available, closing control connection.") + -> { @ftp.nlst }.should raise_error(Net::FTPTempError) + end - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:eprt).and_respond("530 Not logged in.") - @server.should_receive(:port).and_respond("530 Not logged in.") - -> { @ftp.nlst }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:eprt).and_respond("530 Not logged in.") + @server.should_receive(:port).and_respond("530 Not logged in.") + -> { @ftp.nlst }.should raise_error(Net::FTPPermError) end end end diff --git a/spec/ruby/library/net-ftp/noop_spec.rb b/spec/ruby/library/net-ftp/noop_spec.rb index 59a671e3cdd3f3..4743a39ef68f7a 100644 --- a/spec/ruby/library/net-ftp/noop_spec.rb +++ b/spec/ruby/library/net-ftp/noop_spec.rb @@ -1,41 +1,38 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#noop" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#noop" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the NOOP command to the server" do - @ftp.noop - @ftp.last_response.should == "200 Command okay. (NOOP)\n" - end + it "sends the NOOP command to the server" do + @ftp.noop + @ftp.last_response.should == "200 Command okay. (NOOP)\n" + end - it "returns nil" do - @ftp.noop.should be_nil - end + it "returns nil" do + @ftp.noop.should be_nil + end - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:noop).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.noop }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:noop).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.noop }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:noop).and_respond("421 Service not available, closing control connection.") - -> { @ftp.noop }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:noop).and_respond("421 Service not available, closing control connection.") + -> { @ftp.noop }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/open_spec.rb b/spec/ruby/library/net-ftp/open_spec.rb index 5641481d1aa960..e59496dc3cf35e 100644 --- a/spec/ruby/library/net-ftp/open_spec.rb +++ b/spec/ruby/library/net-ftp/open_spec.rb @@ -1,58 +1,55 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP.open" do + before :each do + @ftp = mock("Net::FTP instance") + Net::FTP.stub!(:new).and_return(@ftp) + end - describe "Net::FTP.open" do - before :each do - @ftp = mock("Net::FTP instance") - Net::FTP.stub!(:new).and_return(@ftp) + describe "when passed no block" do + it "returns a new Net::FTP instance" do + Net::FTP.open("localhost").should equal(@ftp) end - describe "when passed no block" do - it "returns a new Net::FTP instance" do - Net::FTP.open("localhost").should equal(@ftp) - end + it "passes the passed arguments down to Net::FTP.new" do + Net::FTP.should_receive(:new).with("localhost", "user", "password", "account") + Net::FTP.open("localhost", "user", "password", "account") + end + end - it "passes the passed arguments down to Net::FTP.new" do - Net::FTP.should_receive(:new).with("localhost", "user", "password", "account") - Net::FTP.open("localhost", "user", "password", "account") - end + describe "when passed a block" do + before :each do + @ftp.stub!(:close) end - describe "when passed a block" do - before :each do - @ftp.stub!(:close) + it "yields a new Net::FTP instance to the passed block" do + yielded = false + Net::FTP.open("localhost") do |ftp| + yielded = true + ftp.should equal(@ftp) end + yielded.should be_true + end - it "yields a new Net::FTP instance to the passed block" do - yielded = false - Net::FTP.open("localhost") do |ftp| - yielded = true - ftp.should equal(@ftp) - end - yielded.should be_true + it "closes the Net::FTP instance after yielding" do + Net::FTP.open("localhost") do |ftp| + ftp.should_receive(:close) end + end - it "closes the Net::FTP instance after yielding" do + it "closes the Net::FTP instance even if an exception is raised while yielding" do + begin Net::FTP.open("localhost") do |ftp| ftp.should_receive(:close) + raise ArgumentError, "some exception" end + rescue ArgumentError end + end - it "closes the Net::FTP instance even if an exception is raised while yielding" do - begin - Net::FTP.open("localhost") do |ftp| - ftp.should_receive(:close) - raise ArgumentError, "some exception" - end - rescue ArgumentError - end - end - - it "returns the block's return value" do - Net::FTP.open("localhost") { :test }.should == :test - end + it "returns the block's return value" do + Net::FTP.open("localhost") { :test }.should == :test end end end diff --git a/spec/ruby/library/net-ftp/passive_spec.rb b/spec/ruby/library/net-ftp/passive_spec.rb index 57ee534eb99990..97659f1b685b26 100644 --- a/spec/ruby/library/net-ftp/passive_spec.rb +++ b/spec/ruby/library/net-ftp/passive_spec.rb @@ -1,31 +1,28 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#passive" do + it "returns true when self is in passive mode" do + ftp = Net::FTP.new + ftp.passive.should be_false - describe "Net::FTP#passive" do - it "returns true when self is in passive mode" do - ftp = Net::FTP.new - ftp.passive.should be_false - - ftp.passive = true - ftp.passive.should be_true - end + ftp.passive = true + ftp.passive.should be_true + end - it "is the value of Net::FTP.default_value by default" do - ruby_exe(fixture(__FILE__, "passive.rb")).should == "true" - end + it "is the value of Net::FTP.default_value by default" do + ruby_exe(fixture(__FILE__, "passive.rb")).should == "true" end +end - describe "Net::FTP#passive=" do - it "sets self to passive mode when passed true" do - ftp = Net::FTP.new +describe "Net::FTP#passive=" do + it "sets self to passive mode when passed true" do + ftp = Net::FTP.new - ftp.passive = true - ftp.passive.should be_true + ftp.passive = true + ftp.passive.should be_true - ftp.passive = false - ftp.passive.should be_false - end + ftp.passive = false + ftp.passive.should be_false end end diff --git a/spec/ruby/library/net-ftp/put_spec.rb b/spec/ruby/library/net-ftp/put_spec.rb index 2f314ed314d4e7..6d40d3d5b99ace 100644 --- a/spec/ruby/library/net-ftp/put_spec.rb +++ b/spec/ruby/library/net-ftp/put_spec.rb @@ -1,24 +1,21 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/puttextfile' +require_relative 'shared/putbinaryfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/puttextfile' - require_relative 'shared/putbinaryfile' - - describe "Net::FTP#put (binary mode)" do - before :each do - @binary_mode = true - end - - it_behaves_like :net_ftp_putbinaryfile, :put +describe "Net::FTP#put (binary mode)" do + before :each do + @binary_mode = true end - describe "Net::FTP#put (text mode)" do - before :each do - @binary_mode = false - end + it_behaves_like :net_ftp_putbinaryfile, :put +end - it_behaves_like :net_ftp_puttextfile, :put +describe "Net::FTP#put (text mode)" do + before :each do + @binary_mode = false end + + it_behaves_like :net_ftp_puttextfile, :put end diff --git a/spec/ruby/library/net-ftp/putbinaryfile_spec.rb b/spec/ruby/library/net-ftp/putbinaryfile_spec.rb index 43edbd7b69a313..d0398229e56ab8 100644 --- a/spec/ruby/library/net-ftp/putbinaryfile_spec.rb +++ b/spec/ruby/library/net-ftp/putbinaryfile_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/putbinaryfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/putbinaryfile' - - describe "Net::FTP#putbinaryfile" do - it_behaves_like :net_ftp_putbinaryfile, :putbinaryfile - end +describe "Net::FTP#putbinaryfile" do + it_behaves_like :net_ftp_putbinaryfile, :putbinaryfile end diff --git a/spec/ruby/library/net-ftp/puttextfile_spec.rb b/spec/ruby/library/net-ftp/puttextfile_spec.rb index 75f7a2366302e6..b8bcac33df61ca 100644 --- a/spec/ruby/library/net-ftp/puttextfile_spec.rb +++ b/spec/ruby/library/net-ftp/puttextfile_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' +require_relative 'shared/puttextfile' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - require_relative 'shared/puttextfile' - - describe "Net::FTP#puttextfile" do - it_behaves_like :net_ftp_puttextfile, :puttextfile - end +describe "Net::FTP#puttextfile" do + it_behaves_like :net_ftp_puttextfile, :puttextfile end diff --git a/spec/ruby/library/net-ftp/pwd_spec.rb b/spec/ruby/library/net-ftp/pwd_spec.rb index a3dafdcd6496fb..992e2c4ed24845 100644 --- a/spec/ruby/library/net-ftp/pwd_spec.rb +++ b/spec/ruby/library/net-ftp/pwd_spec.rb @@ -1,56 +1,53 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#pwd" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the PWD command to the server" do - @ftp.pwd - @ftp.last_response.should == "257 \"/some/dir/\" - current directory\n" - end - - it "returns the current directory" do - @ftp.pwd.should == "/some/dir/" - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:pwd).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.pwd }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:pwd).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.pwd }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:pwd).and_respond("502 Command not implemented.") - -> { @ftp.pwd }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:pwd).and_respond("421 Service not available, closing control connection.") - -> { @ftp.pwd }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:pwd).and_respond("550 Requested action not taken.") - -> { @ftp.pwd }.should raise_error(Net::FTPPermError) - end +describe "Net::FTP#pwd" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the PWD command to the server" do + @ftp.pwd + @ftp.last_response.should == "257 \"/some/dir/\" - current directory\n" + end + + it "returns the current directory" do + @ftp.pwd.should == "/some/dir/" + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:pwd).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.pwd }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:pwd).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.pwd }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:pwd).and_respond("502 Command not implemented.") + -> { @ftp.pwd }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:pwd).and_respond("421 Service not available, closing control connection.") + -> { @ftp.pwd }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:pwd).and_respond("550 Requested action not taken.") + -> { @ftp.pwd }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/quit_spec.rb b/spec/ruby/library/net-ftp/quit_spec.rb index 3d06db91c604aa..c5352ceadabe27 100644 --- a/spec/ruby/library/net-ftp/quit_spec.rb +++ b/spec/ruby/library/net-ftp/quit_spec.rb @@ -1,36 +1,33 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#quit" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#quit" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the QUIT command to the server" do - @ftp.quit - @ftp.last_response.should == "221 OK, bye\n" - end + it "sends the QUIT command to the server" do + @ftp.quit + @ftp.last_response.should == "221 OK, bye\n" + end - it "does not close the socket automatically" do - @ftp.quit - @ftp.closed?.should be_false - end + it "does not close the socket automatically" do + @ftp.quit + @ftp.closed?.should be_false + end - it "returns nil" do - @ftp.quit.should be_nil - end + it "returns nil" do + @ftp.quit.should be_nil end end diff --git a/spec/ruby/library/net-ftp/rename_spec.rb b/spec/ruby/library/net-ftp/rename_spec.rb index 63062abb4515f2..48f81b7debfc02 100644 --- a/spec/ruby/library/net-ftp/rename_spec.rb +++ b/spec/ruby/library/net-ftp/rename_spec.rb @@ -1,97 +1,94 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#rename" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#rename" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + describe "when passed from_name, to_name" do + it "sends the RNFR command with the passed from_name and the RNTO command with the passed to_name to the server" do + @ftp.rename("from.file", "to.file") + @ftp.last_response.should == "250 Requested file action okay, completed. (Renamed from.file to to.file)\n" + end + + it "returns something" do + @ftp.rename("from.file", "to.file").should be_nil + end + end + + describe "when the RNFR command fails" do + it "raises a Net::FTPTempError when the response code is 450" do + @server.should_receive(:rnfr).and_respond("450 Requested file action not taken.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:rnfr).and_respond("550 Requested action not taken.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:rnfr).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:rnfr).and_respond("502 Command not implemented.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:rnfr).and_respond("421 Service not available, closing control connection.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) end - describe "when passed from_name, to_name" do - it "sends the RNFR command with the passed from_name and the RNTO command with the passed to_name to the server" do - @ftp.rename("from.file", "to.file") - @ftp.last_response.should == "250 Requested file action okay, completed. (Renamed from.file to to.file)\n" - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:rnfr).and_respond("530 Not logged in.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end + end + + describe "when the RNTO command fails" do + it "raises a Net::FTPPermError when the response code is 532" do + @server.should_receive(:rnfr).and_respond("532 Need account for storing files.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 553" do + @server.should_receive(:rnto).and_respond("553 Requested action not taken.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:rnto).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) + end - it "returns something" do - @ftp.rename("from.file", "to.file").should be_nil - end + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:rnto).and_respond("502 Command not implemented.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) end - describe "when the RNFR command fails" do - it "raises a Net::FTPTempError when the response code is 450" do - @server.should_receive(:rnfr).and_respond("450 Requested file action not taken.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:rnfr).and_respond("550 Requested action not taken.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:rnfr).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:rnfr).and_respond("502 Command not implemented.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:rnfr).and_respond("421 Service not available, closing control connection.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:rnfr).and_respond("530 Not logged in.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:rnto).and_respond("421 Service not available, closing control connection.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) end - describe "when the RNTO command fails" do - it "raises a Net::FTPPermError when the response code is 532" do - @server.should_receive(:rnfr).and_respond("532 Need account for storing files.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 553" do - @server.should_receive(:rnto).and_respond("553 Requested action not taken.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:rnto).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:rnto).and_respond("502 Command not implemented.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:rnto).and_respond("421 Service not available, closing control connection.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:rnto).and_respond("530 Not logged in.") - -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:rnto).and_respond("530 Not logged in.") + -> { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError) end end end diff --git a/spec/ruby/library/net-ftp/resume_spec.rb b/spec/ruby/library/net-ftp/resume_spec.rb index f58e0e45217096..6592fc5bb03dda 100644 --- a/spec/ruby/library/net-ftp/resume_spec.rb +++ b/spec/ruby/library/net-ftp/resume_spec.rb @@ -1,26 +1,23 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' +describe "Net::FTP#resume" do + it "returns true when self is set to resume uploads/downloads" do + ftp = Net::FTP.new + ftp.resume.should be_false - describe "Net::FTP#resume" do - it "returns true when self is set to resume uploads/downloads" do - ftp = Net::FTP.new - ftp.resume.should be_false - - ftp.resume = true - ftp.resume.should be_true - end + ftp.resume = true + ftp.resume.should be_true end +end - describe "Net::FTP#resume=" do - it "sets self to resume uploads/downloads when set to true" do - ftp = Net::FTP.new - ftp.resume = true - ftp.resume.should be_true +describe "Net::FTP#resume=" do + it "sets self to resume uploads/downloads when set to true" do + ftp = Net::FTP.new + ftp.resume = true + ftp.resume.should be_true - ftp.resume = false - ftp.resume.should be_false - end + ftp.resume = false + ftp.resume.should be_false end end diff --git a/spec/ruby/library/net-ftp/retrbinary_spec.rb b/spec/ruby/library/net-ftp/retrbinary_spec.rb index 4b4a171cd7b155..de024208aa42be 100644 --- a/spec/ruby/library/net-ftp/retrbinary_spec.rb +++ b/spec/ruby/library/net-ftp/retrbinary_spec.rb @@ -1,33 +1,30 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#retrbinary" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#retrbinary" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the passed command to the server" do - @ftp.retrbinary("RETR test", 4096) {} - @ftp.last_response.should == "226 Closing data connection. (RETR test)\n" - end + it "sends the passed command to the server" do + @ftp.retrbinary("RETR test", 4096) {} + @ftp.last_response.should == "226 Closing data connection. (RETR test)\n" + end - it "yields the received content as binary blocks of the passed size" do - res = [] - @ftp.retrbinary("RETR test", 10) { |bin| res << bin } - res.should == [ "This is th", "e content\n", "of the fil", "e named 't", "est'.\n" ] - end + it "yields the received content as binary blocks of the passed size" do + res = [] + @ftp.retrbinary("RETR test", 10) { |bin| res << bin } + res.should == [ "This is th", "e content\n", "of the fil", "e named 't", "est'.\n" ] end end diff --git a/spec/ruby/library/net-ftp/retrlines_spec.rb b/spec/ruby/library/net-ftp/retrlines_spec.rb index e76f621dea4287..866ecb5f409e9e 100644 --- a/spec/ruby/library/net-ftp/retrlines_spec.rb +++ b/spec/ruby/library/net-ftp/retrlines_spec.rb @@ -1,37 +1,34 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#retrlines" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#retrlines" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the passed command over the socket" do - @ftp.retrlines("LIST test.dir") {} - @ftp.last_response.should == "226 transfer complete (LIST test.dir)\n" - end + it "sends the passed command over the socket" do + @ftp.retrlines("LIST test.dir") {} + @ftp.last_response.should == "226 transfer complete (LIST test.dir)\n" + end - it "yields each received line to the passed block" do - res = [] - @ftp.retrlines("LIST test.dir") { |x| res << x } - res.should == [ - "-rw-r--r-- 1 spec staff 507 17 Jul 18:41 last_response_code.rb", - "-rw-r--r-- 1 spec staff 50 17 Jul 18:41 list.rb", - "-rw-r--r-- 1 spec staff 48 17 Jul 18:41 pwd.rb" - ] - end + it "yields each received line to the passed block" do + res = [] + @ftp.retrlines("LIST test.dir") { |x| res << x } + res.should == [ + "-rw-r--r-- 1 spec staff 507 17 Jul 18:41 last_response_code.rb", + "-rw-r--r-- 1 spec staff 50 17 Jul 18:41 list.rb", + "-rw-r--r-- 1 spec staff 48 17 Jul 18:41 pwd.rb" + ] end end diff --git a/spec/ruby/library/net-ftp/return_code_spec.rb b/spec/ruby/library/net-ftp/return_code_spec.rb index 61edbb6ce30bce..35a6232f7ee3b5 100644 --- a/spec/ruby/library/net-ftp/return_code_spec.rb +++ b/spec/ruby/library/net-ftp/return_code_spec.rb @@ -1,27 +1,24 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - - describe "Net::FTP#return_code" do - before :each do - @ftp = Net::FTP.new - end +describe "Net::FTP#return_code" do + before :each do + @ftp = Net::FTP.new + end - it "outputs a warning and returns a newline" do - -> do - @ftp.return_code.should == "\n" - end.should complain(/warning: Net::FTP#return_code is obsolete and do nothing/) - end + it "outputs a warning and returns a newline" do + -> do + @ftp.return_code.should == "\n" + end.should complain(/warning: Net::FTP#return_code is obsolete and do nothing/) end +end - describe "Net::FTP#return_code=" do - before :each do - @ftp = Net::FTP.new - end +describe "Net::FTP#return_code=" do + before :each do + @ftp = Net::FTP.new + end - it "outputs a warning" do - -> { @ftp.return_code = 123 }.should complain(/warning: Net::FTP#return_code= is obsolete and do nothing/) - end + it "outputs a warning" do + -> { @ftp.return_code = 123 }.should complain(/warning: Net::FTP#return_code= is obsolete and do nothing/) end end diff --git a/spec/ruby/library/net-ftp/rmdir_spec.rb b/spec/ruby/library/net-ftp/rmdir_spec.rb index ed03c4cde486a0..400874d60db825 100644 --- a/spec/ruby/library/net-ftp/rmdir_spec.rb +++ b/spec/ruby/library/net-ftp/rmdir_spec.rb @@ -1,61 +1,58 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#rmdir" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the RMD command with the passed pathname to the server" do - @ftp.rmdir("test.folder") - @ftp.last_response.should == "250 Requested file action okay, completed. (RMD test.folder)\n" - end - - it "returns nil" do - @ftp.rmdir("test.folder").should be_nil - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:rmd).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:rmd).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:rmd).and_respond("502 Command not implemented.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:rmd).and_respond("421 Service not available, closing control connection.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:rmd).and_respond("530 Not logged in.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:rmd).and_respond("550 Requested action not taken.") - -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) - end +describe "Net::FTP#rmdir" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the RMD command with the passed pathname to the server" do + @ftp.rmdir("test.folder") + @ftp.last_response.should == "250 Requested file action okay, completed. (RMD test.folder)\n" + end + + it "returns nil" do + @ftp.rmdir("test.folder").should be_nil + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:rmd).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:rmd).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:rmd).and_respond("502 Command not implemented.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:rmd).and_respond("421 Service not available, closing control connection.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:rmd).and_respond("530 Not logged in.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:rmd).and_respond("550 Requested action not taken.") + -> { @ftp.rmdir("test.folder") }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/sendcmd_spec.rb b/spec/ruby/library/net-ftp/sendcmd_spec.rb index 146d2623f19499..c50b373869dfe3 100644 --- a/spec/ruby/library/net-ftp/sendcmd_spec.rb +++ b/spec/ruby/library/net-ftp/sendcmd_spec.rb @@ -1,57 +1,54 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#sendcmd" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the passed command to the server" do - @ftp.sendcmd("HELP") - @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" - end - - it "returns the server's response" do - @ftp.sendcmd("HELP").should == "211 System status, or system help reply. (HELP)\n" - end - - it "raises no error when the response code is 1xx, 2xx or 3xx" do - @server.should_receive(:help).and_respond("120 Service ready in nnn minutes.") - -> { @ftp.sendcmd("HELP") }.should_not raise_error - - @server.should_receive(:help).and_respond("200 Command okay.") - -> { @ftp.sendcmd("HELP") }.should_not raise_error - - @server.should_receive(:help).and_respond("350 Requested file action pending further information.") - -> { @ftp.sendcmd("HELP") }.should_not raise_error - end - - it "raises a Net::FTPTempError when the response code is 4xx" do - @server.should_receive(:help).and_respond("421 Service not available, closing control connection.") - -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 5xx" do - @server.should_receive(:help).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPProtoError when the response code is not between 1xx-5xx" do - @server.should_receive(:help).and_respond("999 Invalid response.") - -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPProtoError) - end +describe "Net::FTP#sendcmd" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the passed command to the server" do + @ftp.sendcmd("HELP") + @ftp.last_response.should == "211 System status, or system help reply. (HELP)\n" + end + + it "returns the server's response" do + @ftp.sendcmd("HELP").should == "211 System status, or system help reply. (HELP)\n" + end + + it "raises no error when the response code is 1xx, 2xx or 3xx" do + @server.should_receive(:help).and_respond("120 Service ready in nnn minutes.") + -> { @ftp.sendcmd("HELP") }.should_not raise_error + + @server.should_receive(:help).and_respond("200 Command okay.") + -> { @ftp.sendcmd("HELP") }.should_not raise_error + + @server.should_receive(:help).and_respond("350 Requested file action pending further information.") + -> { @ftp.sendcmd("HELP") }.should_not raise_error + end + + it "raises a Net::FTPTempError when the response code is 4xx" do + @server.should_receive(:help).and_respond("421 Service not available, closing control connection.") + -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 5xx" do + @server.should_receive(:help).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPProtoError when the response code is not between 1xx-5xx" do + @server.should_receive(:help).and_respond("999 Invalid response.") + -> { @ftp.sendcmd("HELP") }.should raise_error(Net::FTPProtoError) end end diff --git a/spec/ruby/library/net-ftp/set_socket_spec.rb b/spec/ruby/library/net-ftp/set_socket_spec.rb index 5f648ad4518372..8182dd8b338fec 100644 --- a/spec/ruby/library/net-ftp/set_socket_spec.rb +++ b/spec/ruby/library/net-ftp/set_socket_spec.rb @@ -1,11 +1,8 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - - describe "Net::FTP#set_socket" do - # TODO: I won't spec this method, as it is not used - # anywhere and it should be private anyway. - it "needs to be reviewed for spec completeness" - end +describe "Net::FTP#set_socket" do + # TODO: I won't spec this method, as it is not used + # anywhere and it should be private anyway. + it "needs to be reviewed for spec completeness" end diff --git a/spec/ruby/library/net-ftp/site_spec.rb b/spec/ruby/library/net-ftp/site_spec.rb index af3e742164b296..c3e589a9204595 100644 --- a/spec/ruby/library/net-ftp/site_spec.rb +++ b/spec/ruby/library/net-ftp/site_spec.rb @@ -1,56 +1,53 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#site" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the SITE command with the passed argument to the server" do - @ftp.site("param") - @ftp.last_response.should == "200 Command okay. (SITE param)\n" - end - - it "returns nil" do - @ftp.site("param").should be_nil - end - - it "does not raise an error when the response code is 202" do - @server.should_receive(:site).and_respond("202 Command not implemented, superfluous at this site.") - -> { @ftp.site("param") }.should_not raise_error - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:site).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:site).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:site).and_respond("421 Service not available, closing control connection.") - -> { @ftp.site("param") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:site).and_respond("530 Requested action not taken.") - -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) - end +describe "Net::FTP#site" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the SITE command with the passed argument to the server" do + @ftp.site("param") + @ftp.last_response.should == "200 Command okay. (SITE param)\n" + end + + it "returns nil" do + @ftp.site("param").should be_nil + end + + it "does not raise an error when the response code is 202" do + @server.should_receive(:site).and_respond("202 Command not implemented, superfluous at this site.") + -> { @ftp.site("param") }.should_not raise_error + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:site).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:site).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:site).and_respond("421 Service not available, closing control connection.") + -> { @ftp.site("param") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:site).and_respond("530 Requested action not taken.") + -> { @ftp.site("param") }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/size_spec.rb b/spec/ruby/library/net-ftp/size_spec.rb index d514837d001dcc..0cf2e244773ce2 100644 --- a/spec/ruby/library/net-ftp/size_spec.rb +++ b/spec/ruby/library/net-ftp/size_spec.rb @@ -1,51 +1,48 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#size" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the SIZE command to the server" do - @ftp.size("test.file") - @ftp.last_response.should == "213 1024\n" - end - - it "returns the size of the passed file as Integer" do - @ftp.size("test.file").should eql(1024) - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:size).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:size).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:size).and_respond("421 Service not available, closing control connection.") - -> { @ftp.size("test.file") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 550" do - @server.should_receive(:size).and_respond("550 Requested action not taken.") - -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) - end +describe "Net::FTP#size" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the SIZE command to the server" do + @ftp.size("test.file") + @ftp.last_response.should == "213 1024\n" + end + + it "returns the size of the passed file as Integer" do + @ftp.size("test.file").should eql(1024) + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:size).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:size).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:size).and_respond("421 Service not available, closing control connection.") + -> { @ftp.size("test.file") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 550" do + @server.should_receive(:size).and_respond("550 Requested action not taken.") + -> { @ftp.size("test.file") }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/status_spec.rb b/spec/ruby/library/net-ftp/status_spec.rb index 7da29c9c6d095a..9d9f86c3816dd3 100644 --- a/spec/ruby/library/net-ftp/status_spec.rb +++ b/spec/ruby/library/net-ftp/status_spec.rb @@ -1,70 +1,67 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#status" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#status" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "sends the STAT command to the server" do - @ftp.status - @ftp.last_response.should == "211 System status, or system help reply. (STAT)\n" - end + it "sends the STAT command to the server" do + @ftp.status + @ftp.last_response.should == "211 System status, or system help reply. (STAT)\n" + end - it "sends the STAT command with an optional parameter to the server" do - @ftp.status("/pub").should == "211 System status, or system help reply. (STAT /pub)\n" - end + it "sends the STAT command with an optional parameter to the server" do + @ftp.status("/pub").should == "211 System status, or system help reply. (STAT /pub)\n" + end - it "returns the received information" do - @ftp.status.should == "211 System status, or system help reply. (STAT)\n" - end + it "returns the received information" do + @ftp.status.should == "211 System status, or system help reply. (STAT)\n" + end - it "does not raise an error when the response code is 212" do - @server.should_receive(:stat).and_respond("212 Directory status.") - -> { @ftp.status }.should_not raise_error - end + it "does not raise an error when the response code is 212" do + @server.should_receive(:stat).and_respond("212 Directory status.") + -> { @ftp.status }.should_not raise_error + end - it "does not raise an error when the response code is 213" do - @server.should_receive(:stat).and_respond("213 File status.") - -> { @ftp.status }.should_not raise_error - end + it "does not raise an error when the response code is 213" do + @server.should_receive(:stat).and_respond("213 File status.") + -> { @ftp.status }.should_not raise_error + end - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:stat).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.status }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:stat).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.status }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:stat).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.status }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:stat).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.status }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:stat).and_respond("502 Command not implemented.") - -> { @ftp.status }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:stat).and_respond("502 Command not implemented.") + -> { @ftp.status }.should raise_error(Net::FTPPermError) + end - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:stat).and_respond("421 Service not available, closing control connection.") - -> { @ftp.status }.should raise_error(Net::FTPTempError) - end + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:stat).and_respond("421 Service not available, closing control connection.") + -> { @ftp.status }.should raise_error(Net::FTPTempError) + end - it "raises a Net::FTPPermError when the response code is 530" do - @server.should_receive(:stat).and_respond("530 Requested action not taken.") - -> { @ftp.status }.should raise_error(Net::FTPPermError) - end + it "raises a Net::FTPPermError when the response code is 530" do + @server.should_receive(:stat).and_respond("530 Requested action not taken.") + -> { @ftp.status }.should raise_error(Net::FTPPermError) end end diff --git a/spec/ruby/library/net-ftp/storbinary_spec.rb b/spec/ruby/library/net-ftp/storbinary_spec.rb index 46e8595a54715f..aa4c51f2e81ff2 100644 --- a/spec/ruby/library/net-ftp/storbinary_spec.rb +++ b/spec/ruby/library/net-ftp/storbinary_spec.rb @@ -1,51 +1,49 @@ require_relative '../../spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +require_relative 'spec_helper' +require_relative 'fixtures/server' - describe "Net::FTP#storbinary" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once +describe "Net::FTP#storbinary" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - @local_fixture_file = __dir__ + "/fixtures/putbinaryfile" - @tmp_file = tmp("binaryfile", false) + @local_fixture_file = __dir__ + "/fixtures/putbinaryfile" + @tmp_file = tmp("binaryfile", false) - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop - rm_r @tmp_file - end + rm_r @tmp_file + end - it "sends the passed command and the passed File object's content to the server" do - File.open(@local_fixture_file) do |f| - f.binmode + it "sends the passed command and the passed File object's content to the server" do + File.open(@local_fixture_file) do |f| + f.binmode - @ftp.storbinary("STOR binary", f, 4096) {} - @ftp.last_response.should == "200 OK, Data received. (STOR binary)\n" - end + @ftp.storbinary("STOR binary", f, 4096) {} + @ftp.last_response.should == "200 OK, Data received. (STOR binary)\n" end + end - it "yields the transmitted content as binary blocks of the passed size" do - File.open(@local_fixture_file) do |f| - f.binmode - - res = [] - @ftp.storbinary("STOR binary", f, 10) { |x| res << x } - res.should == [ - "This is an", " example f", - "ile\nwhich ", "is going t", - "o be trans", "mitted\nusi", - "ng #putbin", "aryfile.\n" - ] - end + it "yields the transmitted content as binary blocks of the passed size" do + File.open(@local_fixture_file) do |f| + f.binmode + + res = [] + @ftp.storbinary("STOR binary", f, 10) { |x| res << x } + res.should == [ + "This is an", " example f", + "ile\nwhich ", "is going t", + "o be trans", "mitted\nusi", + "ng #putbin", "aryfile.\n" + ] end end end diff --git a/spec/ruby/library/net-ftp/storlines_spec.rb b/spec/ruby/library/net-ftp/storlines_spec.rb index 6352a21912ccf1..dc6830da7bd0bc 100644 --- a/spec/ruby/library/net-ftp/storlines_spec.rb +++ b/spec/ruby/library/net-ftp/storlines_spec.rb @@ -1,46 +1,44 @@ require_relative '../../spec_helper' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +require_relative 'spec_helper' +require_relative 'fixtures/server' - describe "Net::FTP#storlines" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once +describe "Net::FTP#storlines" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - @local_fixture_file = __dir__ + "/fixtures/puttextfile" - @tmp_file = tmp("textfile", false) + @local_fixture_file = __dir__ + "/fixtures/puttextfile" + @tmp_file = tmp("textfile", false) - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop - rm_r @tmp_file - end + rm_r @tmp_file + end - it "sends the passed command and the passed File object's content to the server" do - File.open(@local_fixture_file) do |f| - @ftp.storlines("STOR text", f) {} - @ftp.last_response.should == "200 OK, Data received. (STOR text)\n" - end + it "sends the passed command and the passed File object's content to the server" do + File.open(@local_fixture_file) do |f| + @ftp.storlines("STOR text", f) {} + @ftp.last_response.should == "200 OK, Data received. (STOR text)\n" end + end - it "yields each line of the transmitted content" do - File.open(@local_fixture_file) do |f| - res = [] - @ftp.storlines("STOR text", f) { |x| res << x } - res.should == [ - "This is an example file\r\n", - "which is going to be transmitted\r\n", - "using #puttextfile.\r\n" - ] - end + it "yields each line of the transmitted content" do + File.open(@local_fixture_file) do |f| + res = [] + @ftp.storlines("STOR text", f) { |x| res << x } + res.should == [ + "This is an example file\r\n", + "which is going to be transmitted\r\n", + "using #puttextfile.\r\n" + ] end end end diff --git a/spec/ruby/library/net-ftp/system_spec.rb b/spec/ruby/library/net-ftp/system_spec.rb index 464a8f3b701033..2b7f0d2560bce1 100644 --- a/spec/ruby/library/net-ftp/system_spec.rb +++ b/spec/ruby/library/net-ftp/system_spec.rb @@ -1,51 +1,48 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#system" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the SYST command to the server" do - @ftp.system - @ftp.last_response.should =~ /\A215 FTP Dummy Server \(SYST\)\Z/ - end - - it "returns the received information" do - @ftp.system.should =~ /\AFTP Dummy Server \(SYST\)\Z/ - end - - it "raises a Net::FTPPermError when the response code is 500" do - @server.should_receive(:syst).and_respond("500 Syntax error, command unrecognized.") - -> { @ftp.system }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 501" do - @server.should_receive(:syst).and_respond("501 Syntax error in parameters or arguments.") - -> { @ftp.system }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPPermError when the response code is 502" do - @server.should_receive(:syst).and_respond("502 Command not implemented.") - -> { @ftp.system }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPTempError when the response code is 421" do - @server.should_receive(:syst).and_respond("421 Service not available, closing control connection.") - -> { @ftp.system }.should raise_error(Net::FTPTempError) - end +describe "Net::FTP#system" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the SYST command to the server" do + @ftp.system + @ftp.last_response.should =~ /\A215 FTP Dummy Server \(SYST\)\Z/ + end + + it "returns the received information" do + @ftp.system.should =~ /\AFTP Dummy Server \(SYST\)\Z/ + end + + it "raises a Net::FTPPermError when the response code is 500" do + @server.should_receive(:syst).and_respond("500 Syntax error, command unrecognized.") + -> { @ftp.system }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 501" do + @server.should_receive(:syst).and_respond("501 Syntax error in parameters or arguments.") + -> { @ftp.system }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPPermError when the response code is 502" do + @server.should_receive(:syst).and_respond("502 Command not implemented.") + -> { @ftp.system }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPTempError when the response code is 421" do + @server.should_receive(:syst).and_respond("421 Service not available, closing control connection.") + -> { @ftp.system }.should raise_error(Net::FTPTempError) end end diff --git a/spec/ruby/library/net-ftp/voidcmd_spec.rb b/spec/ruby/library/net-ftp/voidcmd_spec.rb index 7312a662d8b0d9..f2536fe697bef5 100644 --- a/spec/ruby/library/net-ftp/voidcmd_spec.rb +++ b/spec/ruby/library/net-ftp/voidcmd_spec.rb @@ -1,57 +1,54 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' - - describe "Net::FTP#voidcmd" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end - - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end - - it "sends the passed command to the server" do - @server.should_receive(:help).and_respond("2xx Does not raise.") - -> { @ftp.voidcmd("HELP") }.should_not raise_error - end - - it "returns nil" do - @server.should_receive(:help).and_respond("2xx Does not raise.") - @ftp.voidcmd("HELP").should be_nil - end - - it "raises a Net::FTPReplyError when the response code is 1xx" do - @server.should_receive(:help).and_respond("1xx Does raise a Net::FTPReplyError.") - -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPReplyError) - end - - it "raises a Net::FTPReplyError when the response code is 3xx" do - @server.should_receive(:help).and_respond("3xx Does raise a Net::FTPReplyError.") - -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPReplyError) - end - - it "raises a Net::FTPTempError when the response code is 4xx" do - @server.should_receive(:help).and_respond("4xx Does raise a Net::FTPTempError.") - -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPTempError) - end - - it "raises a Net::FTPPermError when the response code is 5xx" do - @server.should_receive(:help).and_respond("5xx Does raise a Net::FTPPermError.") - -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPPermError) - end - - it "raises a Net::FTPProtoError when the response code is not valid" do - @server.should_receive(:help).and_respond("999 Does raise a Net::FTPProtoError.") - -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPProtoError) - end +describe "Net::FTP#voidcmd" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once + + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end + + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end + + it "sends the passed command to the server" do + @server.should_receive(:help).and_respond("2xx Does not raise.") + -> { @ftp.voidcmd("HELP") }.should_not raise_error + end + + it "returns nil" do + @server.should_receive(:help).and_respond("2xx Does not raise.") + @ftp.voidcmd("HELP").should be_nil + end + + it "raises a Net::FTPReplyError when the response code is 1xx" do + @server.should_receive(:help).and_respond("1xx Does raise a Net::FTPReplyError.") + -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPReplyError) + end + + it "raises a Net::FTPReplyError when the response code is 3xx" do + @server.should_receive(:help).and_respond("3xx Does raise a Net::FTPReplyError.") + -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPReplyError) + end + + it "raises a Net::FTPTempError when the response code is 4xx" do + @server.should_receive(:help).and_respond("4xx Does raise a Net::FTPTempError.") + -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPTempError) + end + + it "raises a Net::FTPPermError when the response code is 5xx" do + @server.should_receive(:help).and_respond("5xx Does raise a Net::FTPPermError.") + -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPPermError) + end + + it "raises a Net::FTPProtoError when the response code is not valid" do + @server.should_receive(:help).and_respond("999 Does raise a Net::FTPProtoError.") + -> { @ftp.voidcmd("HELP") }.should raise_error(Net::FTPProtoError) end end diff --git a/spec/ruby/library/net-ftp/welcome_spec.rb b/spec/ruby/library/net-ftp/welcome_spec.rb index 39f1ced38d4a59..4279127ce34242 100644 --- a/spec/ruby/library/net-ftp/welcome_spec.rb +++ b/spec/ruby/library/net-ftp/welcome_spec.rb @@ -1,28 +1,25 @@ require_relative '../../spec_helper' +require_relative 'spec_helper' +require_relative 'fixtures/server' -ruby_version_is ""..."3.1" do - require_relative 'spec_helper' - require_relative 'fixtures/server' +describe "Net::FTP#welcome" do + before :each do + @server = NetFTPSpecs::DummyFTP.new + @server.serve_once - describe "Net::FTP#welcome" do - before :each do - @server = NetFTPSpecs::DummyFTP.new - @server.serve_once - - @ftp = Net::FTP.new - @ftp.connect(@server.hostname, @server.server_port) - end + @ftp = Net::FTP.new + @ftp.connect(@server.hostname, @server.server_port) + end - after :each do - @ftp.quit rescue nil - @ftp.close - @server.stop - end + after :each do + @ftp.quit rescue nil + @ftp.close + @server.stop + end - it "returns the server's welcome message" do - @ftp.welcome.should be_nil - @ftp.login - @ftp.welcome.should == "230 User logged in, proceed. (USER anonymous)\n" - end + it "returns the server's welcome message" do + @ftp.welcome.should be_nil + @ftp.login + @ftp.welcome.should == "230 User logged in, proceed. (USER anonymous)\n" end end diff --git a/spec/ruby/library/prime/each_spec.rb b/spec/ruby/library/prime/each_spec.rb index c89e871582512a..b99cf7cf0e0211 100644 --- a/spec/ruby/library/prime/each_spec.rb +++ b/spec/ruby/library/prime/each_spec.rb @@ -1,170 +1,167 @@ require_relative '../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe :prime_each, shared: true do - before :each do - ScratchPad.record [] - end +describe :prime_each, shared: true do + before :each do + ScratchPad.record [] + end - it "enumerates primes" do - primes = Prime.instance - result = [] + it "enumerates primes" do + primes = Prime.instance + result = [] - primes.each { |p| - result << p - break if p > 10 - } + primes.each { |p| + result << p + break if p > 10 + } - result.should == [2, 3, 5, 7, 11] - end + result.should == [2, 3, 5, 7, 11] + end - it "yields ascending primes to the block" do - previous = 1 - @object.each do |prime| - break if prime > 1000 - ScratchPad << prime - prime.should > previous - previous = prime - end - - all_prime = true - ScratchPad.recorded.all? do |prime| - all_prime &&= (2..Math.sqrt(prime)).all? { |d| prime % d != 0 } - end - - all_prime.should be_true + it "yields ascending primes to the block" do + previous = 1 + @object.each do |prime| + break if prime > 1000 + ScratchPad << prime + prime.should > previous + previous = prime end - it "returns the last evaluated expression in the passed block" do - @object.each { break :value }.should equal(:value) + all_prime = true + ScratchPad.recorded.all? do |prime| + all_prime &&= (2..Math.sqrt(prime)).all? { |d| prime % d != 0 } end - describe "when not passed a block" do - before :each do - @prime_enum = @object.each - end - - it "returns an object that is Enumerable" do - @prime_enum.each.should be_kind_of(Enumerable) - end - - it "returns an object that responds to #with_index" do - @prime_enum.should respond_to(:with_index) - end + all_prime.should be_true + end - it "returns an object that responds to #with_object" do - @prime_enum.should respond_to(:with_object) - end + it "returns the last evaluated expression in the passed block" do + @object.each { break :value }.should equal(:value) + end - it "returns an object that responds to #next" do - @prime_enum.should respond_to(:next) - end + describe "when not passed a block" do + before :each do + @prime_enum = @object.each + end - it "returns an object that responds to #rewind" do - @prime_enum.should respond_to(:rewind) - end + it "returns an object that is Enumerable" do + @prime_enum.each.should be_kind_of(Enumerable) + end - it "yields primes starting at 2 independent of prior enumerators" do - @prime_enum.next.should == 2 - @prime_enum.next.should == 3 + it "returns an object that responds to #with_index" do + @prime_enum.should respond_to(:with_index) + end - @object.each { |prime| break prime }.should == 2 - end + it "returns an object that responds to #with_object" do + @prime_enum.should respond_to(:with_object) + end - it "returns an enumerator that yields previous primes when #rewind is called" do - @prime_enum.next.should == 2 - @prime_enum.next.should == 3 - @prime_enum.rewind - @prime_enum.next.should == 2 - end + it "returns an object that responds to #next" do + @prime_enum.should respond_to(:next) + end - it "returns independent enumerators" do - enum = @object.each - enum.next.should == 2 - enum.next.should == 3 + it "returns an object that responds to #rewind" do + @prime_enum.should respond_to(:rewind) + end - @prime_enum.next.should == 2 + it "yields primes starting at 2 independent of prior enumerators" do + @prime_enum.next.should == 2 + @prime_enum.next.should == 3 - enum.next.should == 5 - end + @object.each { |prime| break prime }.should == 2 end - end - describe :prime_each_with_arguments, shared: true do - before :each do - ScratchPad.record [] + it "returns an enumerator that yields previous primes when #rewind is called" do + @prime_enum.next.should == 2 + @prime_enum.next.should == 3 + @prime_enum.rewind + @prime_enum.next.should == 2 end - it "yields ascending primes less than or equal to the argument" do - bound = 1000 - previous = 1 - @object.each(bound) do |prime| - ScratchPad << prime - prime.should > previous - previous = prime - end + it "returns independent enumerators" do + enum = @object.each + enum.next.should == 2 + enum.next.should == 3 - ScratchPad.recorded.all? do |prime| - (2..Math.sqrt(prime)).all? { |d| prime % d != 0 } - end.should be_true + @prime_enum.next.should == 2 - ScratchPad.recorded.all? { |prime| prime <= bound }.should be_true + enum.next.should == 5 end + end +end - it "returns nil when no prime is generated" do - @object.each(1) { :value }.should be_nil - end +describe :prime_each_with_arguments, shared: true do + before :each do + ScratchPad.record [] + end - it "yields primes starting at 2 independent of prior enumeration" do - @object.each(10) { |prime| prime }.should == 7 - @object.each(10) { |prime| break prime }.should == 2 + it "yields ascending primes less than or equal to the argument" do + bound = 1000 + previous = 1 + @object.each(bound) do |prime| + ScratchPad << prime + prime.should > previous + previous = prime end - it "accepts a pseudo-prime generator as the second argument" do - generator = mock('very bad pseudo-prime generator') - generator.should_receive(:upper_bound=).with(100) - generator.should_receive(:each).and_yield(2).and_yield(3).and_yield(4) - - @object.each(100, generator) { |prime| ScratchPad << prime } - ScratchPad.recorded.should == [2, 3, 4] - end + ScratchPad.recorded.all? do |prime| + (2..Math.sqrt(prime)).all? { |d| prime % d != 0 } + end.should be_true - describe "when not passed a block" do - it "returns an object that returns primes less than or equal to the bound" do - bound = 100 - @object.each(bound).all? { |prime| prime <= bound }.should be_true - end - end + ScratchPad.recorded.all? { |prime| prime <= bound }.should be_true end - describe "Prime.each" do - it_behaves_like :prime_each, :each, Prime + it "returns nil when no prime is generated" do + @object.each(1) { :value }.should be_nil end - describe "Prime.each" do - it_behaves_like :prime_each_with_arguments, :each, Prime + it "yields primes starting at 2 independent of prior enumeration" do + @object.each(10) { |prime| prime }.should == 7 + @object.each(10) { |prime| break prime }.should == 2 end - describe "Prime#each with Prime.instance" do - it_behaves_like :prime_each, :each, Prime.instance - end + it "accepts a pseudo-prime generator as the second argument" do + generator = mock('very bad pseudo-prime generator') + generator.should_receive(:upper_bound=).with(100) + generator.should_receive(:each).and_yield(2).and_yield(3).and_yield(4) - describe "Prime#each with Prime.instance" do - it_behaves_like :prime_each_with_arguments, :each, Prime.instance + @object.each(100, generator) { |prime| ScratchPad << prime } + ScratchPad.recorded.should == [2, 3, 4] end - describe "Prime#each with Prime.instance" do - before :each do - @object = Prime.instance + describe "when not passed a block" do + it "returns an object that returns primes less than or equal to the bound" do + bound = 100 + @object.each(bound).all? { |prime| prime <= bound }.should be_true end + end +end - it_behaves_like :prime_each, :each +describe "Prime.each" do + it_behaves_like :prime_each, :each, Prime +end - it "resets the enumerator with each call" do - @object.each { |prime| break if prime > 10 } - @object.each { |prime| break prime }.should == 2 - end +describe "Prime.each" do + it_behaves_like :prime_each_with_arguments, :each, Prime +end + +describe "Prime#each with Prime.instance" do + it_behaves_like :prime_each, :each, Prime.instance +end + +describe "Prime#each with Prime.instance" do + it_behaves_like :prime_each_with_arguments, :each, Prime.instance +end + +describe "Prime#each with Prime.instance" do + before :each do + @object = Prime.instance + end + + it_behaves_like :prime_each, :each + + it "resets the enumerator with each call" do + @object.each { |prime| break if prime > 10 } + @object.each { |prime| break prime }.should == 2 end end diff --git a/spec/ruby/library/prime/instance_spec.rb b/spec/ruby/library/prime/instance_spec.rb index 82f21913b79f1c..5183f36901847e 100644 --- a/spec/ruby/library/prime/instance_spec.rb +++ b/spec/ruby/library/prime/instance_spec.rb @@ -1,24 +1,21 @@ require_relative '../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Prime.instance" do - it "returns a object representing the set of prime numbers" do - Prime.instance.should be_kind_of(Prime) - end +describe "Prime.instance" do + it "returns a object representing the set of prime numbers" do + Prime.instance.should be_kind_of(Prime) + end - it "returns a object with no obsolete features" do - Prime.instance.should_not respond_to(:succ) - Prime.instance.should_not respond_to(:next) - end + it "returns a object with no obsolete features" do + Prime.instance.should_not respond_to(:succ) + Prime.instance.should_not respond_to(:next) + end - it "does not complain anything" do - -> { Prime.instance }.should_not complain - end + it "does not complain anything" do + -> { Prime.instance }.should_not complain + end - it "raises a ArgumentError when is called with some arguments" do - -> { Prime.instance(1) }.should raise_error(ArgumentError) - end + it "raises a ArgumentError when is called with some arguments" do + -> { Prime.instance(1) }.should raise_error(ArgumentError) end end diff --git a/spec/ruby/library/prime/int_from_prime_division_spec.rb b/spec/ruby/library/prime/int_from_prime_division_spec.rb index 5c881aefa14118..5abb7221df3cdd 100644 --- a/spec/ruby/library/prime/int_from_prime_division_spec.rb +++ b/spec/ruby/library/prime/int_from_prime_division_spec.rb @@ -1,16 +1,13 @@ require_relative '../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Prime.int_from_prime_division" do - it "returns the product of the given factorization" do - Prime.int_from_prime_division([[2,3], [3,3], [5,3], [7,3], [11,3], [13,3], [17,3]]). - should == 2**3 * 3**3 * 5**3 * 7**3 * 11**3 * 13**3 * 17**3 - end +describe "Prime.int_from_prime_division" do + it "returns the product of the given factorization" do + Prime.int_from_prime_division([[2,3], [3,3], [5,3], [7,3], [11,3], [13,3], [17,3]]). + should == 2**3 * 3**3 * 5**3 * 7**3 * 11**3 * 13**3 * 17**3 + end - it "returns 1 for an empty factorization" do - Prime.int_from_prime_division([]).should == 1 - end + it "returns 1 for an empty factorization" do + Prime.int_from_prime_division([]).should == 1 end end diff --git a/spec/ruby/library/prime/integer/each_prime_spec.rb b/spec/ruby/library/prime/integer/each_prime_spec.rb index 6034802e730375..a71296b0df37fa 100644 --- a/spec/ruby/library/prime/integer/each_prime_spec.rb +++ b/spec/ruby/library/prime/integer/each_prime_spec.rb @@ -1,16 +1,13 @@ require_relative '../../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Integer.each_prime" do - it "is transferred to Prime.each" do - Prime.should_receive(:each).with(100).and_yield(2).and_yield(3).and_yield(5) - yielded = [] - Integer.each_prime(100) do |prime| - yielded << prime - end - yielded.should == [2,3,5] +describe "Integer.each_prime" do + it "is transferred to Prime.each" do + Prime.should_receive(:each).with(100).and_yield(2).and_yield(3).and_yield(5) + yielded = [] + Integer.each_prime(100) do |prime| + yielded << prime end + yielded.should == [2,3,5] end end diff --git a/spec/ruby/library/prime/integer/from_prime_division_spec.rb b/spec/ruby/library/prime/integer/from_prime_division_spec.rb index 5422bc651ced5b..e0e74fb3369cb2 100644 --- a/spec/ruby/library/prime/integer/from_prime_division_spec.rb +++ b/spec/ruby/library/prime/integer/from_prime_division_spec.rb @@ -1,16 +1,13 @@ require_relative '../../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Integer.from_prime_division" do - it "returns the product of the given factorization" do - Integer.from_prime_division([[2,3], [3,3], [5,3], [7,3], [11,3], [13,3], [17,3]]). - should == 2**3 * 3**3 * 5**3 * 7**3 * 11**3 * 13**3 * 17**3 - end +describe "Integer.from_prime_division" do + it "returns the product of the given factorization" do + Integer.from_prime_division([[2,3], [3,3], [5,3], [7,3], [11,3], [13,3], [17,3]]). + should == 2**3 * 3**3 * 5**3 * 7**3 * 11**3 * 13**3 * 17**3 + end - it "returns 1 for an empty factorization" do - Integer.from_prime_division([]).should == 1 - end + it "returns 1 for an empty factorization" do + Integer.from_prime_division([]).should == 1 end end diff --git a/spec/ruby/library/prime/integer/prime_division_spec.rb b/spec/ruby/library/prime/integer/prime_division_spec.rb index 03be0be27b7583..be03438a6f8afb 100644 --- a/spec/ruby/library/prime/integer/prime_division_spec.rb +++ b/spec/ruby/library/prime/integer/prime_division_spec.rb @@ -1,22 +1,19 @@ require_relative '../../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Integer#prime_division" do - it "returns an array of a prime factor and a corresponding exponent" do - (2*3*5*7*11*13*17).prime_division.should == - [[2,1], [3,1], [5,1], [7,1], [11,1], [13,1], [17,1]] - end +describe "Integer#prime_division" do + it "returns an array of a prime factor and a corresponding exponent" do + (2*3*5*7*11*13*17).prime_division.should == + [[2,1], [3,1], [5,1], [7,1], [11,1], [13,1], [17,1]] + end - it "returns an empty array for 1" do - 1.prime_division.should == [] - end - it "returns an empty array for -1" do - -1.prime_division.should == [[-1, 1]] - end - it "raises ZeroDivisionError for 0" do - -> { 0.prime_division }.should raise_error(ZeroDivisionError) - end + it "returns an empty array for 1" do + 1.prime_division.should == [] + end + it "returns an empty array for -1" do + -1.prime_division.should == [[-1, 1]] + end + it "raises ZeroDivisionError for 0" do + -> { 0.prime_division }.should raise_error(ZeroDivisionError) end end diff --git a/spec/ruby/library/prime/integer/prime_spec.rb b/spec/ruby/library/prime/integer/prime_spec.rb index 65b779e3191918..53de76d5ab337d 100644 --- a/spec/ruby/library/prime/integer/prime_spec.rb +++ b/spec/ruby/library/prime/integer/prime_spec.rb @@ -1,20 +1,17 @@ require_relative '../../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Integer#prime?" do - it "returns a true value for prime numbers" do - 2.prime?.should be_true - 3.prime?.should be_true - (2**31-1).prime?.should be_true # 8th Mersenne prime (M8) - end +describe "Integer#prime?" do + it "returns a true value for prime numbers" do + 2.prime?.should be_true + 3.prime?.should be_true + (2**31-1).prime?.should be_true # 8th Mersenne prime (M8) + end - it "returns a false value for composite numbers" do - 4.prime?.should be_false - 15.prime?.should be_false - (2**32-1).prime?.should be_false - ( (2**17-1)*(2**19-1) ).prime?.should be_false # M6*M7 - end + it "returns a false value for composite numbers" do + 4.prime?.should be_false + 15.prime?.should be_false + (2**32-1).prime?.should be_false + ( (2**17-1)*(2**19-1) ).prime?.should be_false # M6*M7 end end diff --git a/spec/ruby/library/prime/next_spec.rb b/spec/ruby/library/prime/next_spec.rb index 8e805ed0440e0a..39c4ae16ae8565 100644 --- a/spec/ruby/library/prime/next_spec.rb +++ b/spec/ruby/library/prime/next_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/next' +require 'prime' -ruby_version_is ""..."3.1" do - require_relative 'shared/next' - require 'prime' - - describe "Prime#next" do - it_behaves_like :prime_next, :next - end +describe "Prime#next" do + it_behaves_like :prime_next, :next end diff --git a/spec/ruby/library/prime/prime_division_spec.rb b/spec/ruby/library/prime/prime_division_spec.rb index 4c93d5936a9c7e..6293478f592cea 100644 --- a/spec/ruby/library/prime/prime_division_spec.rb +++ b/spec/ruby/library/prime/prime_division_spec.rb @@ -1,28 +1,25 @@ require_relative '../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Prime.prime_division" do - it "returns an array of a prime factor and a corresponding exponent" do - Prime.prime_division(2*3*5*7*11*13*17).should == - [[2,1], [3,1], [5,1], [7,1], [11,1], [13,1], [17,1]] - end +describe "Prime.prime_division" do + it "returns an array of a prime factor and a corresponding exponent" do + Prime.prime_division(2*3*5*7*11*13*17).should == + [[2,1], [3,1], [5,1], [7,1], [11,1], [13,1], [17,1]] + end - it "returns an empty array for 1" do - Prime.prime_division(1).should == [] - end + it "returns an empty array for 1" do + Prime.prime_division(1).should == [] + end - it "returns [[-1, 1]] for -1" do - Prime.prime_division(-1).should == [[-1, 1]] - end + it "returns [[-1, 1]] for -1" do + Prime.prime_division(-1).should == [[-1, 1]] + end - it "includes [[-1, 1]] in the divisors of a negative number" do - Prime.prime_division(-10).should include([-1, 1]) - end + it "includes [[-1, 1]] in the divisors of a negative number" do + Prime.prime_division(-10).should include([-1, 1]) + end - it "raises ZeroDivisionError for 0" do - -> { Prime.prime_division(0) }.should raise_error(ZeroDivisionError) - end + it "raises ZeroDivisionError for 0" do + -> { Prime.prime_division(0) }.should raise_error(ZeroDivisionError) end end diff --git a/spec/ruby/library/prime/prime_spec.rb b/spec/ruby/library/prime/prime_spec.rb index e2afddd5b287fd..0896c7f0f39a6a 100644 --- a/spec/ruby/library/prime/prime_spec.rb +++ b/spec/ruby/library/prime/prime_spec.rb @@ -1,20 +1,17 @@ require_relative '../../spec_helper' +require 'prime' -ruby_version_is ""..."3.1" do - require 'prime' - - describe "Prime#prime?" do - it "returns a true value for prime numbers" do - Prime.prime?(2).should be_true - Prime.prime?(3).should be_true - Prime.prime?(2**31-1).should be_true # 8th Mersenne prime (M8) - end +describe "Prime#prime?" do + it "returns a true value for prime numbers" do + Prime.prime?(2).should be_true + Prime.prime?(3).should be_true + Prime.prime?(2**31-1).should be_true # 8th Mersenne prime (M8) + end - it "returns a false value for composite numbers" do - Prime.prime?(4).should be_false - Prime.prime?(15).should be_false - Prime.prime?(2**32-1).should be_false - Prime.prime?( (2**17-1)*(2**19-1) ).should be_false # M6*M7 - end + it "returns a false value for composite numbers" do + Prime.prime?(4).should be_false + Prime.prime?(15).should be_false + Prime.prime?(2**32-1).should be_false + Prime.prime?( (2**17-1)*(2**19-1) ).should be_false # M6*M7 end end diff --git a/spec/ruby/library/prime/succ_spec.rb b/spec/ruby/library/prime/succ_spec.rb index 9843dae25dc520..34c18d2ba0645b 100644 --- a/spec/ruby/library/prime/succ_spec.rb +++ b/spec/ruby/library/prime/succ_spec.rb @@ -1,10 +1,7 @@ require_relative '../../spec_helper' +require_relative 'shared/next' +require 'prime' -ruby_version_is ""..."3.1" do - require_relative 'shared/next' - require 'prime' - - describe "Prime#succ" do - it_behaves_like :prime_next, :succ - end +describe "Prime#succ" do + it_behaves_like :prime_next, :succ end