diff options
author | Araq <rumpf_a@web.de> | 2012-01-28 23:22:44 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-01-28 23:22:44 +0100 |
commit | 8d19a93f1a2fe33373ea32367f5f1828f7d913cc (patch) | |
tree | 4bec052efbd489a7a271fef58dba8735af91ae08 /tests/compile | |
parent | e92693ec8df1c6b2e4a833e72e18037cd9880b8c (diff) | |
download | Nim-8d19a93f1a2fe33373ea32367f5f1828f7d913cc.tar.gz |
pragma on/off improvements; endb rewritten
Diffstat (limited to 'tests/compile')
-rwxr-xr-x | tests/compile/tsortdev.nim | 59 |
1 files changed, 37 insertions, 22 deletions
diff --git a/tests/compile/tsortdev.nim b/tests/compile/tsortdev.nim index ecfab260d..0af0fe0f4 100755 --- a/tests/compile/tsortdev.nim +++ b/tests/compile/tsortdev.nim @@ -25,40 +25,55 @@ proc bubbleSort[T](a: var openArray[T], when isMainModule: proc main() = const order = Ascending - var data: seq[string] - - for i in 0..10_000: - var L = random(59) - newSeq(data, L) + var data: seq[string] = @[] + + var L = random(59) + for i in 0..1: + echo "loop: ", i + #newSeq(data, L) + setLen(data, L) for j in 0 .. L-1: data[j] = $(math.random(90) - 10) + assert getRefcount(data[j]) == 1 + {.watchpoint: data.} var copy = data + for j in 0 .. L-1: + assert getRefcount(copy[j]) == 1 + assert(cast[pointer](copy[j]) != cast[pointer](data[i])) + bubblesort(data, system.cmp, order) if not sorted(data, order): quit "bubblesort failed" - sort(copy, cmp, order) - if copy.len != data.len: - quit "lengths differ!" - for i in 0 .. copy.high: - if copy[i] != data[i]: - quit "algorithms differ!" - for i in 0..10_000: - var data: seq[int] - var L = random(59) - newSeq(data, L) - for j in 0 .. L-1: - data[j] = (math.random(90) - 10) - var copy = data - sort(data, cmp[int], order) - if not sorted(data, order): - quit "sort for seq[int] failed" - bubblesort(copy, system.cmp[int], order) + sort(copy, cmp, order) + for j in 0 .. L-1: + let rc = getRefcount(data[j]) + if rc != 1: + echo "RC IST ", rc, " j: ", j + assert getRefcount(data[j]) == 1 + when false: if copy.len != data.len: quit "lengths differ!" for i in 0 .. copy.high: if copy[i] != data[i]: quit "algorithms differ!" + when false: + for i in 0..10_000: + var data: seq[int] + var L = random(59) + newSeq(data, L) + for j in 0 .. L-1: + data[j] = (math.random(90) - 10) + var copy = data + sort(data, cmp[int], order) + if not sorted(data, order): + quit "sort for seq[int] failed" + bubblesort(copy, system.cmp[int], order) + if copy.len != data.len: + quit "lengths differ!" + for i in 0 .. copy.high: + if copy[i] != data[i]: + quit "algorithms differ!" main() |