1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

add a few composition tests

This commit is contained in:
Ryan Fitzgerald 2012-01-15 00:55:40 -08:00
parent e784a1a024
commit b13d07516a
2 changed files with 55 additions and 26 deletions

View file

@ -304,15 +304,19 @@ class Pry
end
# Two `Code` objects are equal if they contain the same lines with the same
# numbers.
# numbers. Otherwise, call `to_s` and `chomp` and compare as Strings.
#
# @param [Code] other
# @param [Code, Object] other
# @return [Boolean]
def ==(other)
if other.is_a?(Code)
@other_lines = other.instance_variable_get(:@lines)
@lines.each_with_index.all? do |(l, ln), i|
l == @other_lines[i].first && ln == @other_lines[i].last
end
else
to_s.chomp == other.to_s.chomp
end
end
# Forward any missing methods to the output of `#to_s`.

View file

@ -2,28 +2,28 @@ require 'helper'
describe Pry::Code do
describe '.from_file' do
it 'should read lines from a file on disk' do
should 'read lines from a file on disk' do
Pry::Code.from_file('lib/pry.rb').length.should > 0
end
it 'should read lines from Pry\'s line buffer' do
should 'read lines from Pry\'s line buffer' do
mock_pry(':hay_guys')
Pry::Code.from_file('(pry)').grep(/:hay_guys/).length.should == 1
end
it 'should default to Ruby' do
should 'default to Ruby' do
temp_file('') do |f|
Pry::Code.from_file(f.path).code_type.should == :ruby
end
end
it 'should check the extension' do
should 'check the extension' do
temp_file('.c') do |f|
Pry::Code.from_file(f.path).code_type.should == :c
end
end
it 'should raise an error if the file doesn\'t exist' do
should 'raise an error if the file doesn\'t exist' do
proc do
Pry::Code.from_file('/knalkjsdnalsd/alkjdlkq')
end.should.raise(Pry::CommandError)
@ -31,7 +31,7 @@ describe Pry::Code do
end
describe '.from_method' do
it 'should read lines from a method\'s definition' do
should 'read lines from a method\'s definition' do
m = Pry::Method.from_obj(Pry, :load_history)
Pry::Code.from_method(m).length.should > 0
end
@ -48,11 +48,11 @@ describe Pry::Code do
@array = ['def hay', ' :guys', 'end']
end
it 'should break a string into lines' do
should 'break a string into lines' do
Pry::Code.new(@str).length.should == 3
end
it 'should accept an array' do
should 'accept an array' do
Pry::Code.new(@array).length.should == 3
end
@ -74,19 +74,19 @@ describe Pry::Code do
describe 'filters' do
describe '#between' do
it 'should work with an inclusive range' do
should 'work with an inclusive range' do
@code = @code.between(1..3)
@code.length.should == 3
@code.should =~ /\Aclass MyProgram/
@code.should =~ /world!'\Z/
end
it 'should default to an inclusive range' do
should 'default to an inclusive range' do
@code = @code.between(3, 5)
@code.length.should == 3
end
it 'should work with an exclusive range' do
should 'work with an exclusive range' do
@code = @code.between(2...4)
@code.length.should == 2
@code.should =~ /\A def self/
@ -95,14 +95,14 @@ describe Pry::Code do
end
describe '#before' do
it 'should work' do
should 'work' do
@code = @code.before(3, 1)
@code.should =~ /\A def self\.main\Z/
end
end
describe '#around' do
it 'should work' do
should 'work' do
@code = @code.around(3, 1)
@code.length.should == 3
@code.should =~ /\A def self/
@ -111,14 +111,14 @@ describe Pry::Code do
end
describe '#after' do
it 'should work' do
should 'work' do
@code = @code.after(3, 1)
@code.should =~ /\A end\Z/
end
end
describe '#grep' do
it 'should work' do
should 'work' do
@code = @code.grep(/end/)
@code.length.should == 2
end
@ -127,12 +127,12 @@ describe Pry::Code do
describe 'formatters' do
describe '#with_line_numbers' do
it 'should show line numbers' do
should 'show line numbers' do
@code = @code.with_line_numbers
@code.should =~ /1:/
end
it 'should disable line numbers when falsy' do
should 'disable line numbers when falsy' do
@code = @code.with_line_numbers
@code = @code.with_line_numbers(false)
@code.should.not =~ /1:/
@ -140,12 +140,12 @@ describe Pry::Code do
end
describe '#with_marker' do
it 'should show a marker in the right place' do
should 'show a marker in the right place' do
@code = @code.with_marker(2)
@code.should =~ /^ => def self/
end
it 'should disable the marker when falsy' do
should 'disable the marker when falsy' do
@code = @code.with_marker(2)
@code = @code.with_marker(false)
@code.should =~ /^ def self/
@ -153,17 +153,42 @@ describe Pry::Code do
end
describe '#with_indentation' do
it 'should indent the text' do
should 'indent the text' do
@code = @code.with_indentation(2)
@code.should =~ /^ def self/
end
it 'should disable the indentation when falsy' do
should 'disable the indentation when falsy' do
@code = @code.with_indentation(2)
@code = @code.with_indentation(false)
@code.should =~ /^ def self/
end
end
end
describe 'composition' do
describe 'grep and with_line_numbers' do
should 'work' do
@code = @code.grep(/end/).with_line_numbers
@code.should =~ /\A4: end/
@code.should =~ /5: end\Z/
end
end
describe 'grep and before and with_line_numbers' do
should 'work' do
@code = @code.grep(/e/).before(5, 5).with_line_numbers
@code.should =~ /\A2: def self.main\n3:/
@code.should =~ /4: end\Z/
end
end
describe 'before and after' do
should 'work' do
@code = @code.before(4, 2).after(2)
@code.should == " puts 'Hello, world!'"
end
end
end
end
end