Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 680cb69

Browse files
Fix keyword and symbol tests
1 parent 418beea commit 680cb69

File tree

2 files changed

+52
-14
lines changed

2 files changed

+52
-14
lines changed

‎clj/test/vim/syntax_test.clj

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
;; Joel Holdbrooks <cjholdbrooks@gmail.com>
33

44
(ns vim.syntax-test
5-
(:require [vim.test :refer [defpredicates defsyntaxtest]]))
5+
(:require [vim.test :refer [defpredicates defsyntaxtestdef-eq-predicates]]))
66

77
;; defpredicates also register not-equal vars, this is just for clj-kondo
88
(declare !number !regexp-escape !regexp-posix-char-class !regexp-quantifier)
99

1010
(defpredicates number :clojureNumber)
11-
(defpredicates kw :clojureKeyword)
11+
(def-eq-predicates kw [:clojureKeywordNsColon :clojureKeyword])
12+
(def-eq-predicates kwWithNs [:clojureKeywordNsColon :clojureKeyword])
13+
(def-eq-predicates sym [:clojureSymbolNsColon :clojureSymbol])
14+
(def-eq-predicates symWithNs [:clojureSymbolNsColon :clojureSymbol])
1215
(defpredicates character :clojureCharacter)
1316
(defpredicates regexp :clojureRegexp)
1417
(defpredicates regexp-delimiter :clojureRegexpDelimiter)
@@ -115,16 +118,38 @@
115118
":a" kw
116119
":αβγ" kw
117120
"::a" kw
118-
":a/b" kw
121+
":a/b" kwWithNs
119122
":a:b" kw
120-
":a:b/:c:b" kw
121-
":a/b/c/d" kw
122-
"::a/b" kw
123+
":a:b/:c:b" kwWithNs
124+
":a/b/c/d" kwWithNs
125+
"::a/b" kwWithNs
123126
"::" !kw
127+
"::" !kwWithNs
124128
":a:" !kw
129+
":a:" !kwWithNs
125130
":a/" !kw
126-
; ":/" !kw ; This is legal, but for simplicity we do not match it
127-
":" !kw]])
131+
":a/" !kwWithNs
132+
":/" !kw ; This is legal, but for simplicity we do not match it
133+
":/" !kwWithNs ; This is legal, but for simplicity we do not match it
134+
":" !kw
135+
":" !kwWithNs]])
136+
137+
(defsyntaxtest symbols-test
138+
["%s"
139+
["1" !sym
140+
"1" !symWithNs
141+
"A" sym
142+
"a" sym
143+
"αβγ" sym
144+
"a/b" symWithNs
145+
"a:b" sym
146+
"a:b/:c:b" symWithNs
147+
"a/b/c/d" symWithNs
148+
"a:" !sym
149+
"a:" !symWithNs
150+
"a/" !sym
151+
"a/" !symWithNs
152+
"/" sym]])
128153

129154
(comment (test #'keywords-test))
130155

@@ -403,8 +428,7 @@
403428
;; (?>X) X, as an independent, non-capturing group
404429
"(?>X)" regexp-mod
405430

406-
"(?X)" !regexp-mod
407-
]]
431+
"(?X)" !regexp-mod]]
408432
["#%s"
409433
[;; Backslashes with character classes
410434
"\"[\\\\]\"" (partial = [:clojureRegexpDelimiter :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexpDelimiter])

‎clj/test/vim/test.clj

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,35 @@
9090
ss λs)))
9191
contexts)))))
9292

93-
(defmacro defpredicates
93+
(defmacro defpredicates-general
9494
"Create two complementary predicate vars, `sym` and `!sym`, which test if
9595
all members of a passed collection are equal to `kw`"
96-
[sym kw]
96+
[pred-eq pred-neq sym kw]
9797
`(do
9898
(defn ~sym
9999
~(str "Returns true if all elements of coll equal " kw)
100100
{:arglists '~'[coll]}
101101
[coll#]
102-
(every? (partial = ~kw) coll#))
102+
(~pred-eq~kw coll#))
103103
(defn ~(symbol (str \! sym))
104104
~(str "Returns true if any elements of coll do not equal " kw)
105105
{:arglists '~'[coll]}
106106
[coll#]
107-
(boolean (some (partial not= ~kw) coll#)))))
107+
(~pred-neq ~kw coll#))))
108+
109+
(defmacro defpredicates
110+
"Create two complementary predicate vars, `sym` and `!sym`, which test if
111+
all members of a passed collection are equal to `kw`"
112+
[sym kw]
113+
(let [pred-eq (fn [expected results] (every? (partial = expected) results))
114+
pred-neq (fn [expected results] (boolean (some (partial not= expected) results)))]
115+
`(defpredicates-general ~pred-eq ~pred-neq ~sym ~kw)))
116+
117+
(defmacro def-eq-predicates
118+
"Create two complementary predicate vars, `sym` and `!sym`, which test if
119+
input and result are equal"
120+
[sym kw]
121+
`(defpredicates-general '= 'not= ~sym ~kw))
108122

109123
(defn benchmark [n file buf & exprs]
110124
(vim-exec file buf (format "Benchmark(%d, %s)"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /