diff options
author | Araq <rumpf_a@web.de> | 2012-04-16 16:31:15 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-04-16 16:31:15 +0200 |
commit | 17d67ab82827d10203646066d4d203d1da26a75a (patch) | |
tree | c33e78f4817685c71b2f8d4e5ed41948298067c7 /tests/compile | |
parent | a6564092869db9af93b6440006c8b978bff6e17f (diff) | |
download | Nim-17d67ab82827d10203646066d4d203d1da26a75a.tar.gz |
fixes #105
Diffstat (limited to 'tests/compile')
-rwxr-xr-x | tests/compile/tsortdev.nim | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/tests/compile/tsortdev.nim b/tests/compile/tsortdev.nim deleted file mode 100755 index 1b7705d81..000000000 --- a/tests/compile/tsortdev.nim +++ /dev/null @@ -1,81 +0,0 @@ -discard """ - disabled: false -""" - -import math, algorithm - -proc sorted[T](a: openArray[T], order: TSortOrder): bool = - result = true - for i in 0 .. < a.high: - if cmp(a[i], a[i+1]) * order > 0: - echo "Out of order: ", a[i], " ", a[i+1] - result = false - -proc bubbleSort[T](a: var openArray[T], - cmp: proc (x, y: T): int, - order = TSortOrder.Ascending) = - while true: - var sorted = true - for i in 0 .. a.len-2: - if cmp(a[i], a[i+1]) * order > 0: - swap(a[i], a[i+1]) - sorted = false - if sorted: break - -when isMainModule: - proc main() = - const order = Ascending - var data: seq[string] = @[] - - var L = random(59) - for i in 0..2: - #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[j])) - - bubblesort(data, system.cmp, order) - if not sorted(data, order): - quit "bubblesort failed" - - 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() - -echo "done" - |