Skip to content

Instantly share code, notes, and snippets.

@JacobNinja
Created July 9, 2010 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JacobNinja/468842 to your computer and use it in GitHub Desktop.
Save JacobNinja/468842 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'active_support'
class Logbook
def initialize
@entries = {}
end
def add_entry(date, num)
if @entries.has_key?(date)
@entries[date] << num
else
@entries[date] = [num]
end
end
def find(date)
@entries[date]
end
def find_for_day(date)
numbers = []
@entries.each_key do |time|
numbers += @entries[time] if time >= date and time < (date + 1.day)
end
numbers
end
def sorted
end
end
require File.dirname(__FILE__) + "/../log_book"
require 'rubygems'
require 'active_support'
describe "Logbook" do
before(:each) do
@logbook = Logbook.new
end
it "can return entries for date" do
curr_time = Time.now
@logbook.add_entry(curr_time, 4)
@logbook.find(curr_time).should eql([4])
end
it "can return multiple entries for same time" do
curr_time = Time.now
@logbook.add_entry(curr_time, 10)
@logbook.add_entry(curr_time, 10)
@logbook.find(curr_time).should eql([10,10])
end
it "can return multiple entries for same day" do
@logbook.add_entry(Date.today, 5)
@logbook.add_entry((Date.today + 2.hours), 6)
@logbook.add_entry(Date.tomorrow, 7)
@logbook.add_entry(Date.yesterday, 8)
@logbook.find_for_day(Date.today).should eql([5,6])
end
it "can return entries in date order" do
@logbook.add_entry(Date.today, 1)
@logbook.add_entry(Date.today - 1.hour, 2)
@logbook.add_entry(Date.today + 1.hour, 3)
@logbook.sorted.should eql([2,1,3])
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment