aboutsummaryrefslogtreecommitdiffstats
path: root/test/ruby/test_gc.rb
blob: b513e44dc6e6189d9116ed62e70de0cadf197dc7 (plain)
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
require 'test/unit'

$KCODE = 'none'

class TestGc < Test::Unit::TestCase
  class S
    def initialize(a)
      @a = a
    end
  end

  def test_gc
    begin
      1.upto(10000) {
        tmp = [0,1,2,3,4,5,6,7,8,9]
      }
      tmp = nil
      assert true
    rescue
      assert false
    end
    l=nil
    100000.times {
      l = S.new(l)
    }
    GC.start
    assert true   # reach here or dumps core
    l = []
    100000.times {
      l.push([l])
    }
    GC.start
    assert true   # reach here or dumps core
    
    if $failed > 0
      printf "test: %d failed %d\n", $ntest, $failed
    else
      printf "end of test(test: %d)\n", $ntest
    end
  end
end