From 8d19a93f1a2fe33373ea32367f5f1828f7d913cc Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 28 Jan 2012 23:22:44 +0100 Subject: pragma on/off improvements; endb rewritten --- tests/compile/tsortdev.nim | 59 +++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 22 deletions(-) (limited to 'tests/compile') 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() -- cgit 1.4.1-2-gfad0