Sha256: 3dfa07210272b3e8c8473633ca62fa3fa3045430257cbd389b11b281341baf58

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

class Danica::Wrapper::Dummy
  include Danica::DSL
  include Danica::Wrapper

  attr_reader :wrapped_value

  def initialize(value)
    @wrapped_value = wrap_value(value)
  end
end

shared_examples 'a value wrapper' do |examples|
  examples.each do |val, expected|
    context "when value is a #{val.class}" do
      let(:value) { val }

      it do
        expect(subject.wrapped_value.content).to be_a(expected)
      end
    end
  end
end

describe Danica::Wrapper do
  subject { clazz.new(value) }

  let(:clazz) { described_class::Dummy }

  describe 'wrap_value' do
    it_behaves_like 'a value wrapper',
                    x: Danica::Wrapper::Variable,
                    'x' => Danica::Wrapper::Variable,
                    10 => Danica::Wrapper::Number,
                    10.5 => Danica::Wrapper::Number,
                    -10 => Danica::Wrapper::Negative,
                    { name: :x } => Danica::Wrapper::Variable,
                    { value: 10, latex: :x, gnuplot: :X } => Danica::Wrapper::Constant,
                    Danica::Wrapper::Variable.new(:x).tex => Danica::Wrapper::Variable,
                    Danica.build(:x) { x } => Danica::Expression

    context 'when value is non accepted' do
      let(:value) { Object.new }

      it do
        expect do
          subject.wrapped_value.content
        end.to raise_error(Danica::Exception::InvalidInput)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
danica-2.7.7 spec/lib/danica/wrapper_spec.rb
danica-2.7.6 spec/lib/danica/wrapper_spec.rb
danica-2.7.5 spec/lib/danica/wrapper_spec.rb