summaryrefslogtreecommitdiff
path: root/test/lisp/cedet/srecode/document-tests.el
blob: 0bc6e10d7a771e1ea404538f2db1fbc14a8e35e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
;;; document-tests.el --- Tests for srecode/document.el  -*- lexical-binding:t -*-

;; Copyright (C) 2008-2021 Free Software Foundation, Inc.

;; Author: Eric M. Ludlam <zappo@gnu.org>

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;; Extracted from srecode-document.el in the CEDET distribution.

;; Converted to ert from test/manual/cedet/srecode-tests.el

;;; Code:

(require 'ert)
(require 'srecode/document)

;; FIXME: This test fails even before conversion to ert.
(ert-deftest srecode-document-function-comment-extract-test ()
  "Test old comment extraction.
Dump out the extracted dictionary."
  :tags '(:unstable)
  (interactive)

  (srecode-load-tables-for-mode major-mode)
  (srecode-load-tables-for-mode major-mode 'document)

  (should (srecode-table))
  ;; (error "No template table found for mode %s" major-mode)

  (let* ((temp (srecode-template-get-table (srecode-table)
                                           "function-comment"
                                           "declaration"
                                           'document))
         (fcn-in (semantic-current-tag)))

    (should temp)
    ;; (error "No templates for function comments")

    ;; Try to figure out the tag we want to use.
    (should fcn-in)
    (should (semantic-tag-of-class-p fcn-in 'function))
    ;; (error "No tag of class 'function to insert comment for")

    (let ((lextok (semantic-documentation-comment-preceding-tag fcn-in 'lex)))

      (should lextok)
      ;; (error "No comment to attempt an extraction")

      (let ((s (semantic-lex-token-start lextok))
            (e (semantic-lex-token-end lextok))
            (extract nil))

        (pulse-momentary-highlight-region s e)

        ;; Extract text from the existing comment.
        (setq extract (srecode-extract temp s e))

        (with-output-to-temp-buffer "*SRECODE DUMP*"
          (princ "EXTRACTED DICTIONARY FOR ")
          (princ (semantic-tag-name fcn-in))
          (princ "\n--------------------------------------------\n")
          (srecode-dump extract))))))

;;; document-tests.el ends here