Sha256: d4bcf46e833b736ff9213fd23926cf4b26ceddd6a7cd14b5796513713673d5d3

Contents?: true

Size: 928 Bytes

Versions: 3

Compression:

Stored size: 928 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-integer 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

3 entries across 3 versions & 1 rubygems

Version Path
xdr-3.0.1 spec/lib/xdr/dsl/enum_spec.rb
xdr-3.0.0 spec/lib/xdr/dsl/enum_spec.rb
xdr-2.0.0 spec/lib/xdr/dsl/enum_spec.rb