package org.webpieces.nio.test.serviceproxy;
import junit.framework.TestCase;
import org.webpieces.util.api.serviceproxy.CustomServiceProxy;
import org.webpieces.util.api.serviceproxy.ServiceProxy;
import org.webpieces.util.api.serviceproxy.ServiceProxyFactory;
import biz.xsoftware.mock.MockObject;
import biz.xsoftware.mock.MockObjectFactory;
public class TestServiceProxy extends TestCase {
private MockObject mockService;
private MockObject mockService2;
private ServiceProxy proxy;
@Override
protected void setUp() throws Exception {
mockService = MockObjectFactory.createMock(ServiceIntf.class);
mockService2 = MockObjectFactory
.createMock(ServiceIntf.class);
ServiceIntf service = (ServiceIntf) ServiceProxyFactory
.createServiceProxy(ServiceIntf.class, mockService);
proxy = (ServiceProxy)service;
}
@Override
protected void tearDown() throws Exception {
mockService.expect(MockObject.NONE);
mockService2.expect(MockObject.NONE);
}
public void testCreateByContructorAndServiceCanStart(){
((ServiceIntf)proxy).start();
mockService.expect("start");
((ServiceIntf)proxy).stop();
mockService.expect("stop");
}
public void testCreateBySet() {
proxy.setService(mockService2);
((ServiceIntf)proxy).start();
((ServiceIntf)proxy).stop();
}
public void testUnset(){
proxy.setService(mockService2);
proxy.unsetService(mockService);
((ServiceIntf)proxy).start();
mockService.expect("start");
}
public void testDefaultUserService(){
((ServiceIntf)proxy).serviceMethod();
mockService.expect("serviceMethod");
}
public void testUserService(){
proxy.setService(mockService2);
((ServiceIntf)proxy).serviceMethod();
mockService2.expect("serviceMethod");
}
public void testCustomServiceProxy() {
ServiceProxy customProxy = (ServiceProxy) ServiceProxyFactory
.createCustomServiceProxy(ServiceIntf.class,
new FakeCustromProxy((ServiceIntf)mockService));
customProxy.start();
mockService.expect("start");
}
private class FakeCustromProxy extends CustomServiceProxy {
public FakeCustromProxy(ServiceIntf service) {
super(service);
}
@Override
public void start() {
((ServiceIntf)service).start();
}
@Override
public void stop() {
((ServiceIntf)service).stop();
}
}
}