summaryrefslogtreecommitdiff
path: root/trunk/test/ruby/test_gc.rb
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/test/ruby/test_gc.rb')
-rw-r--r--trunk/test/ruby/test_gc.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/trunk/test/ruby/test_gc.rb b/trunk/test/ruby/test_gc.rb
new file mode 100644
index 0000000000..42b249d0dc
--- /dev/null
+++ b/trunk/test/ruby/test_gc.rb
@@ -0,0 +1,54 @@
+require 'test/unit'
+
+class TestGc < Test::Unit::TestCase
+ class S
+ def initialize(a)
+ @a = a
+ end
+ end
+
+ def test_gc
+ prev_stress = GC.stress
+ GC.stress = false
+
+ assert_nothing_raised do
+ 1.upto(10000) {
+ tmp = [0,1,2,3,4,5,6,7,8,9]
+ }
+ tmp = nil
+ 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
+
+ GC.stress = prev_stress
+ end
+
+ def test_enable_disable
+ GC.enable
+ assert_equal(false, GC.enable)
+ assert_equal(false, GC.disable)
+ assert_equal(true, GC.disable)
+ assert_equal(true, GC.disable)
+ assert_nil(GC.start)
+ assert_equal(true, GC.enable)
+ assert_equal(false, GC.enable)
+ ensure
+ GC.enable
+ end
+
+ def test_count
+ c = GC.count
+ GC.start
+ assert_operator(c, :<, GC.count)
+ end
+end