summaryrefslogtreecommitdiff
path: root/test/testunit/collector/test_objectspace.rb
blob: 9e102536a558a0f83cd52e1c9035d79e846783a4 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Author:: Nathaniel Talbott.
# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
# License:: Ruby license.

require 'test/unit/collector/objectspace'

module Test
  module Unit
    module Collector
      class TC_ObjectSpace < TestCase
        def setup
          @tc1 = Class.new(TestCase) do
            def test_1
            end
            def test_2
            end
          end

          @tc2 = Class.new(TestCase) do
            def test_0
            end
          end

          @no_tc = Class.new do
            def test_4
            end
          end
 
          @object_space = {Class => [@tc1, @tc2, @no_tc], String => ['']}
          def @object_space.each_object(type)
            self[type].each{|item| yield(item) }
          end
        end
        
        def test_basic_collection
          expected = TestSuite.new("name")
          expected << @tc2.new('test_0')
          expected << @tc1.new('test_1')
          expected << @tc1.new('test_2')
          assert_equal(expected, ObjectSpace.new(@object_space).collect("name"))
        end
        
        def test_filtered_collection
          expected = TestSuite.new(ObjectSpace::NAME)
          collector = ObjectSpace.new(@object_space)
          collector.filter = proc{|test| false}
          assert_equal(expected, collector.collect)

          expected = TestSuite.new(ObjectSpace::NAME)
          expected << @tc2.new('test_0')
          expected << @tc1.new('test_1')
          expected << @tc1.new('test_2')
          collector = ObjectSpace.new(@object_space)
          collector.filter = proc{|test| true}
          assert_equal(expected, collector.collect)

          expected = TestSuite.new(ObjectSpace::NAME)
          expected << @tc2.new('test_0')
          expected << @tc1.new('test_1')
          collector = ObjectSpace.new(@object_space)
          collector.filter = proc{|test| ['test_1', 'test_0'].include?(test.method_name)}
          assert_equal(expected, collector.collect)

          expected = TestSuite.new(ObjectSpace::NAME)
          expected << @tc2.new('test_0')
          expected << @tc1.new('test_1')
          collector = ObjectSpace.new(@object_space)
          collector.filter = [proc{|test| test.method_name == 'test_1'}, proc{|test| test.method_name == 'test_0'}]
          assert_equal(expected, collector.collect)
        end
      end
    end
  end
end