Sha256: b0ef9ba2ad0b98a28c02373754c0d18c84a4f87b35137d94600a1169061cabf4

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

require 'spec_helper'
module Alf
  module Operator
    describe Signature, "#parse_args" do
      
      let(:clazz){ Class.new(Object) }
      let(:receiver){ clazz.new }
      before{ 
        signature.install
      }
      subject{
        signature.parse_args(args, receiver)
        receiver
      }
        
      describe "on a singleton signature with a AttrList" do
        let(:signature){ 
          Signature.new(clazz) do |s|
            s.argument :proj, AttrList
          end
        }
        let(:args){ [%w{hello world}] }
        specify{
          subject.proj.should eq(AttrList.new([:hello, :world])) 
        }
      end
      
      describe "on a singleton signature with a default" do
        let(:signature){ 
          Signature.new(clazz) do |s|
            s.argument :attrname, AttrName, :autonum
          end
        }
        let(:args){ [] }
        specify{
          subject.attrname.should eq(:autonum) 
        }
      end
      
      describe "on a signature with options" do
        let(:signature){
          Signature.new(clazz) do |s|
            s.argument :key, AttrList, []
            s.option   :allbut, Boolean, false
          end
        }

        describe "when no option is provided" do
          let(:args){ [[:hello, :world]] }
          specify{
            subject.key.should eql(AttrList.new([:hello, :world]))
            subject.allbut.should eql(false)
          }
        end

      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alf-0.10.1 spec/unit/operator/signature/test_parse_args.rb
alf-0.10.0 spec/unit/operator/signature/test_parse_args.rb