    1   /*
    2    * $Id: CacheBSFTest.java,v 1.2 2005/03/02 08:22:40 jstrachan Exp $
    3    *
    4    * Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
    5    *
    6    * Redistribution and use of this software and associated documentation
    7    * ("Software"), with or without modification, are permitted provided that the
    8    * following conditions are met: 1. Redistributions of source code must retain
    9    * copyright statements and notices. Redistributions must also contain a copy
    10   * of this document. 2. Redistributions in binary form must reproduce the above
    11   * copyright notice, this list of conditions and the following disclaimer in
    12   * the documentation and/or other materials provided with the distribution. 3.
    13   * The name "groovy" must not be used to endorse or promote products derived
    14   * from this Software without prior written permission of The Codehaus. For
    15   * written permission, please contact info@codehaus.org. 4. Products derived
    16   * from this Software may not be called "groovy" nor may "groovy" appear in
    17   * their names without prior written permission of The Codehaus. "groovy" is a
    18   * registered trademark of The Codehaus. 5. Due credit should be given to The
    19   * Codehaus - http://groovy.codehaus.org/
    20   *
    21   * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
    22   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    23   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    24   * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
    25   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    26   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    27   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    28   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    29   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    30   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
    31   * DAMAGE.
    32   *
    33   */
    34  package org.codehaus.groovy.bsf;
    35
    36  import java.util.List;
    37
    38  import junit.framework.TestCase;
    39
    40  import org.apache.bsf.BSFManager;
    41
    42  /***
    43   * Tests the Caching BSF integration
    44   *
    45   * @author James Birchfield
    46   * @version $Revision: 1.2 $
    47   */
    48  public class CacheBSFTest extends TestCase {
    49
    50      protected BSFManager manager;
    51
    52      protected void setUp() throws Exception {
    53          // lets manually register Groovy until its part of the BSF distro
    54          BSFManager.registerScriptingEngine(
    55              "groovy",
    56              CachingGroovyEngine.class.getName(),
    57              new String[] { "groovy", "gy" });
    58
    59          manager = new BSFManager();
    60      }
    61
    62      public void testExec() throws Exception {
    63          manager.exec("groovy", "Test1.groovy", 0, 0, "println('testing Exec')");
    64          //nothing to really test here...just looking for debug that says it
    65          // used cache version
    66          manager.exec("groovy", "Test1.groovy", 0, 0, "println('testing Exec')");
    67      }
    68
    69      public void testEval() throws Exception {
    70          Object answer = manager.eval("groovy", "Test1.groovy", 0, 0, "println('testing Eval')\n  return [1, 2, 3]");
    71          // nothing to really test here...just looking for debug that says it
    72          // used cache version
    73          answer = manager.eval("groovy", "Test.groovy", 0, 0, "println('testing Eval')\n  return [1, 2, 3]");
    74
    75          assertTrue("Should return a list: " + answer, answer instanceof List);
    76          List list = (List) answer;
    77          assertEquals("List should be of right size", 3, list.size());
    78
    79          System.out.println("The eval returned the value: " + list);
    80      }
    81
    82      public void testBsfVariables() throws Exception {
    83          Object answer =
    84              manager.eval(
    85                  "groovy",
    86                  "Test1.groovy",
    87                  0,
    88                  0,
    89                  "println('testing variables')\n  assert this.bsf != null\n  return this.bsf");
    90          assertTrue("Should have an answer", answer != null);
    91      }
    92
    93      public void testVariables() throws Exception {
    94          manager.registerBean("x", new Integer(4));
    95
    96          Object answer =
    97              manager.eval(
    98                  "groovy",
    99                  "Test1.groovy",
    100                 0,
    101                 0,
    102                 "valueOfX = this.bsf.lookupBean('x'); assert valueOfX == 4; valueOfX + 1");
    103         // nothing to really test here...just looking for debug that says it
    104         // used cache version
    105         answer =
    106             manager.eval(
    107                 "groovy",
    108                 "Test2.groovy",
    109                 0,
    110                 0,
    111                 "valueOfX = this.bsf.lookupBean('x'); assert valueOfX == 4; valueOfX + 1");
    112         assertEquals("Incorrect return", new Integer(5), answer);
    113     }
    114
    115     public void testDeclaredVariables() throws Exception {
    116         manager.declareBean("foo", new Integer(5), Integer.class);
    117
    118         Object answer = manager.eval("groovy", "Test1.groovy", 0, 0, "valueOfFoo = foo; return valueOfFoo");
    119
    120         assertEquals(new Integer(5), answer);
    121
    122         manager.declareBean("foo", new Integer(6), Integer.class);
    123
    124         answer = manager.eval("groovy", "Test2.groovy", 0, 0, "valueOfFoo = foo; return valueOfFoo");
    125         assertEquals(new Integer(6), answer);
    126     }
    127 }