[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/swift-mode 0eca818 431/496: Add test for Imenu
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/swift-mode 0eca818 431/496: Add test for Imenu |
Date: |
Sun, 29 Aug 2021 11:34:22 -0400 (EDT) |
branch: elpa/swift-mode
commit 0eca818cc83ab87d14844e85f0edd27620489a3b
Author: taku0 <mxxouy6x3m_github@tatapa.org>
Commit: taku0 <mxxouy6x3m_github@tatapa.org>
Add test for Imenu
---
test/swift-files/imenu/imenu-expected.el | 40 ++++++++++
test/swift-files/imenu/imenu.swift | 121 +++++++++++++++++++++++++++++++
test/swift-mode-test-imenu.el | 84 +++++++++++++++++++++
test/swift-mode-test.el | 4 +-
4 files changed, 248 insertions(+), 1 deletion(-)
diff --git a/test/swift-files/imenu/imenu-expected.el
b/test/swift-files/imenu/imenu-expected.el
new file mode 100644
index 0000000..da1ac2d
--- /dev/null
+++ b/test/swift-files/imenu/imenu-expected.el
@@ -0,0 +1,40 @@
+((precedencegroup (identifier "precedenceGroup" 2669 2684) nil)
+ (operator (identifier "*****" 2629 2634) nil)
+ (operator (identifier "-----" 2589 2594) nil)
+ (operator (identifier "+++++" 2550 2555) nil)
+ (extension (identifier "FooClass" 2385 2393)
+ ((class (identifier "NestedClass1" 2425 2437)
+ ((class (identifier "NestedClass2" 2454 2466)
+ ((class (identifier "NestedClass3" 2487 2499)
nil)))))))
+ (protocol (identifier "FooProtocol" 2125 2136)
+ ((var (identifier "protocolProperty" 2152 2168) nil)
+ (func (identifier "protocolMethod(a:b:)" 2194 2208) nil)
+ (init (identifier "init(a:b:c:)" 2236 2240) nil)
+ (subscript (identifier "subscript(_:bbb:)" 2271 2280) nil)
+ (associatedtype (identifier "AssociatedType" 2352 2366) nil)))
+ (struct (identifier "FooStruct" 2096 2105) nil)
+ (enum (identifier "FooEnum2" 2031 2039)
+ ((case (identifier "case1" 2056 2061) nil)
+ (case (identifier "case2" 2076 2081) nil)))
+ (enum (identifier "FooEnum1" 1896 1904)
+ ((case (identifier "case1" 1943 1948) nil)
+ (case (identifier "case2" 1974 1979) nil)
+ (case (identifier "case3" 2003 2008) nil)))
+ (class (identifier "FooClass" 530 538)
+ ((var (identifier "classVariable1" 607 621) nil)
+ (class (identifier "final" 657 662) nil)
+ (var (identifier "compuatedProperty" 685 702) nil)
+ (var (identifier "observedProperty" 844 860) nil)
+ (typealias (identifier "TypeAlias" 1008 1017) nil)
+ (func (identifier "function1(aaa:_:ddd:eee:)" 1072 1081) nil)
+ (func (identifier "function2()" 1277 1286) nil)
+ (func (identifier "function3(a:)" 1360 1369) nil)
+ (func (identifier "+(_:_:)" 1504 1505) nil)
+ (subscript (identifier "subscript(_:bbb:)" 1666 1675) nil)
+ (init (identifier "init(a:)" 1814 1818) nil)
+ (init (identifier "init(b:)" 1841 1845) nil)
+ (deinit (identifier "deinit" 1868 1874) nil)))
+ (var (identifier "globalVariable2" 493 508) nil)
+ (var (identifier "globalVariable1" 463 478) nil)
+ (let (identifier "globalConstant2" 429 444) nil)
+ (let (identifier "globalConstant1" 399 414) nil))
diff --git a/test/swift-files/imenu/imenu.swift
b/test/swift-files/imenu/imenu.swift
new file mode 100644
index 0000000..3a6ed38
--- /dev/null
+++ b/test/swift-files/imenu/imenu.swift
@@ -0,0 +1,121 @@
+@AAA import FooModule1
+@BBB(1, 2, 3) import FooModule2.SubModule1
+import typealias FooModule3.ImportedTypeAlias
+import struct FooModule3.ImportedStruct
+import class FooModule3.ImportedClass
+import enum FooModule3.ImportedEnum
+import protocol FooModule3.ImportedProtocol
+import let FooModule3.importedConstant
+import var FooModule3.importedVariable
+import func FooModule3.importedFunction
+
+@AAA let globalConstant1 = 1,
+ globalConstant2: Int = 2
+@AAA var globalVariable1 = 1,
+ globalVariable2: Int = 2
+
+@AAA class FooClass<A, B, C>: AAA {
+ @AAA private unowned(safe) lazy class final var classVariable1: AAA = AAA()
+ @AAA public class final {
+ }
+
+ @AAA var compuatedProperty: Int {
+ get {
+ return 1
+ }
+
+ set {
+ let a = 1
+ var b = 2
+ }
+ }
+
+ @AAA var observedProperty Int {
+ willSet(a) {
+ let a = 1
+ var b = 2
+ }
+
+ didSet(a) {
+ }
+ }
+
+ @AAA internal typealias TypeAlias<A: AA, B: BB, C: CC> = AAA
+
+ @AAA class final func function1<A: AA, B: BB, C: CC>(aaa bbb: Int, _ ccc:
Int, ddd: Int = 1, eee: inout Int = 2) throws -> AAA {
+ let a = 1
+ var b = 2
+
+ return AAA()
+ }
+ @AAA class final func function2() rethrows -> AAA {
+ return AAA()
+ }
+ @AAA class final func function3(a: Int...) rethrows -> AAA {
+ return AAA()
+ }
+
+ // Argument labels of operators are always "_"
+ @AAA class final func + <A: AA, B: BB, C: CC>(lhs: FooClass1<A, B, C>,
rhs: Int) rethrows -> AAA {
+ return AAA()
+ }
+
+ // Default argument labels of subscript are "_".
+ subscript<A: AA, B: BB, C: CC>(aaa: Int, bbb ccc: Int) -> AAA {
+ get {
+ return AAA()
+ }
+ set {
+ }
+ }
+
+ init?(a: Int) {
+ }
+
+ init!(b: Int) {
+ }
+
+ deinit {
+ }
+}
+
+@AAA enum FooEnum1<A, B, C>: FooProtocol {
+ @AAA case case1(aaa: Int, bbb ccc: Int), case2
+ @AAA indirect case case3(eee: FooEnum)
+}
+
+enum FooEnum2: Int {
+ case case1 = 1,
+ case2 = 2
+}
+
+struct FooStruct: AAA {
+}
+
+protocol FooProtocol: AAA {
+ var protocolProperty: Int { get set}
+ func protocolMethod(a: Int, b: Int) -> Int
+ init(a: Int, b: Int, c d: Int)
+ subscript<A: AA, B: BB, C: CC>(aaa: Int, bbb ccc: Int) -> AAA
+ associatedtype AssociatedType: AAA
+}
+
+extension FooClass: BBB where A = Int {
+ class NestedClass1 {
+ class NestedClass2 {
+ class NestedClass3 {
+ }
+ }
+ }
+}
+
+infix operator +++++: precedenceGroup
+prefix operator -----: precedenceGroup
+postfix operator *****: precedenceGroup
+
+precedencegroup precedenceGroup {
+ higherThan: a
+ lowerThan: a
+ associativity: left
+ assignment: true
+}
diff --git a/test/swift-mode-test-imenu.el b/test/swift-mode-test-imenu.el
new file mode 100644
index 0000000..046dff5
--- /dev/null
+++ b/test/swift-mode-test-imenu.el
@@ -0,0 +1,84 @@
+;;; swift-mode-test-imenu.el --- Test for swift-mode: Imenu -*-
lexical-binding: t -*-
+
+;; Copyright (C) 2019 taku0
+
+;; Authors: taku0 (http://github.com/taku0)
+;;
+;; Version: 7.1.0
+;; Package-Requires: ((emacs "24.4") (seq "2.3"))
+;; Keywords: languages swift
+;; URL: https://github.com/swift-emacs/swift-mode
+
+;; This file is not part of GNU Emacs.
+
+;; This program 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.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Test for swift-mode: Imenu.
+;; Execute swift-mode:run-test:imenu interactively or in batch mode.
+
+;;; Code:
+
+(require 'swift-mode)
+(require 'swift-mode-imenu)
+
+(defun swift-mode:run-test:imenu
+ (&optional error-buffer error-counts progress-reporter)
+ "Run `imenu' test for `swift-mode'.
+
+ERROR-BUFFER is the buffer to output errors.
+ERROR-COUNTS is a association list holding counts of errors. Updated
+destructively.
+PROGRESS-REPORTER is the progress-reporter."
+ (interactive)
+ (if (not swift-mode:test:running)
+ (swift-mode:run-test '(swift-mode:run-test:imenu))
+ (setq default-directory
+ (concat (file-name-as-directory swift-mode:test:basedir)
+ (file-name-as-directory "swift-files")
+ "imenu"))
+ (dolist (swift-file (file-expand-wildcards "*.swift"))
+ (redisplay)
+ (with-temp-buffer
+ (switch-to-buffer (current-buffer))
+ (insert-file-contents-literally swift-file)
+ (swift-mode)
+ (let* ((actual (swift-mode:scan-declarations))
+ (expected-file-name (concat
+ (file-name-sans-extension swift-file)
+ "-expected.el"))
+ (expected
+ (with-temp-buffer
+ (insert-file-contents-literally expected-file-name)
+ (read (current-buffer))))
+ (status (if (equal actual expected) 'ok 'error))
+ (count-assoc (assq status error-counts)))
+ (when (eq status 'error)
+ (swift-mode:show-error
+ error-buffer swift-file 0
+ "error"
+ (concat
+ "expected: "
+ (prin1-to-string expected)
+ " but: "
+ (prin1-to-string actual))))
+ (setcdr count-assoc (1+ (cdr count-assoc)))))
+ (when (not noninteractive)
+ (progress-reporter-update progress-reporter)))))
+
+(provide 'swift-mode-test-imenu)
+
+;;; swift-mode-test-imenu.el ends here
+
diff --git a/test/swift-mode-test.el b/test/swift-mode-test.el
index 7bd665e..8facd3d 100644
--- a/test/swift-mode-test.el
+++ b/test/swift-mode-test.el
@@ -33,6 +33,7 @@
(require 'swift-mode-test-indent)
(require 'swift-mode-test-beginning-of-defun)
+(require 'swift-mode-test-imenu)
(defvar swift-mode:test:basedir
(file-name-directory (or load-file-name buffer-file-name)))
@@ -51,7 +52,8 @@ Return the error-buffer"
(defvar swift-mode:tests
'(swift-mode:run-test:indent
- swift-mode:run-test:beginning-of-defun))
+ swift-mode:run-test:beginning-of-defun
+ swift-mode:run-test:imenu))
(defun swift-mode:run-test (&optional tests)
"Run TESTS for `swift-mode'."
- [nongnu] elpa/swift-mode abf3426 392/496: Add support for highlighting function calls / properties / enum cases, (continued)
- [nongnu] elpa/swift-mode abf3426 392/496: Add support for highlighting function calls / properties / enum cases, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 560242d 393/496: Add support for choosing scheme when building/running iOS projects, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode c56f43c 395/496: Make faces customizable, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 6d4fab5 396/496: Move customizations for REPL to their own group, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 604610d 399/496: Fix LLDB breakpoint option, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 6fdb3cd 403/496: Fix `swift-mode:debug-swift-module`, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode d2f2f1d 410/496: Bump version to 6.0.0, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode f847923 419/496: Highlight more compiler directives, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 0b1e5e8 420/496: Support raw texts, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 348e153 422/496: Change buffer name of REPL, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 0eca818 431/496: Add test for Imenu,
ELPA Syncer <=
- [nongnu] elpa/swift-mode ddc7ae6 436/496: Fix `adaptive-fill-regexp` for multiline comments, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 2e9bdc6 430/496: Ignore import declarations in Imenu, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode b2d9cca 434/496: Fix small bugs, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 9d948d9 429/496: Add parser for function parameters for Imenu, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 1362849 435/496: Use `seq-mapcat` instead of `apply` '`nonc` and `mapcar`, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 64dff57 441/496: Update standard types, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 62cf880 437/496: Update electric indent inside multiline comments, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 04c8a62 442/496: Fix beginning-of-defun hanging at the beginning of buffer, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode 286b46e 459/496: Highlight #filePath, ELPA Syncer, 2021/08/29
- [nongnu] elpa/swift-mode fa22f12 461/496: Add tests for multiple trailing closures, ELPA Syncer, 2021/08/29