move tests to testament (#16101)
* move tests to testament * minor * fix random * disable test random
This commit is contained in:
parent
d306a04466
commit
cbc793b30b
56 changed files with 2205 additions and 2232 deletions
|
|
@ -98,3 +98,115 @@ block issue15064:
|
|||
doAssert scanf("<abcd> ", "<$+> $*", nick3, msg3)
|
||||
doAssert nick3 == "abcd"
|
||||
doAssert msg3 == ""
|
||||
|
||||
|
||||
block:
|
||||
proc twoDigits(input: string; x: var int; start: int): int =
|
||||
if start+1 < input.len and input[start] == '0' and input[start+1] == '0':
|
||||
result = 2
|
||||
x = 13
|
||||
else:
|
||||
result = 0
|
||||
|
||||
proc someSep(input: string; start: int; seps: set[char] = {';', ',', '-', '.'}): int =
|
||||
result = 0
|
||||
while start+result < input.len and input[start+result] in seps: inc result
|
||||
|
||||
proc demangle(s: string; res: var string; start: int): int =
|
||||
while result+start < s.len and s[result+start] in {'_', '@'}: inc result
|
||||
res = ""
|
||||
while result+start < s.len and s[result+start] > ' ' and s[result+start] != '_':
|
||||
res.add s[result+start]
|
||||
inc result
|
||||
while result+start < s.len and s[result+start] > ' ':
|
||||
inc result
|
||||
|
||||
proc parseGDB(resp: string): seq[string] =
|
||||
const
|
||||
digits = {'0'..'9'}
|
||||
hexdigits = digits + {'a'..'f', 'A'..'F'}
|
||||
whites = {' ', '\t', '\C', '\L'}
|
||||
result = @[]
|
||||
var idx = 0
|
||||
while true:
|
||||
var prc = ""
|
||||
var info = ""
|
||||
if scanp(resp, idx, *`whites`, '#', *`digits`, +`whites`, ?("0x", *`hexdigits`, " in "),
|
||||
demangle($input, prc, $index), *`whites`, '(', * ~ ')', ')',
|
||||
*`whites`, "at ", +(~{'\C', '\L'} -> info.add($_))):
|
||||
result.add prc & " " & info
|
||||
else:
|
||||
break
|
||||
|
||||
var key, val: string
|
||||
var intval: int
|
||||
var floatval: float
|
||||
doAssert scanf("abc:: xyz 89 33.25", "$w$s::$s$w$s$i $f", key, val, intval, floatVal)
|
||||
doAssert key == "abc"
|
||||
doAssert val == "xyz"
|
||||
doAssert intval == 89
|
||||
doAssert floatVal == 33.25
|
||||
|
||||
var binval: int
|
||||
var octval: int
|
||||
var hexval: int
|
||||
doAssert scanf("0b0101 0o1234 0xabcd", "$b$s$o$s$h", binval, octval, hexval)
|
||||
doAssert binval == 0b0101
|
||||
doAssert octval == 0o1234
|
||||
doAssert hexval == 0xabcd
|
||||
|
||||
let xx = scanf("$abc", "$$$i", intval)
|
||||
doAssert xx == false
|
||||
|
||||
|
||||
let xx2 = scanf("$1234", "$$$i", intval)
|
||||
doAssert xx2
|
||||
|
||||
let yy = scanf(";.--Breakpoint00 [output]",
|
||||
"$[someSep]Breakpoint${twoDigits}$[someSep({';','.','-'})] [$+]$.",
|
||||
intVal, key)
|
||||
doAssert yy
|
||||
doAssert key == "output"
|
||||
doAssert intVal == 13
|
||||
|
||||
var ident = ""
|
||||
var idx = 0
|
||||
let zz = scanp("foobar x x x xWZ", idx, +{'a'..'z'} -> add(ident, $_), *(*{
|
||||
' ', '\t'}, "x"), ~'U', "Z")
|
||||
doAssert zz
|
||||
doAssert ident == "foobar"
|
||||
|
||||
const digits = {'0'..'9'}
|
||||
var year = 0
|
||||
var idx2 = 0
|
||||
if scanp("201655-8-9", idx2, `digits`{4, 6} -> (year = year * 10 + ord($_) -
|
||||
ord('0')), "-8", "-9"):
|
||||
doAssert year == 201655
|
||||
|
||||
const gdbOut = """
|
||||
#0 @foo_96013_1208911747@8 (x0=...)
|
||||
at c:/users/anwender/projects/nim/temp.nim:11
|
||||
#1 0x00417754 in tempInit000 () at c:/users/anwender/projects/nim/temp.nim:13
|
||||
#2 0x0041768d in NimMainInner ()
|
||||
at c:/users/anwender/projects/nim/lib/system.nim:2605
|
||||
#3 0x004176b1 in NimMain ()
|
||||
at c:/users/anwender/projects/nim/lib/system.nim:2613
|
||||
#4 0x004176db in main (argc=1, args=0x712cc8, env=0x711ca8)
|
||||
at c:/users/anwender/projects/nim/lib/system.nim:2620"""
|
||||
const result = @["foo c:/users/anwender/projects/nim/temp.nim:11",
|
||||
"tempInit000 c:/users/anwender/projects/nim/temp.nim:13",
|
||||
"NimMainInner c:/users/anwender/projects/nim/lib/system.nim:2605",
|
||||
"NimMain c:/users/anwender/projects/nim/lib/system.nim:2613",
|
||||
"main c:/users/anwender/projects/nim/lib/system.nim:2620"]
|
||||
doAssert parseGDB(gdbOut) == result
|
||||
|
||||
# bug #6487
|
||||
var count = 0
|
||||
|
||||
proc test(): string =
|
||||
inc count
|
||||
result = ",123123"
|
||||
|
||||
var a: int
|
||||
discard scanf(test(), ",$i", a)
|
||||
doAssert count == 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue