Sha256: 7abdfb8f5fa5a0dfa94d7de52f52fbf847c4d6c667c967d5ac2237a595241b60
Contents?: true
Size: 1.18 KB
Versions: 3
Compression:
Stored size: 1.18 KB
Contents
require File.join(File.dirname(__FILE__), %w[spec_helper]) describe TireSwing::VisitorDefinition, "when included" do before(:each) do @nodes = Module.new @nodes.class_eval do include TireSwing::VisitorDefinition end Object.const_set("Foo", Class.new) end after(:each) do Object.send(:remove_const, "Foo") end it "adds a visitor method" do @nodes.methods.should include("visitor") end describe ".visitor" do it "defines a class" do @nodes.class_eval { visitor :printer } @nodes.constants.should include("Printer") end it "defines a class that inherits from a Visitor" do @nodes.class_eval { visitor :printer } @nodes.const_get("Printer").ancestors.should include(TireSwing::Visitor) end it "defines a class with a visits class method" do @nodes.class_eval { visitor :printer } @nodes.const_get("Printer").methods.should include("visits") end it "evaluates at a class level to allow for attribute definitions and more" do @nodes.class_eval do visitor(:printer) { attr_accessor :thingy } end @nodes.const_get("Printer").new.should respond_to(:thingy=) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
aniero-tire_swing-0.0.4 | spec/visitor_definition_spec.rb |
aniero-tire_swing-0.0.5 | spec/visitor_definition_spec.rb |
aniero-tire_swing-0.0.6 | spec/visitor_definition_spec.rb |