Sha256: f23062669c9016876612ea00c7e2c1f9d3116c67c6419cd16be0776f3b9acab9

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rspec'
require 'matchete'

describe Matchete do
  it 'can be used to overload a method in a class' do
    class A
      include Matchete

      on Integer,
      def play(value)
        :integer
      end

      on Float, Any,
      def play(value, object)
        :float
      end
    end

    a = A.new
    a.play(2).should eq :integer
    a.play(2.2, 4).should eq :float
  end

  it 'can use a pattern based on classes and modules' do
    class A
      include Matchete

      on Integer,
      def play(value)
        :integer
      end

      on Float,
      def play(value)
        :float
      end

      on Enumerable,
      def play(value)
        :enumerable
      end
    end

    a = A.new
    a.play(2).should eq :integer
    a.play(2.2).should eq :float
    a.play([2]).should eq :enumerable
  end

  it 'can use a pattern based on nested arrays with classes/modules' do
    class A
      include Matchete

      on [Integer, Float],
      def play(values)
        [:integer, :float]
      end

      on [[Integer], Any],
      def play(values)
        :s
      end
    end

    a = A.new
    a.play([2, 2.2]).should eq [:integer, :float]
    a.play([[2], Matchete]).should eq :s
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
matchete-0.0.1 spec/matchete_spec.rb