## about:
Files uploaded by pastiepacker.
To unpack files see http://pastiepacker.rubyforge.org

## ./do_stuff_spec.rb
# This normally goes in a spec_helper.rb

require 'rubygems'
require 'jrsplenda'

Spec::Runner.configure do |config|
config.mock_with :mocha
end


import 'fake.DoStuff'

describe 'Doing stuff' do
include JRSplenda::MethodHelper
include JRSplenda::FieldHelper
include JRSplenda::MockHelper

before(:each) do
splenda_mock_attr 'fake.HasPublicMethod', :store_in => 'private_mock'
splenda_mock_attr 'fake.HasPublicMethod', :store_in => 'protected_mock'
splenda_mock_attr 'fake.HasPublicMethod', :store_in => 'package_mock'

@do_stuff = DoStuff.new
wrap_java_fields @do_stuff
wrap_java_methods @do_stuff
@do_stuff.private_has_public_method = @private_mock
@do_stuff.protected_has_public_method = @protected_mock
@do_stuff.package_has_public_method = @package_mock
@private_mock.stubs(:doSomething)
@protected_mock.stubs(:doSomething)
@package_mock.stubs(:doSomething)
end

describe "when doing it all" do
def when_doing_it_all
yield
@do_stuff.do_it_all
end

it "should do something with the private HasPublicMethod" do
when_doing_it_all { @private_mock.expects(:doSomething) }
end

it "should do something with the private HasPublicMethod" do
when_doing_it_all { @protected_mock.expects(:doSomething) }
end

it "should do something with the private HasPublicMethod" do
when_doing_it_all { @package_mock.expects(:doSomething) }
end
end

describe "when doing something sneaky" do
it "should do something with the private HasPublicMethod" do
@private_mock.expects(:doSomething)
@do_stuff.doSomethingSneaky
end
end

describe "when doing something sneaky" do
it "should do something with the protected HasPublicMethod" do
@protected_mock.expects(:doSomething)
@do_stuff.doSomethingSomewhatPromiscuous
end
end

describe "when doing something sneaky" do
it "should do something with the package HasPublicMethod" do
@package_mock.expects(:doSomething)
@do_stuff.doSomethingSlightlyPromiscuous
end
end
end

## ./DoStuff.java
package fake;

public class DoStuff {
private HasPublicMethod privateHasPublicMethod = new HasPublicMethod();
protected HasPublicMethod protectedHasPublicMethod = new HasPublicMethod();
HasPublicMethod packageHasPublicMethod = new HasPublicMethod();

public void doItAll() {
privateHasPublicMethod.doSomething();
protectedHasPublicMethod.doSomething();
packageHasPublicMethod.doSomething();
}

void doSomethingSlightlyPromiscuous() {
packageHasPublicMethod.doSomething();
}

protected void doSomethingSomewhatPromiscuous() {
protectedHasPublicMethod.doSomething();
}

private void doSomethingSneaky() {
privateHasPublicMethod.doSomething();
}
}

## ./HasPublicMethod.java
package fake;

public class HasPublicMethod {
public void doSomething() {}
}