Sha256: 580c439c419d97981ac666448eb638949a626504619b8153451fb4ba0c2531b6

Contents?: true

Size: 927 Bytes

Versions: 7

Compression:

Stored size: 927 Bytes

Contents

require 'spec_helper'


describe XDR::DSL::Enum, "#member" do
  subject do
    Class.new(XDR::Enum) do
      member :one, 1
      member :two, 2
    end
  end

  it "adds to the members collection of the class" do
    expect(subject.members.length).to eq(2)
    expect(subject.members[:one]).to eq(subject.one)
    expect(subject.members[:two]).to eq(subject.two)
  end

  it "raises ArgumentError if a non-fixnum value is used" do
    expect {
      Class.new(XDR::Enum) do
        member :one, "hi!"
      end
    }.to raise_error(ArgumentError)
  end
end

describe XDR::DSL::Enum, "#seal" do
  subject do
    Class.new(XDR::Enum) do
      member :one, 1
      member :two, 2
      seal
    end
  end

  it "marks the class as sealed" do
    expect(subject.sealed).to eq(true)
  end

  it "prevents you from adding members after being sealed" do
    expect{ subject.member :three, 3 }.to raise_error(ArgumentError)
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
payshares-xdr-0.0.2 spec/lib/xdr/dsl/enum_spec.rb
xdr-1.0.0 spec/lib/xdr/dsl/enum_spec.rb
xdr-0.1.0 spec/lib/xdr/dsl/enum_spec.rb
xdr-0.0.4 spec/lib/xdr/dsl/enum_spec.rb
xdr-0.0.3 spec/lib/xdr/dsl/enum_spec.rb
xdr-0.0.2 spec/lib/xdr/dsl/enum_spec.rb
xdr-0.0.1 spec/lib/xdr/dsl/enum_spec.rb