branch: externals/hyperbole commit 847c5c79fbace37b79b3f6afd888ec7ab0d499fa Author: Mats Lidell <mats.lid...@lidells.se> Commit: GitHub <nore...@github.com>
Add kotl-mode tests (#94) --- ChangeLog | 7 ++++ test/kotl-mode-tests.el | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6fd43ea..f6596ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2021-05-18 Mats Lidell <ma...@gnu.org> +* test/kotl-mode-tests.el (setup-kotl-mode-example-test) + (smart-menu-loads-kotl-example, kotl-mode-example-loads-kotl-example) + (kotl-mode-move-between-cells, kotl-mode-indent-cell-changes-level): + Add kotl-mode tests. + +2021-05-17 Mats Lidell <ma...@gnu.org> + * kotl/kotl-mode.el (hypb): hyperbole.el (hypb): Use compatibility macro. diff --git a/test/kotl-mode-tests.el b/test/kotl-mode-tests.el new file mode 100644 index 0000000..5ce7658 --- /dev/null +++ b/test/kotl-mode-tests.el @@ -0,0 +1,87 @@ +;;; kotl-mode-tests.el --- kotl-mode-el tests -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Mats Lidell + +;; Author: Mats Lidell <ma...@gnu.org> +;; +;; Orig-Date: 18-May-21 at 22:14:10 +;; +;; Copyright (C) 2021 Free Software Foundation, Inc. +;; See the "HY-COPY" file for license information. +;; +;; This file is part of GNU Hyperbole. + +;;; Commentary: + +;; Tests for kotl-mode in "../kotl/kotl-mode.el" + +;;; Code: + +(require 'ert) +(require 'kotl-mode) + +(load (expand-file-name "hy-test-helpers" + (file-name-directory (or load-file-name + default-directory)))) +(declare-function hy-test-helpers:consume-input-events "hy-test-helpers") + +(defmacro setup-kotl-mode-example-test (&rest body) + "Setup for test using kotl-mode:example and run BODY." + `(unwind-protect + (progn + ,@body + (should (equal major-mode 'kotl-mode)) + (should (string= (buffer-name (current-buffer)) "EXAMPLE.kotl"))) + (kill-buffer "EXAMPLE.kotl"))) + +(ert-deftest smart-menu-loads-kotl-example () + "Loading kotl-mode example file works." + (skip-unless (not noninteractive)) + (setup-kotl-mode-example-test + (should (hact 'kbd-key "C-h h k e")) + (hy-test-helpers:consume-input-events))) + +(ert-deftest kotl-mode-example-loads-kotl-example () + "Loading kotl-mode example file works." + (setup-kotl-mode-example-test + (kotl-mode:example))) + +(ert-deftest kotl-mode-move-between-cells () + "Loading kotl-mode example file works." + (setup-kotl-mode-example-test + ;; Start in first cell + (kotl-mode:example) + (should (kotl-mode:first-cell-p)) + + ;; Move to next cell + (kotl-mode:next-cell 1) + (should (not (kotl-mode:first-cell-p))) + (should (equal (kcell-view:level) 1)) + (should (string= (kcell-view:visible-label) "2")) + + ;; Move to next cell + (kotl-mode:next-cell 1) + (should (not (kotl-mode:first-cell-p))) + (should (equal (kcell-view:level) 2)) + (should (string= (kcell-view:visible-label) "2a"))) + ) + +(ert-deftest kotl-mode-indent-cell-changes-level () + "Loading kotl-mode example file works." + (skip-unless (not noninteractive)) + (setup-kotl-mode-example-test + (kotl-mode:example) + (should (kotl-mode:first-cell-p)) + (kotl-mode:next-cell 1) + (should (hact 'kbd-key "TAB")) + (hy-test-helpers:consume-input-events) + (should (equal (kcell-view:level) 2)) + (should (string= (kcell-view:visible-label) "1a")) + ;; Cleanup + (set-buffer-modified-p nil))) + +(provide 'kotl-mode-tests) +;;; kotl-mode-tests.el ends here + + +