Skip to content

Instantly share code, notes, and snippets.

@shostakovich
Created August 20, 2012 19:18
Show Gist options
  • Save shostakovich/3406888 to your computer and use it in GitHub Desktop.
Save shostakovich/3406888 to your computer and use it in GitHub Desktop.
Fibonaci Sequence Generator 1
class FibonaciSequenceGenerator
class SequenceToLongError < StandardError; end
def generate(length)
raise SequenceToLongError if length > 50
@sequence = []
1.upto(length) {|number| @sequence << fibonaci_number(number)}
@sequence
end
def fibonaci_number(number)
case number
when 1 then 0
when 2 then 1
else @sequence[number - 2] + @sequence[number - 3]
end
end
end
describe FibonaciSequenceGenerator do
let(:generator){ FibonaciSequenceGenerator.new }
it "contains 0 as the first number in a sequence" do
generator.generate(8).first.should be == 0
end
it "contains 1 as the second number in a sequence" do
generator.generate(8)[1].should be == 1
end
it "contains 1 as the third number in a sequence" do
generator.generate(8)[2].should be == 1
end
it "contains 2 as the fourth number in a sequence" do
generator.generate(8)[3].should be == 2
end
it "limits the length to 50" do
lambda{ generator.generate(51) }.should raise_error FibonaciSequenceGenerator::SequenceToLongError
end
end
@shostakovich
Copy link
Author

Feel like I should have refactored my tests :/ Well next time..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment