Sha256: 70381c3eed6b5745d5cd5b197dbf2afec8d072080d2a29c4074c7d8c413eec6f

Contents?: true

Size: 1.66 KB

Versions: 148

Compression:

Stored size: 1.66 KB

Contents

require 'test_helper'
require 'tins/xt/proc_prelude'

module Tins
  class ProcPreludeTest < Test::Unit::TestCase
    def test_apply
      assert_equal 42,
        Proc.apply { |x, y, z|  x ** 2 + y ** 3 + z ** 5 }.call([3, 1, 2])
    end

    class Person
      def initialize(name)
        @name = name
      end

      attr_reader :name
    end

    def test_map_apply
      ps = %w[anne bernd christian].map { |n| Person.new(n) }

      i = 0
      assert_equal %w[ anne1 bernd2 christian3 ],
        ps.inject([], &Proc.map_apply(:name) { |s, n| s << "#{n}#{i += 1}" })
    end

    def test_call
      def (o = Object.new).foo
        :foo
      end
      assert_equal :foo, Proc.call(o) { foo }
    end

    def test_array
      assert_equal [1,2,3], Proc.array.call(1,2,3)
    end

    def test_first
      assert_equal 1, Proc.first.call(1,2,3)
      assert_equal 1, Proc.head.call(1,2,3)
    end

    def test_second
      assert_equal 2, Proc.second.call(1,2,3)
    end

    def test_tail
      assert_equal [ 2, 3 ], Proc.tail.call(1,2,3)
    end

    def test_last
      assert_equal 3, Proc.last.call(1,2,3)
    end

    def test_rotate
      assert_equal [ 2, 3, 1 ], Proc.rotate.call(1,2,3)
      assert_equal [ 2, 1 ], Proc.swap.call(1,2)
    end

    def test_id1
      assert_equal :foo, Proc.id1.call(:foo)
    end

    def test_const
      assert_equal :baz, Proc.const(:baz).call(:foo, :bar)
      assert_equal :baz, Proc.const { :baz }.call(:foo, :bar)
    end

    def test_nth
      assert_equal 2, Proc.nth(1).call(1,2,3)
    end

    def square(x)
      x ** 2
    end

    def test_from
      assert_equal [ 1, 4, 9 ], [ 1, 2, 3 ].map(&Proc.from{:square})
    end
  end
end

Version data entries

148 entries across 130 versions & 9 rubygems

Version Path
tins-1.38.0 tests/proc_prelude_test.rb
tins-1.37.1 tests/proc_prelude_test.rb
tins-1.37.0 tests/proc_prelude_test.rb
tins-1.36.1 tests/proc_prelude_test.rb
tins-1.36.0 tests/proc_prelude_test.rb
tins-1.35.0 tests/proc_prelude_test.rb
tins-1.34.0 tests/proc_prelude_test.rb
tins-1.33.0 tests/proc_prelude_test.rb
tdiary-5.2.4 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/tests/proc_prelude_test.rb
tins-1.32.1 tests/proc_prelude_test.rb
tins-1.32.0 tests/proc_prelude_test.rb
tdiary-5.2.3 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/tests/proc_prelude_test.rb
tdiary-5.2.2 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/tests/proc_prelude_test.rb
tins-1.31.1 tests/proc_prelude_test.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/tins-1.31.0/tests/proc_prelude_test.rb
tins-1.31.0 tests/proc_prelude_test.rb
tins-1.30.0 tests/proc_prelude_test.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/tins-1.29.1/tests/proc_prelude_test.rb
tdiary-5.2.0 vendor/bundle/ruby/3.0.0/gems/tins-1.29.1/tests/proc_prelude_test.rb
tdiary-5.1.7 vendor/bundle/ruby/3.0.0/gems/tins-1.29.1/tests/proc_prelude_test.rb