Skip to content

Commit 6c19799

Browse files
authored
Merge pull request #194 from almegren/master
Make interval/concur handle three or more adjecent intervals
2 parents 1d0b7f1 + 3f587fa commit 6c19799

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

src/tick/alpha/interval.cljc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,14 @@
327327
representing the interval of time the given intervals are
328328
concurrent."
329329
([x y]
330-
(case (relation x y)
331-
:overlaps (slice x (t/beginning y) (t/end x))
332-
:overlapped-by (slice x (t/beginning x) (t/end y))
333-
(:starts :finishes :during :equals) x
334-
(:started-by :finished-by :contains) (slice x (t/beginning y) (t/end y))
335-
nil))
330+
(if (or (nil? x) (nil? y))
331+
nil
332+
(case (relation x y)
333+
:overlaps (slice x (t/beginning y) (t/end x))
334+
:overlapped-by (slice x (t/beginning x) (t/end y))
335+
(:starts :finishes :during :equals) x
336+
(:started-by :finished-by :contains) (slice x (t/beginning y) (t/end y))
337+
nil)))
336338
([x y & args]
337339
(reduce concur (concur x y) args)))
338340

test/tick/alpha/interval_test.cljc

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,29 @@
164164
(ti/new-interval (instants 1) (instants 3))
165165
(ti/concur
166166
(ti/new-interval (instants 1) (instants 3))
167-
(ti/new-interval (instants 0) (instants 3))))))
167+
(ti/new-interval (instants 0) (instants 3)))))
168+
169+
(is
170+
(=
171+
(ti/new-interval (instants 1) (instants 2))
172+
(ti/concur
173+
(ti/new-interval (instants 1) (instants 3))
174+
(ti/new-interval (instants 1) (instants 2))
175+
(ti/new-interval (instants 0) (instants 2)))))
176+
177+
(is
178+
(nil?
179+
(ti/concur
180+
(ti/new-interval (instants 1) (instants 2))
181+
(ti/new-interval (instants 2) (instants 3))
182+
(ti/new-interval (instants 0) (instants 2)))))
183+
184+
(is
185+
(nil?
186+
(ti/concur
187+
(ti/new-interval (instants 0) (instants 1))
188+
(ti/new-interval (instants 1) (instants 2))
189+
(ti/new-interval (instants 2) (instants 3))))))
168190

169191
;; Sequence tests
170192

0 commit comments

Comments
 (0)