diff options
| author | Simen Heggestøyl | 2016-05-07 16:32:29 +0200 |
|---|---|---|
| committer | Simen Heggestøyl | 2016-05-07 16:38:02 +0200 |
| commit | 29c9803c2a368b2f821a3fd7f7798e1632e6e29d (patch) | |
| tree | 3d22bcc8846bccac2ef5ceba156fdccc1b5ae8f3 /test | |
| parent | ed5282d239b4304bcc6274dd06e1ce2b5e575053 (diff) | |
| download | emacs-29c9803c2a368b2f821a3fd7f7798e1632e6e29d.tar.gz emacs-29c9803c2a368b2f821a3fd7f7798e1632e6e29d.zip | |
Add tests for CSS mode completion
* test/lisp/textmodes/css-mode-tests.el (css-test-property-values)
(css-test-property-values-no-duplicates)
(css-test-value-class-lookup): Use `seq-sort'.
(css-mode-tests--completions): New helper function for retrieving CSS
completions.
(css-test-complete-bang-rule, scss-test-complete-bang-rule)
(css-test-complete-property-value, css-test-complete-pseudo-class)
(css-test-complete-pseudo-element, css-test-complete-at-rule)
(scss-test-complete-at-rule, css-test-complete-property)
(css-test-complete-selector, css-test-complete-nested-selector)
(scss-test-complete-nested-selector): New tests.
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/textmodes/css-mode-tests.el | 124 |
1 files changed, 114 insertions, 10 deletions
diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el index 4c0a3572b36..80d678a161f 100644 --- a/test/lisp/textmodes/css-mode-tests.el +++ b/test/lisp/textmodes/css-mode-tests.el | |||
| @@ -31,22 +31,23 @@ | |||
| 31 | (ert-deftest css-test-property-values () | 31 | (ert-deftest css-test-property-values () |
| 32 | ;; The `float' property has a flat value list. | 32 | ;; The `float' property has a flat value list. |
| 33 | (should | 33 | (should |
| 34 | (equal (sort (css--property-values "float") #'string-lessp) | 34 | (equal (seq-sort #'string-lessp (css--property-values "float")) |
| 35 | '("left" "none" "right"))) | 35 | '("left" "none" "right"))) |
| 36 | 36 | ||
| 37 | ;; The `list-style' property refers to several other properties. | 37 | ;; The `list-style' property refers to several other properties. |
| 38 | (should | 38 | (should |
| 39 | (equal (sort (css--property-values "list-style") #'string-lessp) | 39 | (equal (seq-sort #'string-lessp (css--property-values "list-style")) |
| 40 | (sort (seq-uniq | 40 | (seq-sort |
| 41 | (append (css--property-values "list-style-type") | 41 | #'string-lessp |
| 42 | (css--property-values "list-style-position") | 42 | (seq-uniq |
| 43 | (css--property-values "list-style-image"))) | 43 | (append (css--property-values "list-style-type") |
| 44 | #'string-lessp))) | 44 | (css--property-values "list-style-position") |
| 45 | (css--property-values "list-style-image")))))) | ||
| 45 | 46 | ||
| 46 | ;; The `position' property is tricky because it's also the name of a | 47 | ;; The `position' property is tricky because it's also the name of a |
| 47 | ;; value class. | 48 | ;; value class. |
| 48 | (should | 49 | (should |
| 49 | (equal (sort (css--property-values "position") #'string-lessp) | 50 | (equal (seq-sort #'string-lessp (css--property-values "position")) |
| 50 | '("absolute" "fixed" "relative" "static"))) | 51 | '("absolute" "fixed" "relative" "static"))) |
| 51 | 52 | ||
| 52 | ;; The `background-position' property should refer to the `position' | 53 | ;; The `background-position' property should refer to the `position' |
| @@ -71,13 +72,116 @@ | |||
| 71 | ;; The `flex' property is prone to duplicate values; if they aren't | 72 | ;; The `flex' property is prone to duplicate values; if they aren't |
| 72 | ;; removed, it'll contain at least two instances of `auto'. | 73 | ;; removed, it'll contain at least two instances of `auto'. |
| 73 | (should | 74 | (should |
| 74 | (equal (sort (css--property-values "flex") #'string-lessp) | 75 | (equal (seq-sort #'string-lessp (css--property-values "flex")) |
| 75 | '("auto" "calc()" "content" "none")))) | 76 | '("auto" "calc()" "content" "none")))) |
| 76 | 77 | ||
| 77 | (ert-deftest css-test-value-class-lookup () | 78 | (ert-deftest css-test-value-class-lookup () |
| 78 | (should | 79 | (should |
| 79 | (equal (sort (css--value-class-lookup 'position) #'string-lessp) | 80 | (equal (seq-sort #'string-lessp (css--value-class-lookup 'position)) |
| 80 | '("bottom" "calc()" "center" "left" "right" "top")))) | 81 | '("bottom" "calc()" "center" "left" "right" "top")))) |
| 81 | 82 | ||
| 83 | ;;; Completion | ||
| 84 | |||
| 85 | (defun css-mode-tests--completions () | ||
| 86 | (let ((data (css-completion-at-point))) | ||
| 87 | (all-completions (buffer-substring (nth 0 data) (nth 1 data)) | ||
| 88 | (nth 2 data)))) | ||
| 89 | |||
| 90 | (ert-deftest css-test-complete-bang-rule () | ||
| 91 | (with-temp-buffer | ||
| 92 | (css-mode) | ||
| 93 | (insert "body { left: 0 !") | ||
| 94 | (let ((completions (css-mode-tests--completions))) | ||
| 95 | (should (member "important" completions)) | ||
| 96 | ;; Don't include SCSS bang-rules | ||
| 97 | (should-not (member "default" completions))))) | ||
| 98 | |||
| 99 | (ert-deftest scss-test-complete-bang-rule () | ||
| 100 | (with-temp-buffer | ||
| 101 | (scss-mode) | ||
| 102 | (insert "body { left: 0 !") | ||
| 103 | (let ((completions (css-mode-tests--completions))) | ||
| 104 | (should (member "important" completions)) | ||
| 105 | (should (member "default" completions))))) | ||
| 106 | |||
| 107 | (ert-deftest css-test-complete-property-value () | ||
| 108 | (with-temp-buffer | ||
| 109 | (css-mode) | ||
| 110 | (insert "body { position: ") | ||
| 111 | (let ((completions (css-mode-tests--completions))) | ||
| 112 | (should | ||
| 113 | (equal (seq-sort #'string-lessp completions) | ||
| 114 | '("absolute" "fixed" "inherit" "relative" "static")))))) | ||
| 115 | |||
| 116 | (ert-deftest css-test-complete-pseudo-class () | ||
| 117 | (with-temp-buffer | ||
| 118 | (css-mode) | ||
| 119 | (insert "body:a") | ||
| 120 | (let ((completions (css-mode-tests--completions))) | ||
| 121 | (should (member "active" completions)) | ||
| 122 | (should-not (member "disabled" completions)) | ||
| 123 | ;; Don't include pseudo-elements | ||
| 124 | (should-not (member "after" completions))))) | ||
| 125 | |||
| 126 | (ert-deftest css-test-complete-pseudo-element () | ||
| 127 | (with-temp-buffer | ||
| 128 | (css-mode) | ||
| 129 | (insert "body::a") | ||
| 130 | (let ((completions (css-mode-tests--completions))) | ||
| 131 | (should (member "after" completions)) | ||
| 132 | (should-not (member "disabled" completions)) | ||
| 133 | ;; Don't include pseudo-classes | ||
| 134 | (should-not (member "active" completions))))) | ||
| 135 | |||
| 136 | (ert-deftest css-test-complete-at-rule () | ||
| 137 | (with-temp-buffer | ||
| 138 | (css-mode) | ||
| 139 | (insert "@m") | ||
| 140 | (let ((completions (css-mode-tests--completions))) | ||
| 141 | (should (member "media" completions)) | ||
| 142 | (should-not (member "keyframes" completions)) | ||
| 143 | ;; Don't include SCSS at-rules | ||
| 144 | (should-not (member "mixin" completions))))) | ||
| 145 | |||
| 146 | (ert-deftest scss-test-complete-at-rule () | ||
| 147 | (with-temp-buffer | ||
| 148 | (scss-mode) | ||
| 149 | (insert "@m") | ||
| 150 | (let ((completions (css-mode-tests--completions))) | ||
| 151 | (should (member "media" completions)) | ||
| 152 | (should-not (member "keyframes" completions)) | ||
| 153 | (should (member "mixin" completions))))) | ||
| 154 | |||
| 155 | (ert-deftest css-test-complete-property () | ||
| 156 | (with-temp-buffer | ||
| 157 | (css-mode) | ||
| 158 | (insert "body { f") | ||
| 159 | (let ((completions (css-mode-tests--completions))) | ||
| 160 | (should (member "filter" completions)) | ||
| 161 | (should-not (member "position" completions))))) | ||
| 162 | |||
| 163 | (ert-deftest css-test-complete-selector () | ||
| 164 | (with-temp-buffer | ||
| 165 | (css-mode) | ||
| 166 | (insert "b") | ||
| 167 | (let ((completions (css-mode-tests--completions))) | ||
| 168 | (should (member "body" completions)) | ||
| 169 | (should-not (member "article" completions))))) | ||
| 170 | |||
| 171 | (ert-deftest css-test-complete-nested-selector () | ||
| 172 | (with-temp-buffer | ||
| 173 | (css-mode) | ||
| 174 | (insert "body {") | ||
| 175 | (let ((completions (css-mode-tests--completions))) | ||
| 176 | (should-not (member "body" completions))))) | ||
| 177 | |||
| 178 | (ert-deftest scss-test-complete-nested-selector () | ||
| 179 | (with-temp-buffer | ||
| 180 | (scss-mode) | ||
| 181 | (insert "body { b") | ||
| 182 | (let ((completions (css-mode-tests--completions))) | ||
| 183 | (should (member "body" completions)) | ||
| 184 | (should-not (member "article" completions))))) | ||
| 185 | |||
| 82 | (provide 'css-mode-tests) | 186 | (provide 'css-mode-tests) |
| 83 | ;;; css-mode-tests.el ends here | 187 | ;;; css-mode-tests.el ends here |