Skip to content

Instantly share code, notes, and snippets.

@salmanx
Last active June 3, 2024 09:47
Show Gist options
  • Save salmanx/b3239647bd215a39babea8521d6a6848 to your computer and use it in GitHub Desktop.
Save salmanx/b3239647bd215a39babea8521d6a6848 to your computer and use it in GitHub Desktop.
Ruby program to check overlapping calendar
class Calender
attr_accessor :start_time, :end_time
def initialize(start_time:, end_time:)
@start_time = start_time
@end_time = end_time
end
end
def is_overlapping?(c1, c2)
(c1.start_time < c2.end_time) && (c2.start_time < c1.end_time)
end
require 'rspec'
require_relative '../calender_overlapping'
RSpec.describe 'is_overlapping?' do
it 'returns true when the end of event A is overlapping event B' do
eventA = Calender.new(start_time: "10:00", end_time: "11:00")
eventB = Calender.new(start_time: "10:45", end_time: "11:45")
expect(is_overlapping?(eventA, eventB)).to be true
end
it 'returns true when the start of A is overlapping event B' do
eventA = Calender.new(start_time: "10:15", end_time: "11:00")
eventB = Calender.new(start_time: "10:00", end_time: "11:45")
expect(is_overlapping?(eventA, eventB)).to be true
end
it 'returns true when A is completely included in B' do
eventA = Calender.new(start_time: "10:20", end_time: "10:40")
eventB = Calender.new(start_time: "10:00", end_time: "11:00")
expect(is_overlapping?(eventA, eventB)).to be true
end
it 'returns true when B is completely included in A' do
eventA = Calender.new(start_time: "10:00", end_time: "11:00")
eventB = Calender.new(start_time: "10:20", end_time: "10:40")
expect(is_overlapping?(eventB, eventA)).to be true
end
it 'returns true when A and B match exactly' do
eventA = Calender.new(start_time: "10:00", end_time: "11:00")
eventB = Calender.new(start_time: "10:00", end_time: "11:00")
expect(is_overlapping?(eventA, eventB)).to be true
end
it 'returns false when A and B do not match' do
eventA = Calender.new(start_time: "12:00", end_time: "13:00")
eventB = Calender.new(start_time: "13:00", end_time: "14:00")
expect(is_overlapping?(eventA, eventB)).to be false
expect(is_overlapping?(eventB, eventA)).to be false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment