I have made some tests for the code and shown the results at
Parked at Loopia . Please check the assertions with # I
assume by them, the paper referenced went way over my head.
Dan
I have made some tests for the code and shown the results at
Parked at Loopia . Please check the assertions with # I
assume by them, the paper referenced went way over my head.
Dan
Hi,
On 22-Feb-07, at 2:51 PM, Daniel F. wrote:
I have made some tests for the code and shown the results at http://
pastie.caboo.se/42266 . Please check the assertions with # I
assume by them, the paper referenced went way over my head.Dan
I modified your stuff and changed the tests around a bit. I don’t
know, maybe it’ll help, maybe it won’t. I’m not sure how to use the
pastie thing, so I’ve just appended the code.
Cheers,
Bob
Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/
class Range
def before?(other)
self.end < other.begin
end
def after?(other)
other.before?(self)
end
def meets?(other)
self.end == other.begin
end
def met_by?(other)
other.meets?(self)
end
def overlaps?(other)
(self.begin < other.begin) and
(other.begin < self.end) and
(self.end < other.end)
end
def overlapped_by?(other)
other.overlaps?(self)
end
def starts?(other)
(self.begin == other.begin) and
(self.end < other.end)
end
def started_by?(other)
other.starts?(self)
end
def finishes?(other)
(self.end == other.end) and
(other.begin < self.begin)
end
def finished_by?(other)
other.finishes?(self)
end
def during?(other)
(other.begin < self.begin) and
(self.end < other.end)
end
def contains?(other)
other.during?(self)
end
def equals?(other)
(self.begin == other.begin) and
(self.end == other.end)
end
def disjoint?(other)
(self.end <= other.begin) or
(other.end <= self.begin)
end
end
if $0 == FILE
require ‘test/unit’
class TestRange < Test::Unit::TestCase
def determine(a, b)
m = a.match(/([. ])([^. ])/)
interval1 = (1 + $1.length)…($1.length + $2.length)
m = b.match(/([\. ]*)([^\. ]*)/)
interval2 = (1 + $1.length)..($1.length + $2.length)
result = []
result << :before if interval1.before?(interval2)
result << :after if interval1.after?(interval2)
result << :meets if interval1.meets?(interval2)
result << :met_by if interval1.met_by?(interval2)
result << :overlaps if interval1.overlaps?(interval2)
result << :overlapped_by if interval1.overlapped_by?(interval2)
result << :starts if interval1.starts?(interval2)
result << :started_by if interval1.started_by?(interval2)
result << :finishes if interval1.finishes?(interval2)
result << :finished_by if interval1.finished_by?(interval2)
result << :during if interval1.during?(interval2)
result << :contains if interval1.contains?(interval2)
result << :equals if interval1.equals?(interval2)
result << :disjoint if interval1.disjoint?(interval2)
puts "[#{interval1}] [#{interval2}] --> #{result.inspect}"
return result
end
def test_intervals
assert (determine("111........",
"....222....") - [:before, :disjoint]).empty?
assert (determine("11111......",
"....222....") - [:meets, :disjoint]).empty?
assert (determine("111111......",
"....222....") - [:overlaps]).empty?
assert (determine("1111111....",
"....222....") - [:finished_by]).empty?
assert (determine("....111....",
"2222222....") - [:finishes]).empty?
assert (determine("11111111111",
"....222....") - [:contains]).empty?
assert (determine("....111....",
"22222222222") - [:during]).empty?
assert (determine("....111....",
"....222....") - [:equals]).empty?
assert (determine("....11.....",
"....222....") - [:starts]).empty?
assert (determine("....1111111",
"....222....") - [:started_by]).empty?
assert (determine(".....111111",
"....222....") - [:overlapped_by]).empty?
assert (determine("......11111",
"....222....") - [:met_by, :disjoint]).empty?
assert (determine("........111",
"....222....") - [:after, :disjoint]).empty?
end
end
end
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs