mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 09:54:49 +00:00
33 lines
650 B
Nim
33 lines
650 B
Nim
import compiler/prefixmatches
|
|
import macros
|
|
|
|
macro check(val, body: untyped): untyped =
|
|
result = newStmtList()
|
|
expectKind body, nnkStmtList
|
|
for b in body:
|
|
expectKind b, nnkPar
|
|
expectLen b, 2
|
|
let p = b[0]
|
|
let s = b[1]
|
|
result.add quote do:
|
|
doAssert prefixMatch(`p`, `s`) == `val`
|
|
|
|
check PrefixMatch.Prefix:
|
|
("abc", "abc")
|
|
("a", "abc")
|
|
("xyz", "X_yzzzZe")
|
|
|
|
check PrefixMatch.Substr:
|
|
("b", "abc")
|
|
("abc", "fooabcabc")
|
|
("abC", "foo_AB_c")
|
|
|
|
check PrefixMatch.Abbrev:
|
|
("abc", "AxxxBxxxCxxx")
|
|
("xyz", "X_yabcZe")
|
|
|
|
check PrefixMatch.None:
|
|
("foobar", "afkslfjd_as")
|
|
("xyz", "X_yuuZuuZe")
|
|
("ru", "remotes")
|