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