Class CoreEx::TestProc
In: lib/core_ex/proc.rb
Parent: ::Test::Unit::TestCase

Methods

Included Modules

YamlExtension::Assertions

Public Instance methods

[Source]

# File lib/core_ex/proc.rb, line 109
      def assert_instance_call ( ref, proc, args )
        assert_nothing_raised do
          begin
            proc.instance_call(*args)
          rescue Proc::ArityError => ex
            assert_equal :ArityError, ref
            assert_equal [], @mock_args
            return
          end
        end
        assert_equal ref, @mock_args.shift
        assert_equal [], @mock_args
      end

[Source]

# File lib/core_ex/proc.rb, line 71
      def setup
        @procs = {
          proc {} => __LINE__,
          method(:teardown).to_proc => __LINE__,
          TestProc.instance_method(:setup).bind(self).to_proc => __LINE__
        }
        mock_args = @mock_args = []
        @m_ = proc { mock_args << [:_, object_id] }
        @m_0 = proc { || mock_args << ['0''0', object_id] }
        @m_as = proc { |*a| mock_args << [:as, a, object_id] }
        @m_a_bs = proc { |a, *b| mock_args << [:a_bs, a, b, object_id] }
        @m_a = proc { |a| mock_args << [:a, a, object_id] }
        @m_a_b = proc { |a, b| mock_args << [:a_b, a, b, object_id] }
        @m_a_b_c = proc { |a, b, c| mock_args << [:a_b_c, a, b, c, object_id] }
        @m_procs = [@m_, @m_0, @m_as, @m_a_bs, @m_a, @m_a_b, @m_a_b_c]
      end

[Source]

# File lib/core_ex/proc.rb, line 88
      def teardown
      end

[Source]

# File lib/core_ex/proc.rb, line 123
      def test_instance_call
        a, b, c = 'a', 'b', 'c'
        ai, bi, ci, si = a.object_id, b.object_id, c.object_id, object_id

        assert_instance_call [:_, ai],           @m_,      [a]
        assert_instance_call ['0''0', ai],         @m_0,     [a]
        assert_instance_call [:as, [], ai],      @m_as,    [a]
        assert_instance_call [:a_bs, a, [], si], @m_a_bs,  [a]
        assert_instance_call [:a, a, si],        @m_a,     [a]
        assert_instance_call :ArityError,        @m_a_b,   [a]
        assert_instance_call :ArityError,        @m_a_b_c, [a]

        assert_instance_call [:_, ai],             @m_,      [a, b]
        assert_instance_call :ArityError,          @m_0,     [a, b]
        assert_instance_call [:as, [b], ai],       @m_as,    [a, b]
        assert_instance_call [:a_bs, a, [b], si],  @m_a_bs,  [a, b]
        assert_instance_call [:a, b, ai],          @m_a,     [a, b]
        assert_instance_call [:a_b, a, b, si],     @m_a_b,   [a, b]
        assert_instance_call :ArityError,          @m_a_b_c, [a, b]

        assert_instance_call [:_, ai],               @m_,      [a, b, c]
        assert_instance_call :ArityError,            @m_0,     [a, b, c]
        assert_instance_call [:as, [b, c], ai],      @m_as,    [a, b, c]
        assert_instance_call [:a_bs, a, [b, c], si], @m_a_bs,  [a, b, c]
        assert_instance_call :ArityError,            @m_a,     [a, b, c]
        assert_instance_call [:a_b, b, c, ai],       @m_a_b,   [a, b, c]
        assert_instance_call [:a_b_c, a, b, c, si],  @m_a_b_c, [a, b, c]
      end

[Source]

# File lib/core_ex/proc.rb, line 91
      def test_simple
        assert_nothing_raised do
          @procs.each do |block, __line__|
            assert_equal __FILE__, block.source_file, 'bad source_file'
            assert_equal __line__, block.source_line, 'bad source_line'
            assert_equal "#{__FILE__}:#{__line__}",
                         block.source_location,
                         'bad source_location'
          end
        end
      end

[Source]

# File lib/core_ex/proc.rb, line 103
      def test_yaml
        assert_yaml_load "!proc 3 + 7", Proc
        assert_yaml_dump @val, @ref
        assert_equal(10, @val[])
      end

[Validate]