Лазар обнови решението на 16.11.2016 09:36 (преди над 8 години)
+RSpec.describe Version do
+ describe '#<=>' do
+ context 'when first is bigger' do
+ it 'compares higher version with lower' do
+ version = Version.new("3.2.2")
+ expect(version <=> '1.2.3').to eq 1
Сигурен ли си, че не тестваш имплементационен детайл тук?
+ expect(version <=> '3.2.1').to eq 1
+ expect(version <=> '4.2.2').to eq 1
+ expect(version <=> '3.1.3').to eq 1
+ end
+ it 'compares versions with different lengths' do
+ version = Version.new("3.2.2")
+ expect(version <=> '3.2').to eq 1
+ expect(version <=> '2.5.9.9').to eq 1
+ expect(version <=> '2').to eq 1
+ end
+ it 'compares versions containing zero' do
+ version = Version.new("3.2.2")
+ expect(version <=> '0.2.2').to eq 1
+ expect(version <=> '3.0.2').to eq 1
+ expect(version <=> '3.2.0').to eq 1
+ version = Version.new("0.2.2")
+ expect(version <=> '0.0.2').to eq 1
+ expect(version <=> '0.1.5').to eq 1
+ end
+ end
+ context 'when first is lower' do
+ it 'compares lower version with higher' do
+ version = Version.new("1.2.3")
+ expect(version <=> '1.2.4').to eq -1
+ expect(version <=> '1.3.2').to eq -1
+ expect(version <=> '2.3.4').to eq -1
+ expect(version <=> '2.1.1').to eq -1
+ end
+ it 'compares versions with different lengths' do
+ version = Version.new("2.3")
+ expect(version <=> '2.3.4').to eq -1
+ expect(version <=> '3.1.1').to eq -1
+ expect(version <=> '3').to eq -1
+ end
+ it 'compares versions containing zero' do
+ version = Version.new("2.3.4")
+ expect(version <=> '3.0.0').to eq -1
+ expect(version <=> '2.4.0').to eq -1
+ version = Version.new("0.3.4")
+ expect(version <=> '1.0.0').to eq -1
+ expect(version <=> '0.4.0').to eq -1
+ end
+ end
+ context 'when they are equal' do
+ it 'compares versions with different lengths' do
+ version = Version.new("3.2.2")
+ expect(version <=> '3.2.2.0').to eq 0
+ end
+ it 'comparing equal versions' do
+ version = Version.new("3.2.2")
+ expect(version <=> '3.2.2').to eq 0
+ end
+ it 'compares versions containing zero' do
+ version = Version.new("3.0.2")
+ expect(version <=> '3.0.2').to eq 0
+ version = Version.new("0.0.2")
+ expect(version <=> '0.0.2').to eq 0
+ end
+ end
+ end
+ describe '#components' do
+ context 'when padding > 0' do
+ version = Version.new("1.2.3.4")
+ it 'checks with positive argument' do
+ expect(version.components(6)).to match_array
Каква е разликата между eq
и match_array
?
+ [
+ 11, 2, 3, 4, 0, 0
+ ]
+ end
+ it 'checks with argument = 0' do
+ expect(version.components(0)).to match_array
+ [
+ 1, 2, 3, 4
+ ]
+ end
+ end
+ context 'when padding = 0' do
+ version = Version.new("1.2.3.4")
+ it 'checks with argument' do
+ expect(version.components(4)).to match_array
+ [
+ 1, 2, 3, 4
+ ]
+ end
+ end
+ context 'when padding < 0' do
+ version = Version.new("1.2.3.4")
+ it 'checks without argument' do
+ expect(version.components).to match_array
+ [
+ 1, 2, 3, 4
+ ]
+ end
+ it 'checks with argument < 0' do
+ expect(version.components(-2)).to match_array
+ [
+ 3, 4
+ ]
+ end
+ it 'checks with argument > 0' do
+ expect(version.components(2)).to match_array
+ [
+ 1, 2
+ ]
+ end
+ end
+ context 'when version contains zero' do
+ it 'check with zeros in the end' do
+ version = Version.new("1.2.0.0")
+ expect(version.components).to match_array
+ [
+ 1, 2
+ ]
+ end
+ it 'checks with zeros in the beginning' do
+ version = Version.new("0.0.1.2")
+ expect(version.components).to match_array
+ [
+ 1, 2
+ ]
+ end
+ end
+ end
+ describe '#<' do
+ it 'checks if version1 < version2' do
+ version1 = Version.new("2.3")
+ version2 = Version.new("2.4")
+ expect(version1 < version2).to be true
Тези променливи защо са ти необходими?
+ version1 = Version.new("0.2.3")
+ version2 = Version.new("0.2.4")
+ expect(version1 < version2).to be true
+ version1 = Version.new("1.0.0")
+ version2 = Version.new("1")
+ expect(version1 < version2).to be false
+ end
+ end
+ describe '#>' do
+ it 'checks if version1 > version2' do
+ version1 = Version.new("2.4")
+ version2 = Version.new("2.3")
+ expect(version1 > version2).to be true
+ version1 = Version.new("0.2.4")
+ version2 = Version.new("0.2.3")
+ expect(version1 > version2).to be true
+ version1 = Version.new("1.0.0")
+ version2 = Version.new("1")
+ expect(version1 > version2).to be false
+ end
+ end
+ describe '#==' do
+ it 'checks if version1 == version2' do
+ version1 = Version.new("2.4")
+ version2 = Version.new("2.4")
+ expect(version1 == version2).to be true
+ version1 = Version.new("0.2.4")
+ version2 = Version.new("0.2.4")
+ expect(version1 == version2).to be true
+ version1 = Version.new("1.0.0")
+ version2 = Version.new("1")
+ expect(version1 == version2).to be false
+ version1 = Version.new("0.1")
+ version2 = Version.new("1")
+ expect(version1 == version2).to be false
+ end
+ end
+ describe '#<=' do
+ it 'checks if version1 <= version2' do
+ version1 = Version.new("2.3")
+ version2 = Version.new("2.4")
+ expect(version1 < version2).to be true
+ version1 = Version.new("0.2.3")
+ version2 = Version.new("0.2.4")
+ expect(version1 < version2).to be true
+ version1 = Version.new("1.0.0")
+ version2 = Version.new("1")
+ expect(version1 < version2).to be false
+ version1 = Version.new("0.2.4")
+ version2 = Version.new("0.2.4")
+ expect(version1 <= version2).to be true
+ version1 = Version.new("2.4")
+ version2 = Version.new("2.4")
+ expect(version1 <= version2).to be true
+ end
+ end
+ describe '#>=' do
+ it 'checks if version1 > version2' do
+ version1 = Version.new("2.4")
+ version2 = Version.new("2.3")
+ expect(version1 > version2).to be true
+ version1 = Version.new("0.2.4")
+ version2 = Version.new("0.2.3")
+ expect(version1 > version2).to be true
+ version1 = Version.new("1.0.0")
+ version2 = Version.new("1")
+ expect(version1 > version2).to be false
+ version1 = Version.new("0.2.4")
+ version2 = Version.new("0.2.4")
+ expect(version1 >= version2).to be true
+ version1 = Version.new("2.4")
+ version2 = Version.new("2.4")
+ expect(version1 >= version2).to be true
+ end
+ end
+ describe Range do
+ describe "#include?" do
+ it "checks simple versions" do
+ range = Version::Range.new(Version.new('1'), Version.new('2'))
+ version = Version.new('1.5')
+ expect((range.include? version)).to be true
+ version = Version.new('1')
+ expect((range.include? version)).to be true
+ version = Version.new('1.0')
+ expect((range.include? version)).to be true
+ range = Version::Range.new(Version.new('0'), Version.new('1'))
+ expect((range.include? Version.new('0.5'))).to be true
+ expect((range.include? Version.new('0.0.0.1'))).to be true
+ end
+ end
+ describe "#to_a" do
+ it "cheks with simple versions" do
+ range = Version::Range.new(Version.new('0.1'), Version.new('0.2'))
+ expect(range.to_a).to match_array
+ [
+ '0.1', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6',
+ '0.1.7', '0.1.8', '0.1.9'
+ ]
+
+ # Това не знам дали е вярно - дали 0.1.0 трябва да е в тази област
Пускал ли си тестовете върху нашето решение?
+ expect(range.to_a).to match_array
+ [
+ '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6',
+ '0.1.7', '0.1.8', '0.1.9'
+ ]
+ end
+ end
+ end
+end
Пускал ли си тестовете върху нашето решение?