View Javadoc

1   // Copyright (C) 2011 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.scriptengine.jython;
23  
24  import static net.grinder.scriptengine.jython.instrumentation.AbstractJythonInstrumenterTestCase.assertVersion;
25  import static org.junit.Assert.assertEquals;
26  import static org.junit.Assert.assertSame;
27  
28  import java.util.List;
29  
30  import net.grinder.common.GrinderProperties;
31  import net.grinder.engine.process.dcr.DCRContextImplementation;
32  import net.grinder.scriptengine.DCRContext;
33  import net.grinder.scriptengine.Instrumenter;
34  import net.grinder.testutility.Jython25Runner;
35  
36  import org.junit.Test;
37  import org.junit.runner.RunWith;
38  import org.python.core.PyInstance;
39  
40  
41  /**
42   * Unit tests for {@link JythonScriptEngineService}.
43   *
44   * @author Philip Aston
45   */
46  @RunWith(Jython25Runner.class)
47  public class TestJythonScriptEngineServiceWithJython25
48    extends AbstractJythonScriptEngineServiceTests {
49  
50    @Test public void testVersion() throws Exception {
51      assertVersion("2.5");
52    }
53  
54    @Test public void testCreateInstrumentedProxy() throws Exception {
55      final GrinderProperties properties = new GrinderProperties();
56      final DCRContext context = DCRContextImplementation.create(null);
57  
58      final List<Instrumenter> instrumenters =
59        new JythonScriptEngineService(properties, context, m_pyScript)
60        .createInstrumenters();
61  
62      assertEquals(1, instrumenters.size());
63  
64      final Instrumenter instrumenter = instrumenters.get(0);
65  
66      assertEquals("byte code transforming instrumenter for Jython 2.5",
67                   instrumenter.getDescription());
68  
69      final Object original = new PyInstance();
70  
71      final Object proxy =
72        instrumenter.createInstrumentedProxy(m_test, m_recorder, original);
73  
74      assertSame(original, proxy);
75    }
76  
77    @Test public void testInstrument() throws Exception {
78      final GrinderProperties properties = new GrinderProperties();
79      final DCRContextImplementation context = DCRContextImplementation.create(null);
80  
81      final List<Instrumenter> instrumenters =
82        new JythonScriptEngineService(properties, context, m_pyScript)
83        .createInstrumenters();
84  
85      instrumenters.get(0).instrument(m_test, m_recorder, new PyInstance());
86    }
87  }