From 5a58440ebe4ba794f0127ebb6ad33824a92dfb58 Mon Sep 17 00:00:00 2001 From: Jason Beetham Date: Sat, 12 Dec 2020 15:29:20 -0700 Subject: Added strscans.scanTuple (#16300) * Added since and changelog --- tests/stdlib/tstrscans.nim | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'tests/stdlib/tstrscans.nim') diff --git a/tests/stdlib/tstrscans.nim b/tests/stdlib/tstrscans.nim index 8ca167837..d443c5dda 100644 --- a/tests/stdlib/tstrscans.nim +++ b/tests/stdlib/tstrscans.nim @@ -227,3 +227,54 @@ block: if line.scanf("$i-$i $c: $w", lo, hi, c, w): inc res doAssert res == 4 + +block: + #whenscanf testing + let input = """1-3 s: abc +15-18 9: def +15-18 A: ghi +15-18 _: jkl +""" + 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 + + var res = 0 + for line in input.splitLines: + let (success, lo, hi, c ,w) = scanTuple(line, "$i-$i $c: $w") + if success: + inc res + doAssert res == 4 + + let (_, key, val, intval, floatVal) = scanTuple("abc:: xyz 89 33.25", "$w$s::$s$w$s$i $f") + doAssert key == "abc" + doAssert val == "xyz" + doAssert intval == 89 + doAssert floatVal == 33.25 + + + let (_, binVal, octVal, hexVal) = scanTuple("0b0101 0o1234 0xabcd", "$b$s$o$s$h", binval, octval, hexval) + doAssert binval == 0b0101 + doAssert octval == 0o1234 + doAssert hexval == 0xabcd + + var (xx,_) = scanTuple("$abc", "$$$i") + doAssert xx == false + + + let (xx2, _) = block: scanTuple("$1234", "$$$i") + doAssert xx2 + + var (yy, intval2, key2) = scanTuple(";.--Breakpoint00 [output]", + "$[someSep]Breakpoint${twoDigits}$[someSep({';','.','-'})] [$+]$.", + int) + doAssert yy + doAssert key2 == "output" + doAssert intVal2 == 13 \ No newline at end of file -- cgit 1.4.1-2-gfad0 ='qt'>
path: root/tests/exception/tfinally3.nim
blob: 6098672a22a62c85fb04eb9cbebfb347e3e698df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26