⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invokemethodtest.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: InvokeMethodTest.java,v 1.32 2006/03/03 00:39:20 blackdrag Exp $ * * Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved. * * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided that the * following conditions are met: *  1. Redistributions of source code must retain copyright statements and * notices. Redistributions must also contain a copy of this document. *  2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. *  3. The name "groovy" must not be used to endorse or promote products * derived from this Software without prior written permission of The Codehaus. * For written permission, please contact info@codehaus.org. *  4. Products derived from this Software may not be called "groovy" nor may * "groovy" appear in their names without prior written permission of The * Codehaus. "groovy" is a registered trademark of The Codehaus. *  5. Due credit should be given to The Codehaus - http://groovy.codehaus.org/ * * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * */package org.codehaus.groovy.runtime;import groovy.lang.GString;import groovy.lang.GroovyRuntimeException;import groovy.lang.IntRange;import groovy.util.GroovyTestCase;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Date;import java.util.List;import junit.framework.AssertionFailedError;/** * Tests method invocation * * @author <a href="mailto:james@coredevelopers.net">James Strachan</a> * @version $Revision: 1.32 $ */public class InvokeMethodTest extends GroovyTestCase {    protected Invoker invoker = InvokerHelper.getInstance();    // Method invocation tests    //-------------------------------------------------------------------------    public void testInvokeMethodNoParams() throws Throwable {        Object value = invoke(this, "mockCallWithNoParams", null);        assertEquals("return value", "NoParams", value);        value = invoke(this, "mockCallWithNoParams", new Object[0]);        assertEquals("return value", "NoParams", value);    }    public void testInvokeMethodOneParam() throws Throwable {        Object value = invoke(this, "mockCallWithOneParam", "abc");        assertEquals("return value", "OneParam", value);    }    public void testInvokeMethodOneParamWhichIsNull() throws Throwable {        Object value = invoke(this, "mockCallWithOneNullParam", new Object[] { null });        assertEquals("return value", "OneParamWithNull", value);        value = invoke(this, "mockCallWithOneNullParam", null);        assertEquals("return value", "OneParamWithNull", value);    }    public void testInvokeOverloadedMethodWithOneParamWhichIsNull() throws Throwable {        Object value = invoke(this, "mockOverloadedMethod", new Object[] { null });        assertEquals("return value", "Object", value);    }    public void testInvokeMethodOneCollectionParameter() throws Throwable {        Object[] foo = { "a", "b", "c" };        Object value = invoke(this, "mockCallWithOneCollectionParam", new Object[] { foo });        assertEquals("return value", new Integer(3), value);        List list = new ArrayList();        list.add("a");        list.add("b");        value = invoke(this, "mockCallWithOneCollectionParam", list);        assertEquals("return value", new Integer(2), value);    }    public void testInvokePrintlnMethod() throws Throwable {        Object value = invoke(System.out, "println", "testing System.out.println...");        assertEquals("return value", null, value);    }    public void testMethodChooserNull() throws Throwable {        assertMethodChooser("Object", new Object[] { null });    }    public void testMethodChooserNoParams() throws Throwable {        assertMethodChooser("void", null);    }    public void testMethodChooserObject() throws Throwable {        assertMethodChooser("Object", new Object());        assertMethodChooser("Object", new Date());    }    public void testMethodChooserString_FAILS() throws Throwable { if (notYetImplemented()) return;        assertMethodChooser("String", "foo");        assertMethodChooser("String", new StringBuffer());        assertMethodChooser("String", new Character('a'));    }    public void testMethodChooserNumber() throws Throwable {        assertMethodChooser("Number", new Integer(2));        assertMethodChooser("Number", new Double(2));    }    public void testMethodChooserTwoParams() throws Throwable {        List list = new ArrayList();        list.add("foo");        list.add("bar");        assertMethodChooser("Object,Object", list.toArray());        Object[] blah = { "a", "b" };        assertMethodChooser("Object,Object", blah);    }    public void testInstanceofWorksForArray() {        Class type = Object[].class;        Object value = new Object[1];        assertTrue("instanceof works for array", type.isInstance(value));    }    public void testMethodChooserTwoParamsWithSecondAnObjectArray() throws Throwable {        Object[] blah = { "a", new Object[] { "b" }        };        assertMethodChooser("Object,Object[]", blah);    }    public void testCollectionMethods() throws Throwable {        Object list = InvokerHelper.createList(new Object[] { "a", "b" });        Object value = invoke(list, "size", null);        assertEquals("size of collection", new Integer(2), value);        value = invoke(list, "contains", "a");        assertEquals("contains method", Boolean.TRUE, value);    }    public void testNewMethods() throws Throwable {        Object value = invoke("hello", "size", null);        assertEquals("size of string", new Integer(5), value);    }    public void testStaticMethod() throws Throwable {        Object value = invoke(DummyBean.class, "dummyStaticMethod", "abc");        assertEquals("size of string", "ABC", value);    }    public void testBaseClassMethod() throws Throwable {        Object object = new DummyBean();        Object value = invoke(object, "toString", null);        assertEquals("toString", object.toString(), value);    }	//SPG modified to reflect DefaultGroovyMethod name change and expected result from	//Integer/Integer division.    public void testDivideNumbers() throws Throwable {        assertMethodCall(new Double(10), "div", new Double(2), new Double(5));        assertMethodCall(new Double(10), "div", new Integer(2), new Double(5));        assertMethodCall(new Integer(10), "div", new Double(2), new Double(5));        assertMethodCall(new Integer(10), "div", new Integer(2), new java.math.BigDecimal("5"));    }    public void testBaseFailMethod() throws Throwable {        Object value;        try {            value = invoke(this, "fail", "hello");        }        catch (AssertionFailedError e) {            // worked        }    }    public void testToArrayOnList() throws Throwable {        List object = new ArrayList();        object.add("Hello");        Object[] value = (Object[]) invoke(object, "toArray", null);        assertArrayEquals(object.toArray(), value);        assertEquals(1, value.length);        assertEquals("Hello", value[0]);        value = (Object[]) invoke(object, "toArray", new Object[0]);        assertArrayEquals(object.toArray(), value);    }    public void testInvalidOverloading() throws Throwable {        try {            invoke(this, "badOverload", new Object[] { "a", "b" });            fail("Should fail as an unambiguous method is invoked");        }        catch (GroovyRuntimeException e) {            System.out.println("Caught: " + e);        }    }    public void testPlusWithNull() throws Throwable {        String param = "called with: ";        Object value = invoke(param, "plus", new Object[] { null });        assertEquals("called with null", param + null, value);    }    public void testCallIntMethodWithInteger() throws Throwable {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -