Sha256: e8671a1bf234c14b546406cd73f32d5617a533f0cf3ac04c9ad3c4df5698fb70

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

require 'spec_helper'


describe XDR::DSL::Union, "#switch" do

  it "allows symbols in switch declarations" do
    expect do
      klass = Class.new(XDR::Union) do
        switch_on ResultType, :type
        switch :ok
      end

      klass.new(:ok)
    end.to_not raise_error
  end

  class ResultType < XDR::Enum
    member :ok, 0
    member :error, 1
    seal
  end
end

describe XDR::DSL::Union, "#switch_on" do
  klass = nil

  it "allows int types" do
    expect do
      klass = Class.new(XDR::Union) do
        switch_on XDR::Int, :type
        switch 0
        switch 1
      end
    end.to_not raise_error

    expect{ klass.new(0) }.to_not raise_error
    expect{ klass.new(1) }.to_not raise_error
    expect{ klass.new(2) }.to raise_error(XDR::InvalidSwitchError)
  end

  it "allows unsigned int types" do
    expect do
      klass = Class.new(XDR::Union) do
        switch_on XDR::UnsignedInt, :type
        switch 0
        switch 1
      end
    end.to_not raise_error

    expect{ klass.new(0) }.to_not raise_error
    expect{ klass.new(1) }.to_not raise_error
    expect{ klass.new(2) }.to raise_error(XDR::InvalidSwitchError)
    expect{ klass.new(-1) }.to raise_error(XDR::InvalidSwitchError)
  end

  it "allows bool types", :focus do
    klass = nil

    expect do
      klass = Class.new(XDR::Union) do
        switch_on XDR::Bool, :type
        switch true
      end
    end.to_not raise_error

    expect{ klass.new(true) }.to_not raise_error
    expect{ klass.new(false) }.to raise_error(XDR::InvalidSwitchError)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xdr-3.0.1 spec/lib/xdr/dsl/union_spec.rb
xdr-3.0.0 spec/lib/xdr/dsl/union_spec.rb
xdr-2.0.0 spec/lib/xdr/dsl/union_spec.rb
xdr-1.0.0 spec/lib/xdr/dsl/union_spec.rb
xdr-0.1.0 spec/lib/xdr/dsl/union_spec.rb
xdr-0.0.4 spec/lib/xdr/dsl/union_spec.rb