/* * ome.util.mem.MockBody * * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.util.mem; import util.mocks.IMock; import util.mocks.MethodSignature; import util.mocks.MockSupport; import util.mocks.MockedCall; /** * Mock object to simulate a Body object to attach to a {@link Handle}. * * @author Jean-Marie Burel      <a * href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author <br> * Andrea Falconi      <a * href="mailto:a.falconi@dundee.ac.uk"> a.falconi@dundee.ac.uk</a> * @since OME2.2 */ class MockBody implements Copiable, IMock { private static final MethodSignature readState = new MethodSignature( MethodSignature.PUBLIC, void.class, "readState"); private static final MethodSignature writeState = new MethodSignature( MethodSignature.PUBLIC, void.class, "writeState"); private static final MethodSignature copy = new MethodSignature( MethodSignature.PUBLIC, Object.class, "copy"); private MockSupport mockSupport; MockBody() { mockSupport = new MockSupport(); } // Used both in set up and verification mode. public void readState() { MockedCall mc = new MockedCall(readState); if (mockSupport.isSetUpMode()) { mockSupport.add(mc); } else { mockSupport.verifyCall(mc); } } // Used both in set up and verification mode. public void writeState() { MockedCall mc = new MockedCall(writeState); if (mockSupport.isSetUpMode()) { mockSupport.add(mc); } else { mockSupport.verifyCall(mc); } } // Used in set up mode. public void copy(Object retVal) { MockedCall mc = new MockedCall(copy, retVal); mockSupport.add(mc); } // Used in verification mode. public Object copy() { MockedCall mc = new MockedCall(copy, (Object) null); mc = mockSupport.verifyCall(mc); return mc.getResult(); } /** * @see util.mocks.IMock#activate() */ public void activate() { mockSupport.activate(); } /** * @see util.mocks.IMock#verify() */ public void verify() { mockSupport.verifyCallSequence(); } }