branch: elpa/subed commit 7b5c5e015f6ae34589d330b4ed3e62d8802c9185 Author: Random User <rnd...@posteo.de> Commit: Random User <rnd...@posteo.de>
Add/Fix tests for moving subtitles --- tests/test-subed.el | 445 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 360 insertions(+), 85 deletions(-) diff --git a/tests/test-subed.el b/tests/test-subed.el index f2bdd56..93c9ac2 100644 --- a/tests/test-subed.el +++ b/tests/test-subed.el @@ -139,18 +139,24 @@ (describe "Moving" (it "adjusts start and stop time by the same amount." (with-temp-buffer - (insert mock-srt-data) - (cl-loop for sub-id in '(1 2 3) do - (subed-jump-to-subtitle-id sub-id) - (let ((orig-start (subed-subtitle-msecs-start)) - (orig-stop (subed-subtitle-msecs-stop))) - (subed-move-subtitle-forward 100) - (expect (subed-subtitle-msecs-start) :to-equal (+ orig-start 100)) - (expect (subed-subtitle-msecs-stop) :to-equal (+ orig-stop 100)) - (subed-move-subtitle-backward 100) - (expect (subed-subtitle-msecs-start) :to-equal orig-start) - (expect (subed-subtitle-msecs-stop) :to-equal orig-stop))))) - (it "adjusts start and stop time by the same amount when adding fails." + (insert (concat "1\n" + "00:00:01,000 --> 00:00:01,600\n" + "Foo.\n\n" + "2\n" + "00:00:02,000 --> 00:00:03,000\n" + "Bar.\n" + "3\n" + "00:00:02,000 --> 00:00:03,000\n" + "Bar.\n")) + (let ((orig-point (subed-jump-to-subtitle-id 2))) + (subed-move-subtitle-forward 100) + (expect (subed-subtitle-msecs-start) :to-equal 2100) + (expect (subed-subtitle-msecs-stop) :to-equal 3100) + (subed-move-subtitle-backward 200) + (expect (subed-subtitle-msecs-start) :to-equal 1900) + (expect (subed-subtitle-msecs-stop) :to-equal 2900) + (expect (point) :to-equal orig-point)))) + (it "adjusts start and stop time by the same amount when bumping into next subtitle." (with-temp-buffer (insert (concat "1\n" "00:00:01,000 --> 00:00:01,600\n" @@ -158,11 +164,12 @@ "2\n" "00:00:02,000 --> 00:00:03,000\n" "Bar.\n")) - (subed-jump-to-subtitle-id 1) - (subed-move-subtitle-forward 1000) - (expect (subed-subtitle-msecs-start) :to-equal 1300) - (expect (subed-subtitle-msecs-stop) :to-equal 1900))) - (it "adjusts start and stop time by the same amount when subtracting fails." + (let ((orig-point (subed-jump-to-subtitle-id 1))) + (subed-move-subtitle-forward 1000) + (expect (subed-subtitle-msecs-start) :to-equal 1300) + (expect (subed-subtitle-msecs-stop) :to-equal 1900) + (expect (point) :to-equal orig-point)))) + (it "adjusts start and stop time by the same amount when bumping into previous subtitle." (with-temp-buffer (insert (concat "1\n" "00:00:01,000 --> 00:00:01,600\n" @@ -170,11 +177,12 @@ "2\n" "00:00:02,000 --> 00:00:03,000\n" "Bar.\n")) - (subed-jump-to-subtitle-id 2) - (subed-move-subtitle-backward 1000) - (expect (subed-subtitle-msecs-start) :to-equal 1700) - (expect (subed-subtitle-msecs-stop) :to-equal 2700))) - (it "does not adjust start time if adjusting stop time fails." + (let ((orig-point (subed-jump-to-subtitle-id 2))) + (subed-move-subtitle-backward 1000) + (expect (subed-subtitle-msecs-start) :to-equal 1700) + (expect (subed-subtitle-msecs-stop) :to-equal 2700) + (expect (point) :to-equal orig-point)))) + (it "does not adjust anything if subtitle cannot be moved forward at all." (with-temp-buffer (insert (concat "1\n" "00:00:01,000 --> 00:00:02,000\n" @@ -182,13 +190,15 @@ "2\n" "00:00:02,000 --> 00:00:03,000\n" "Bar.\n")) - (subed-jump-to-subtitle-id 1) - (subed-move-subtitle-forward 1) - (expect (subed-subtitle-msecs-start 1) :to-equal 1000) - (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) - (expect (subed-subtitle-msecs-start 2) :to-equal 2000) - (expect (subed-subtitle-msecs-stop 2) :to-equal 3000))) - (it "does not adjust stop time if adjusting start time fails." + (let ((orig-point (subed-jump-to-subtitle-id 1))) + (subed-jump-to-subtitle-id 1) + (subed-move-subtitle-forward 1) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (point) :to-equal orig-point)))) + (it "does not adjust anything if subtitle cannot be moved backward at all." (with-temp-buffer (insert (concat "1\n" "00:00:01,000 --> 00:00:02,000\n" @@ -196,67 +206,332 @@ "2\n" "00:00:02,000 --> 00:00:03,000\n" "Bar.\n")) - (subed-jump-to-subtitle-id 2) - (subed-move-subtitle-backward 1) - (expect (subed-subtitle-msecs-start 1) :to-equal 1000) - (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) - (expect (subed-subtitle-msecs-start 2) :to-equal 2000) - (expect (subed-subtitle-msecs-stop 2) :to-equal 3000))) + (let ((orig-point (subed-jump-to-subtitle-id 2))) + (subed-jump-to-subtitle-id 2) + (subed-move-subtitle-backward 1) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (point) :to-equal orig-point)))) (describe "adjusts subtitles in the active region," (it "excluding the first subtitle." (with-temp-buffer - (insert mock-srt-data) - (let ((orig-start-1 (subed-subtitle-msecs-start 1)) - (orig-stop-1 (subed-subtitle-msecs-stop 1)) - (orig-start-2 (subed-subtitle-msecs-start 2)) - (orig-stop-2 (subed-subtitle-msecs-stop 2)) - (orig-start-3 (subed-subtitle-msecs-start 3)) - (orig-stop-3 (subed-subtitle-msecs-stop 3))) - (spy-on 'use-region-p :and-return-value t) - (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-text 2)) - (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-time-start 3)) + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:03,000 --> 00:00:04,000\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:06,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-text 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-time-start 3)) + (let ((orig-point (subed-jump-to-subtitle-text 2))) (subed-move-subtitle-forward 100) - (expect (subed-subtitle-msecs-start 1) :to-equal orig-start-1) - (expect (subed-subtitle-msecs-stop 1) :to-equal orig-stop-1) - (expect (subed-subtitle-msecs-start 2) :to-equal (+ orig-start-2 100)) - (expect (subed-subtitle-msecs-stop 2) :to-equal (+ orig-stop-2 100)) - (expect (subed-subtitle-msecs-start 3) :to-equal (+ orig-start-3 100)) - (expect (subed-subtitle-msecs-stop 3) :to-equal (+ orig-stop-3 100)) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 3100) + (expect (subed-subtitle-msecs-stop 2) :to-equal 4100) + (expect (subed-subtitle-msecs-start 3) :to-equal 5100) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6100) + (expect (point) :to-equal orig-point) (subed-move-subtitle-backward 200) - (expect (subed-subtitle-msecs-start 1) :to-equal orig-start-1) - (expect (subed-subtitle-msecs-stop 1) :to-equal orig-stop-1) - (expect (subed-subtitle-msecs-start 2) :to-equal (- orig-start-2 100)) - (expect (subed-subtitle-msecs-stop 2) :to-equal (- orig-stop-2 100)) - (expect (subed-subtitle-msecs-start 3) :to-equal (- orig-start-3 100)) - (expect (subed-subtitle-msecs-stop 3) :to-equal (- orig-stop-3 100))))) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2900) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3900) + (expect (subed-subtitle-msecs-start 3) :to-equal 4900) + (expect (subed-subtitle-msecs-stop 3) :to-equal 5900) + (expect (point) :to-equal orig-point)))) (it "excluding the last subtitle." (with-temp-buffer - (insert mock-srt-data) - (let ((orig-start-1 (subed-subtitle-msecs-start 1)) - (orig-stop-1 (subed-subtitle-msecs-stop 1)) - (orig-start-2 (subed-subtitle-msecs-start 2)) - (orig-stop-2 (subed-subtitle-msecs-stop 2)) - (orig-start-3 (subed-subtitle-msecs-start 3)) - (orig-stop-3 (subed-subtitle-msecs-stop 3))) - (spy-on 'use-region-p :and-return-value t) - (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-time-stop 1)) - (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-end 2)) - (subed-move-subtitle-forward 100) - (expect (subed-subtitle-msecs-start 1) :to-equal (+ orig-start-1 100)) - (expect (subed-subtitle-msecs-stop 1) :to-equal (+ orig-stop-1 100)) - (expect (subed-subtitle-msecs-start 2) :to-equal (+ orig-start-2 100)) - (expect (subed-subtitle-msecs-stop 2) :to-equal (+ orig-stop-2 100)) - (expect (subed-subtitle-msecs-start 3) :to-equal orig-start-3) - (expect (subed-subtitle-msecs-stop 3) :to-equal orig-stop-3) + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:03,000 --> 00:00:04,000\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:06,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-text 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-time-stop 2)) + (let ((orig-point (subed-jump-to-subtitle-time-stop 3))) + (subed-move-subtitle-forward 500) + (expect (subed-subtitle-msecs-start 1) :to-equal 1500) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2500) + (expect (subed-subtitle-msecs-start 2) :to-equal 3500) + (expect (subed-subtitle-msecs-stop 2) :to-equal 4500) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point) (subed-move-subtitle-backward 300) - (expect (subed-subtitle-msecs-start 1) :to-equal (- orig-start-1 200)) - (expect (subed-subtitle-msecs-stop 1) :to-equal (- orig-stop-1 200)) - (expect (subed-subtitle-msecs-start 2) :to-equal (- orig-start-2 200)) - (expect (subed-subtitle-msecs-stop 2) :to-equal (- orig-stop-2 200)) - (expect (subed-subtitle-msecs-start 3) :to-equal orig-start-3) - (expect (subed-subtitle-msecs-stop 3) :to-equal orig-stop-3) - ))) + (expect (subed-subtitle-msecs-start 1) :to-equal 1200) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2200) + (expect (subed-subtitle-msecs-start 2) :to-equal 3200) + (expect (subed-subtitle-msecs-stop 2) :to-equal 4200) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point)))) + (describe "not changing spacing between subtitles" + (it "when moving forward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:10,000 --> 00:00:11,000\n" + "Bar.\n\n" + "3\n" + "00:00:12,000 --> 00:00:13,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 2)) + (let ((orig-point (subed-jump-to-subtitle-time-start 1))) + (subed-move-subtitle-forward 2000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1900) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2900) + (expect (subed-subtitle-msecs-start 2) :to-equal 10900) + (expect (subed-subtitle-msecs-stop 2) :to-equal 11900) + (expect (subed-subtitle-msecs-start 3) :to-equal 12000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 13000) + (expect (point) :to-equal orig-point)))) + (it "when moving backward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:3,000 --> 00:00:4,000\n" + "Bar.\n\n" + "3\n" + "00:00:10,000 --> 00:00:11,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 3)) + (let ((orig-point (subed-jump-to-subtitle-time-start 2))) + (subed-move-subtitle-backward 10000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2100) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3100) + (expect (subed-subtitle-msecs-start 3) :to-equal 9100) + (expect (subed-subtitle-msecs-stop 3) :to-equal 10100) + (expect (point) :to-equal orig-point)))) + ) ) + (describe "unless there is no space left" + (it "when moving forward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:10,000 --> 00:00:11,000\n" + "Bar.\n\n" + "3\n" + "00:00:11,000 --> 00:00:12,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 2)) + (let ((orig-point (subed-jump-to-subtitle-text 1))) + (subed-move-subtitle-forward 1) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 10000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 11000) + (expect (subed-subtitle-msecs-start 3) :to-equal 11000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 12000) + (expect (point) :to-equal orig-point)))) + (it "when moving backward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:02,000 --> 00:00:03,000\n" + "Bar.\n\n" + "3\n" + "00:00:11,000 --> 00:00:12,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 3)) + (let ((orig-point (subed-jump-to-subtitle-id 3))) + (subed-move-subtitle-backward 1) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (subed-subtitle-msecs-start 3) :to-equal 11000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 12000) + (expect (point) :to-equal orig-point)))) + ) + (describe "ignoring spacing for non-leading subtitles" + (it "when moving forward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:00,000 --> 00:00:01,000\n" + "Foo.\n\n" + "2\n" + "00:00:01,050 --> 00:00:02,000\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:6,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 2)) + (let ((orig-point (subed-jump-to-subtitle-time-start 3))) + (subed-move-subtitle-forward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 2050) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point)))) + (it "when moving backward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:04,000 --> 00:00:05,000\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:05,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 3)) + (let ((orig-point (subed-jump-to-subtitle-time-stop 1))) + (subed-move-subtitle-backward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 3000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 4000) + (expect (subed-subtitle-msecs-start 3) :to-equal 4000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 4000) + (expect (point) :to-equal orig-point)))) + ) + (describe "ignoring overlapping subtitles" + (it "when moving forward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:01,500\n" + "Foo.\n\n" + "2\n" + "00:00:01,300 --> 00:00:02,000\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:6,000\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 2)) + (let ((orig-point (subed-jump-to-subtitle-text 2))) + (subed-move-subtitle-forward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 2000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2500) + (expect (subed-subtitle-msecs-start 2) :to-equal 2300) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point)))) + (it "when moving backward." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:04,500 --> 00:00:04,000\n" + "Bar.\n\n" + "3\n" + "00:00:04,500 --> 00:00:04,490\n" + "Baz.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-id 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-text 3)) + (let ((orig-point (subed-jump-to-subtitle-text 1))) + (subed-move-subtitle-backward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 3500) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3000) + (expect (subed-subtitle-msecs-start 3) :to-equal 3500) + (expect (subed-subtitle-msecs-stop 3) :to-equal 3490) + (expect (point) :to-equal orig-point)))) + ) + (it "ignoring start time being larger than stop time." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,500 --> 00:00:01,400\n" + "Foo.\n\n" + "2\n" + "00:00:02,500 --> 00:00:02,499\n" + "Bar.\n\n" + "3\n" + "00:00:05,000 --> 00:00:06,000\n" + "Bar.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-text 1)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-time-start 2)) + (let ((orig-point (subed-jump-to-subtitle-time-stop 1))) + (subed-move-subtitle-forward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 2500) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2400) + (expect (subed-subtitle-msecs-start 2) :to-equal 3500) + (expect (subed-subtitle-msecs-stop 2) :to-equal 3499) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point) + (subed-move-subtitle-backward 500) + (expect (subed-subtitle-msecs-start 1) :to-equal 2000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 1900) + (expect (subed-subtitle-msecs-start 2) :to-equal 3000) + (expect (subed-subtitle-msecs-stop 2) :to-equal 2999) + (expect (subed-subtitle-msecs-start 3) :to-equal 5000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point)))) + (it "ignoring stop time being smaller than start time." + (with-temp-buffer + (insert (concat "1\n" + "00:00:01,000 --> 00:00:02,000\n" + "Foo.\n\n" + "2\n" + "00:00:04,100 --> 00:00:04,099\n" + "Bar.\n\n" + "3\n" + "00:00:05,500 --> 00:00:05,000\n" + "Bar.\n")) + (spy-on 'use-region-p :and-return-value t) + (spy-on 'region-beginning :and-return-value (subed-jump-to-subtitle-text 2)) + (spy-on 'region-end :and-return-value (subed-jump-to-subtitle-time-start 3)) + (let ((orig-point (subed-jump-to-subtitle-text 1))) + (subed-move-subtitle-forward 1000) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 5100) + (expect (subed-subtitle-msecs-stop 2) :to-equal 5099) + (expect (subed-subtitle-msecs-start 3) :to-equal 6500) + (expect (subed-subtitle-msecs-stop 3) :to-equal 6000) + (expect (point) :to-equal orig-point) + (subed-move-subtitle-backward 500) + (expect (subed-subtitle-msecs-start 1) :to-equal 1000) + (expect (subed-subtitle-msecs-stop 1) :to-equal 2000) + (expect (subed-subtitle-msecs-start 2) :to-equal 4600) + (expect (subed-subtitle-msecs-stop 2) :to-equal 4599) + (expect (subed-subtitle-msecs-start 3) :to-equal 6000) + (expect (subed-subtitle-msecs-stop 3) :to-equal 5500) + (expect (point) :to-equal orig-point)))) (it "disables subtitle replay while moving subtitles." (with-temp-buffer (insert mock-srt-data) @@ -264,9 +539,9 @@ (spy-on 'subed-enable-replay-adjusted-subtitle :and-call-through) (spy-on 'subed-disable-replay-adjusted-subtitle :and-call-through) (spy-on 'subed-adjust-subtitle-start :and-call-fake - (lambda (msecs) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) + (lambda (msecs &optional a b) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) (spy-on 'subed-adjust-subtitle-stop :and-call-fake - (lambda (msecs) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) + (lambda (msecs &optional a b) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) (subed-move-subtitle-forward 100) (expect 'subed-disable-replay-adjusted-subtitle :to-have-been-called-times 1) (expect 'subed-enable-replay-adjusted-subtitle :to-have-been-called-times 1) @@ -280,9 +555,9 @@ (spy-on 'subed-enable-replay-adjusted-subtitle :and-call-through) (spy-on 'subed-disable-replay-adjusted-subtitle :and-call-through) (spy-on 'subed-adjust-subtitle-start :and-call-fake - (lambda (msecs) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) + (lambda (msecs &optional a b) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) (spy-on 'subed-adjust-subtitle-stop :and-call-fake - (lambda (msecs) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) + (lambda (msecs &optional a b) (expect (subed-replay-adjusted-subtitle-p) :to-be nil))) (subed-move-subtitle-forward 100) (expect 'subed-disable-replay-adjusted-subtitle :to-have-been-called-times 1) (expect 'subed-enable-replay-adjusted-subtitle :to-have-been-called-times 0)