mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
37 lines
1.2 KiB
Nim
37 lines
1.2 KiB
Nim
import unittest
|
|
include nre
|
|
|
|
block: # Test NRE initialization
|
|
block: # correct initialization
|
|
check(re("[0-9]+") != nil)
|
|
check(re("(?i)[0-9]+") != nil)
|
|
|
|
block: # options
|
|
check(extractOptions("(*NEVER_UTF)") ==
|
|
("", pcre.NEVER_UTF, true))
|
|
check(extractOptions("(*UTF8)(*ANCHORED)(*UCP)z") ==
|
|
("(*UTF8)(*UCP)z", pcre.ANCHORED, true))
|
|
check(extractOptions("(*ANCHORED)(*UTF8)(*JAVASCRIPT_COMPAT)z") ==
|
|
("(*UTF8)z", pcre.ANCHORED or pcre.JAVASCRIPT_COMPAT, true))
|
|
|
|
check(extractOptions("(*NO_STUDY)(") == ("(", 0, false))
|
|
|
|
check(extractOptions("(*LIMIT_MATCH=6)(*ANCHORED)z") ==
|
|
("(*LIMIT_MATCH=6)z", pcre.ANCHORED, true))
|
|
|
|
block: # incorrect options
|
|
for s in ["CR", "(CR", "(*CR", "(*abc)", "(*abc)CR",
|
|
"(?i)",
|
|
"(*LIMIT_MATCH=5", "(*NO_AUTO_POSSESS=5)"]:
|
|
let ss = s & "(*NEVER_UTF)"
|
|
check(extractOptions(ss) == (ss, 0, true))
|
|
|
|
block: # invalid regex
|
|
expect(SyntaxError): discard re("[0-9")
|
|
try:
|
|
discard re("[0-9")
|
|
except SyntaxError:
|
|
let ex = SyntaxError(getCurrentException())
|
|
check(ex.pos == 4)
|
|
check(ex.pattern == "[0-9")
|