Class: JavaTestingGuff::JMockGuffGenerator

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

Instance Method Summary collapse

Methods inherited from GuffGenerator

#generate_guff_foreach, #generate_selector_foreach, #initialize, #save_in, #use_package

Constructor Details

This class inherits a constructor from JavaTestingGuff::GuffGenerator

Instance Method Details

#add_specific_selector_stuff(generated_selector) ⇒ Object



101
102
103
104
# File 'lib/java_testing_guff.rb', line 101

def add_specific_selector_stuff(generated_selector)
    generated_selector.add_field("testcase","org.jmock.cglib.MockObjectTestCase").private.final
    generated_selector.add_constructor.for_field("testcase")
end

#builder_name(currentClass) ⇒ Object



89
90
91
# File 'lib/java_testing_guff.rb', line 89

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

#builder_selector_nameObject



93
94
95
# File 'lib/java_testing_guff.rb', line 93

def builder_selector_name
    "GeneratedJMockBuilderSelector"
end

#constructor_arguments_for_builderObject



97
98
99
# File 'lib/java_testing_guff.rb', line 97

def constructor_arguments_for_builder
    "testcase"
end

#generate_specific_guff(source, currentClass) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/java_testing_guff.rb', line 106

def generate_specific_guff(source, currentClass)
    generated_name = builder_name(currentClass)
    source.begin_class(generated_name) {|generated_class|
        generated_class.extends('org.rubyforge.javatestingguff.AbstractJMockObjectBuilder')
        generated_class.genericized_using("<T extends #{generated_name}>")


        generated_class.add_constructor.takes("testCase", "org.jmock.cglib.MockObjectTestCase").body {|body|
            body.line("super(testCase,#{currentClass.fully_qualified_name}.class);")
        }

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

        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_jmock_methods_to(generated_class)
        }
    }
end