summary refs log tree commit diff stats
path: root/tests/defaultprocparam
Commit message (Collapse)AuthorAgeFilesLines
* Add testcase for #12252 (#15676)Clyybber2020-10-221-0/+7
|
* Expand hoisted default params in sem (#15270)Clyybber2020-09-051-0/+75
| | | | | | | | | * Expand hoisted default params in sem Introduce ast.newTree{I,IT} Add test for default params in procs * Cleanup * Simplify hoist transformation and expand test
* updated tests to be executedArne Döring2018-11-231-1/+5
|
* new tester; all tests categorizedAraq2014-01-132-0/+9
id='n94' href='#n94'>94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
28eda35c3f0'>^

0cb02fbbe ^



f1bf672ff ^




















































98cebad7d ^
f1bf672ff ^










0cb02fbbe ^















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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

                     
                               

   
                                         
 







                                                                 
             

                       



                             




















































                                                                          
                                             










                                               















                                          
discard """
  targets: "c cpp js"
  matrix: "--mm:refc; --mm:orc"
"""

import std/[strbasics, sugar, assertions]

template strip2(input: string, args: varargs[untyped]): untyped =
  var a = input
  when varargsLen(args) > 0:
    strip(a, args)
  else:
    strip(a)
  a

proc main() =
  block: # strip
    block: # bug #17173
      var a = "  vhellov   "
      strip(a)
      doAssert a == "vhellov"

    doAssert strip2("  vhellov   ") == "vhellov"
    doAssert strip2("  vhellov   ", leading = false) == "  vhellov"
    doAssert strip2("  vhellov   ", trailing = false) == "vhellov   "
    doAssert strip2("vhellov", chars = {'v'}) == "hello"
    doAssert strip2("vhellov", leading = false, chars = {'v'}) == "vhello"
    doAssert strip2("blaXbla", chars = {'b', 'a'}) == "laXbl"
    doAssert strip2("blaXbla", chars = {'b', 'a', 'l'}) == "X"
    doAssert strip2("xxxxxx", chars={'x'}) == ""
    doAssert strip2("x", chars={'x'}) == ""
    doAssert strip2("x", chars={'1'}) == "x"
    doAssert strip2("", chars={'x'}) == ""
    doAssert strip2("xxx xxx", chars={'x'}) == " "
    doAssert strip2("xxx  wind", chars={'x'}) == "  wind"
    doAssert strip2("xxx  iii", chars={'i'}) == "xxx  "

    block:
      var a = "xxx  iii"
      doAssert a.dup(strip(chars = {'i'})) == "xxx  "
      doAssert a.dup(strip(chars = {' '})) == "xxx  iii"
      doAssert a.dup(strip(chars = {'x'})) == "  iii"
      doAssert a.dup(strip(chars = {'x', ' '})) == "iii"
      doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
      doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0

    block:
      var a = "x  i"
      doAssert a.dup(strip(chars = {'i'})) == "x  "
      doAssert a.dup(strip(chars = {' '})) == "x  i"
      doAssert a.dup(strip(chars = {'x'})) == "  i"
      doAssert a.dup(strip(chars = {'x', ' '})) == "i"
      doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
      doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0

    block:
      var a = ""
      doAssert a.dup(strip(chars = {'i'})).len == 0
      doAssert a.dup(strip(chars = {' '})).len == 0
      doAssert a.dup(strip(chars = {'x'})).len == 0
      doAssert a.dup(strip(chars = {'x', ' '})).len == 0
      doAssert a.dup(strip(chars = {'x', 'i'})).len == 0
      doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0

    block:
      var a = " "
      doAssert a.dup(strip(chars = {'i'})) == " "
      doAssert a.dup(strip(chars = {' '})).len == 0
      doAssert a.dup(strip(chars = {'x'})) == " "
      doAssert a.dup(strip(chars = {'x', ' '})).len == 0
      doAssert a.dup(strip(chars = {'x', 'i'})) == " "
      doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0

  block: # setSlice
    var a = "Hello, Nim!"
    doAssert a.dup(setSlice(7 .. 9)) == "Nim"
    doAssert a.dup(setSlice(0 .. 0)) == "H"
    doAssert a.dup(setSlice(0 .. 1)) == "He"
    doAssert a.dup(setSlice(0 .. 10)) == a
    doAssert a.dup(setSlice(1 .. 0)).len == 0
    doAssert a.dup(setSlice(20 .. -1)).len == 0

    doAssertRaises(AssertionDefect):
      discard a.dup(setSlice(-1 .. 1))

    doAssertRaises(AssertionDefect):
      discard a.dup(setSlice(1 .. 11))

  block: # add
    var a0 = "hi"
    var b0 = "foobar"
    when nimvm:
      discard # pending bug #15952
    else:
      a0.add b0.toOpenArray(1,3)
      doAssert a0 == "hioob"
    proc fn(c: openArray[char]): string =
      result.add c
    doAssert fn("def") == "def"
    doAssert fn(['d','\0', 'f'])[2] == 'f'

static: main()
main()