Hi,
I traced a bug when working with timespans to the following issue illustrated
in the code snippet below.
The last expression in the snippet yields false, although it should yield true
(imho).
|start end span|
start :=DateAndTime now.
end := start + 1 hour.
span := Timespan starting: start ending: end.
(span intersection: span) = span --> false
I think that the intersection of a span with itself, should be itself. The
origin of the problem is that Timespan>>intersection: creates a new timespan
roughly as follows:
Timespan starting: aBegin ending: self end.
But Timespan>>end returns the end time of the timespan minus the
clockprecision. As such, the intersecting span is a nanosecond shorter than the
one we would expect. This eventually yields wrong results when working with
timespans.
The real question now is: should the implementation of Timespan>>intersection
be changed -or- should Timespan>>end really return the (non-included) end time
(that was passed when constructing it)?
I sent this email to [email protected], but a discussion here probably will
not hurt either.
Best regards
Johan Brichau