transferred Code Ocean from original repository to GitHub
This commit is contained in:
2
db/seeds/fibonacci/exercise.rb
Normal file
2
db/seeds/fibonacci/exercise.rb
Normal file
@@ -0,0 +1,2 @@
|
||||
def fibonacci(n)
|
||||
end
|
15
db/seeds/fibonacci/exercise_spec_1.rb
Normal file
15
db/seeds/fibonacci/exercise_spec_1.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
require './exercise'
|
||||
|
||||
describe '#fibonacci' do
|
||||
it 'is defined' do
|
||||
expect { method(:fibonacci) }.not_to raise_error
|
||||
end
|
||||
|
||||
it 'has the correct arity' do
|
||||
expect(method(:fibonacci).arity).to eq(1)
|
||||
end
|
||||
|
||||
it 'returns a number' do
|
||||
expect(fibonacci(1)).to be_an(Integer)
|
||||
end
|
||||
end
|
9
db/seeds/fibonacci/exercise_spec_2.rb
Normal file
9
db/seeds/fibonacci/exercise_spec_2.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
require './exercise'
|
||||
|
||||
describe '#fibonacci' do
|
||||
it 'works recursively' do
|
||||
@n = 16
|
||||
expect(self).to receive(:fibonacci).and_call_original.at_least(@n ** 2).times
|
||||
fibonacci(@n)
|
||||
end
|
||||
end
|
16
db/seeds/fibonacci/exercise_spec_3.rb
Normal file
16
db/seeds/fibonacci/exercise_spec_3.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
require './exercise'
|
||||
require './reference'
|
||||
|
||||
describe '#fibonacci' do
|
||||
SAMPLE_COUNT = 32
|
||||
|
||||
let(:reference) { Class.new.extend(Reference) }
|
||||
|
||||
SAMPLE_COUNT.times do |i|
|
||||
instance_eval do
|
||||
it "obtains the correct result for input #{i}" do
|
||||
expect(fibonacci(i)).to eq(reference.fibonacci(i))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
5
db/seeds/fibonacci/reference.rb
Normal file
5
db/seeds/fibonacci/reference.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
module Reference
|
||||
def fibonacci(n)
|
||||
n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2)
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user