    001    /*****************************************************************************
    002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
    003     * ------------------------------------------------------------------------- *
    004     * The software in this package is published under the terms of the BSD      *
    005     * style license a copy of which has been included with this distribution in *
    006     * the LICENSE.txt file.                                                     *
    007     *                                                                           *
    008     * Original code by Mauro Talevi                                             *
    009     *****************************************************************************/
    010    package org.picocontainer.tck;
    011
    012    import org.jmock.Mockery;
    013    import org.jmock.lib.CamelCaseNamingScheme;
    014
    015    public class MockFactory {
    016
    017            /**
    018             * Returns a Mockery instance with a counting naming scheme.
    019             * From jMock 2.4, default behaviour does not allow more than one mock with same name.
    020             * This can be over-restrictive. A workaround is to append a counting integer.
    021             *
    022             * @return A Mockery instance
    023             */
    024            public static Mockery mockeryWithCountingNamingScheme() {
    025                    return new Mockery() {
    026                            {
    027                                    setNamingScheme(new CamelCaseNamingScheme() {
    028                                            private int count;
    029
    030                                            public String defaultNameFor(Class<?> typeToMock) {
    031                                                    count++;
    032                                                    return super.defaultNameFor(typeToMock) + count;
    033                                            }
    034                                    });
    035                            }
    036                    };
    037            }
    038    }