.emacs.d/site-lisp/timeline-tools-test.el

104 lines
4.1 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; timeline-tools-test.el -- Tests for timeline-tools -*- lexical-binding: t -*-
;;; Code:
(require 'ert)
(require 'timeline-tools)
(require 'cl-lib)
;;
(ert-deftest timeline-tools-test-parse-clocklines-1 ()
"Test `timeline-tools-clocklines-in-range with simple setup."
(let ((result (with-temp-buffer
(insert "* Task 1\n")
(insert ":LOGBOOK:\n")
(insert "CLOCK: [2018-01-07 Sun 13:15]--[2018-01-07 Sun 14:00] => 0:45\n")
(insert ":END:\n")
(org-mode) ; otherwise parsing wont work
(timeline-tools-clocklines-in-range 1515279600.0 1515366000.0))))
(should (equal 1 (length result)))
(should (equal 1 (length (car result))))
(should (markerp (car (car result))))
(should (equal (car (cdr (car result)))
(cons 1515327300.0 1515330000.0)))))
(ert-deftest timeline-tools-test-parse-clocklines-2 ()
"Test `timeline-tools-clocklines-in-range with multiple clocklines."
(let ((result (with-temp-buffer
(insert "* Task 1\n")
(insert ":LOGBOOK:\n")
(insert "CLOCK: [2018-01-07 Sun 13:15]--[2018-01-07 Sun 14:00] => 0:45\n")
(insert "CLOCK: [2018-01-08 Mon 16:15]--[2018-01-10 Wed 13:10] => 44:55\n")
(insert "CLOCK: [2018-01-10 Wed 10:07]--[2018-01-12 Fri 14:00] => 51:53\n")
(insert ":END:\n")
(org-mode)
(timeline-tools-clocklines-in-range 1515279600.0 1515600000.0))))
(should (equal 1 (length result)))
(should (equal 4 (length (car result))))
(should (markerp (car (car result))))
(should (equal (cdr (car result))
(list (cons 1515327300.0 1515330000.0)
(cons 1515424500.0 1515586200.0)
(cons 1515575220.0 1515600000.0))))))
(ert-deftest timeline-tools-test-parse-clocklines-3 ()
"Test `timeline-tools-clocklines-in-range with multiple tasks."
(let ((result (with-temp-buffer
(insert "
* Task 1
:LOGBOOK:
CLOCK: [2018-01-07 Sun 13:15]--[2018-01-07 Sun 14:00] => 0:45
CLOCK: [2018-01-08 Mon 16:15]--[2018-01-10 Wed 13:10] => 44:55
CLOCK: [2018-01-10 Wed 10:07]--[2018-01-12 Fri 14:00] => 51:53
:END:
* Task 2
:LOGBOOK:
CLOCK: [2018-01-07 Sun 15:13]--[2018-01-07 Sun 16:17] => 1:04
CLOCK: [2018-01-08 Mon 16:00]--[2018-01-08 Mon 16:15] => 0:15
:END:
")
(org-mode)
(timeline-tools-clocklines-in-range 1515279600.0 1515600000.0))))
(should (equal 2 (length result)))
(should (equal '(4 3) (mapcar #'length result)))
(should (cl-every #'markerp (mapcar #'car result)))
(should (equal (mapcar #'cdr result)
'(((1515327300.0 . 1515330000.0)
(1515424500.0 . 1515586200.0)
(1515575220.0 . 1515600000.0))
((1515334380.0 . 1515338220.0)
(1515423600.0 . 1515424500.0)))))))
(ert-deftest timeline-tools-test-parse-clocklines-4 ()
"Test `timeline-tools-clocklines-in-range with extended time range."
(let ((result (with-temp-buffer
(insert "
* Task 1
:LOGBOOK:
CLOCK: [2018-01-07 Sun 13:15]--[2018-01-07 Sun 14:00] => 0:45
CLOCK: [2018-01-08 Mon 16:15]--[2018-01-10 Wed 13:10] => 44:55
CLOCK: [2018-01-10 Wed 10:07]--[2018-01-12 Fri 14:00] => 51:53
:END:
* Task 2
:LOGBOOK:
CLOCK: [2018-01-07 Sun 15:13]--[2018-01-07 Sun 16:17] => 1:04
CLOCK: [2018-01-08 Mon 16:00]--[2018-01-08 Mon 16:15] => 0:15
:END:
")
(org-mode)
(timeline-tools-clocklines-in-range 1515279600.0 1515700000.0))))
(should (equal 2 (length result)))
(should (equal '(4 3) (mapcar #'length result)))
(should (cl-every #'markerp (mapcar #'car result)))
(should (equal (mapcar #'cdr result)
'(((1515327300.0 . 1515330000.0)
(1515424500.0 . 1515586200.0)
(1515575220.0 . 1515700000.0))
((1515334380.0 . 1515338220.0)
(1515423600.0 . 1515424500.0)))))))