Class: JavaTestingGuff::EasyMockGuffGenerator

Inherits:
GuffGenerator show all
Defined in:
lib/java_testing_guff.rb

Instance Method Summary collapse

Methods inherited from GuffGenerator

#add_specific_selector_stuff, #constructor_arguments_for_builder, #generate_guff_foreach, #generate_selector_foreach, #initialize, #save_in, #use_package

Constructor Details

This class inherits a constructor from JavaTestingGuff::GuffGenerator

Instance Method Details

#builder_name(currentClass) ⇒ Object



54
55
56
# File 'lib/java_testing_guff.rb', line 54

def builder_name(currentClass)
    "Generated#{currentClass.name}MockBuilder"
end

#builder_selector_nameObject



58
59
60
# File 'lib/java_testing_guff.rb', line 58

def builder_selector_name
    "GeneratedMockBuilderSelector"
end

#generate_specific_guff(source, currentClass) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/java_testing_guff.rb', line 62

def generate_specific_guff(source, currentClass)
    generated_name = builder_name(currentClass)
    source.import('org.easymock.EasyMock')
    source.begin_class(generated_name) {|generated_class|
        generated_class.genericized_using("<T extends #{generated_name}>")
        generated_class.add_field('mock', currentClass.fullyQualifiedName).final.protected

        generated_class.add_constructor.takes("creator", "org.rubyforge.javatestingguff.MockCreator").body {|body|
            body.line("mock = creator.create(#{currentClass.fully_qualified_name}.class);")
        }

        generated_class.add_method("build").returns(currentClass.fully_qualified_name).body {|body|
            body.line('return mock;')
        }

        generated_class.add_method("apply").returns('T').takes("stuff", "org.rubyforge.javatestingguff.Command").body {|body|
            body.line("stuff.execute(this);")
            body.line("return (T) this;")
        }
        currentClass.with_self_and_supers {|clzz|
            clzz.add_easy_mock_methods_to(generated_class)
        }
    }
end