Sha256: 3a4cb72237b5a313fd5b1cb023575f0d67ea8665daf29b0f302d080ce8082c96

Contents?: true

Size: 1.43 KB

Versions: 9

Compression:

Stored size: 1.43 KB

Contents

require "metamorpher/builders/ruby/variable_replacement_visitor"

module Metamorpher
  module Builders
    module Ruby
      describe VariableReplacementVisitor do
        let(:builder) { Metamorpher::Builders::AST::Builder.new }
        let(:replacement) { builder.literal!(:bar) }
        subject { VariableReplacementVisitor.new(:foo, replacement) }

        it "should replace a variable with the correct name" do
          original = builder.variable!(:foo)
          replaced = subject.visit(original)

          expect(replaced).to eq(replacement)
        end

        it "should replace a nested variable" do
          original = builder.literal!(:+, 2, builder.variable!(:foo))
          replaced = subject.visit(original)

          expect(replaced).to eq(original.replace(original.children.last.path, replacement))
        end

        it "should not replace a variable with a different name" do
          original = builder.variable!(:bar)
          replaced = subject.visit(original)

          expect(replaced).to eq(original)
        end

        it "should not replace a literal" do
          original = builder.literal!(:foo)
          replaced = subject.visit(original)

          expect(replaced).to eq(original)
        end

        it "should not replace a derived" do
          original = builder.derivation!(:foo) {}
          replaced = subject.visit(original)

          expect(replaced).to eq(original)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
metamorpher-0.2.6 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.5 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.4 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.3 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.2 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.1 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.2.0 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.1.1 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb
metamorpher-0.1.0 spec/unit/builders/ruby/variable_replacement_visitor_spec.rb