summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-01-28 23:22:44 +0100
committerAraq <rumpf_a@web.de>2012-01-28 23:22:44 +0100
commit8d19a93f1a2fe33373ea32367f5f1828f7d913cc (patch)
tree4bec052efbd489a7a271fef58dba8735af91ae08 /tests
parente92693ec8df1c6b2e4a833e72e18037cd9880b8c (diff)
downloadNim-8d19a93f1a2fe33373ea32367f5f1828f7d913cc.tar.gz
pragma on/off improvements; endb rewritten
Diffstat (limited to 'tests')
-rwxr-xr-xtests/compile/tsortdev.nim59
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()