summaryrefslogtreecommitdiff
path: root/test/testunit/util/test_procwrapper.rb
blob: b939b1aebf4ef4a2ee6637c97fe517050e2d53cc (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
# Author:: Nathaniel Talbott.
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
# License:: Ruby license.

require 'test/unit'
require 'test/unit/util/procwrapper'

module Test
  module Unit
    module Util
      class TC_ProcWrapper < TestCase
        def munge_proc(&a_proc)
          return a_proc
        end
        def setup
          @original = proc {}
          @munged = munge_proc(&@original)
          @wrapped_original = ProcWrapper.new(@original)
          @wrapped_munged = ProcWrapper.new(@munged)
        end
        def test_wrapping
          assert_same(@original, @wrapped_original.to_proc, "The wrapper should return what was wrapped")
        end
        def test_hashing
          assert_not_equal(@original.hash, @munged.hash, "The original and munged procs should not have the same hash")
      
          assert_equal(@wrapped_original.hash, @wrapped_munged.hash, "The original and munged should have the same hash when wrapped")
          assert_equal(@wrapped_original, @wrapped_munged, "The wrappers should be equivalent")
          
          a_hash = {@wrapped_original => @original}
          assert(a_hash[@wrapped_original], "Should be able to access the wrapper in the hash")
        end
      end
    end
  end
end