📄 invokemethodtest.java
字号:
Object value = invoke(this, "overloadedRemove", new Object[] { new Integer(5)}); assertEquals("called with integer", "int5", value); } public void testCallListRemove() throws Throwable { List list = new ArrayList(); list.add("foo"); list.add("bar"); Object value = invoke(list, "remove", new Object[] { new Integer(0)}); assertEquals("Should have just 1 item left: " + list, 1, list.size()); } public void testCoerceGStringToString() throws Throwable { GString param = new GString(new Object[] { "James" }) { public String[] getStrings() { return new String[] { "Hello " }; } }; Object value = invoke(this, "methodTakesString", new Object[] { param }); assertEquals("converted GString to string", param.toString(), value); } public void testCoerceGStringToStringOnGetBytes() throws Throwable { GString param = new GString(new Object[] { "US-ASCII" }) { public String[] getStrings() { return new String[] { "" }; } }; Object value = invoke("test", "getBytes", new Object[] { param }); assertEquals("converted GString to string", "test".getBytes("US-ASCII").getClass(), value.getClass()); } public void testBadBDToDoubleCoerce() throws Throwable { try { Object value = invoke(Math.class, "floor", new BigDecimal("1.7E309")); } catch (IllegalArgumentException e) { assertTrue("Math.floor(1.7E309) should fail because it is out of range for a Double. " +e,e.getMessage().indexOf("out of range") > 0); return; } fail("Math.floor(1.7E309) should fail because it is out of range for a Double."); } public void testClassMethod() throws Throwable { Class c = String.class; Object value = invoke(c, "getName", null); assertEquals("Class.getName()", c.getName(), value); c = getClass(); value = invoke(c, "getName", null); assertEquals("Class.getName()", c.getName(), value); } public void testProtectedMethod() throws Throwable { String param = "hello"; Object value = invoke(this, "aProtectedMethod", param); assertEquals("protected method call", aProtectedMethod(param), value); } public void testPrivateMethod() throws Throwable { String param = "hello"; Object value = invoke(this, "aPrivateMethod", param); assertEquals("private method call", aPrivateMethod(param), value); } public void testStringSubstringMethod() throws Throwable { String object = "hello"; Object value = invoke(object, "substring", new Integer(2)); assertEquals("substring(2)", object.substring(2), value); value = invoke(object, "substring", new Object[] { new Integer(1), new Integer(3)}); assertEquals("substring(1,3)", object.substring(1, 3), value); } public void testListGetWithRange() throws Throwable { List list = Arrays.asList(new Object[] { "a", "b", "c" }); Object range = new IntRange(0, 2); Object value = invoke(list, "getAt", range); assertTrue("Returned List: " + value, value instanceof List); List retList = (List) value; assertEquals("List size", 3, retList.size()); } public void testSetLenientOnDateFormat() throws Throwable { SimpleDateFormat a = new SimpleDateFormat( "MM/dd/yyyy" ); Object value = invoke(a, "setLenient", new Object[] { Boolean.FALSE }); assertEquals("void method", null, value); } public void testInvokeUnknownMethod() throws Throwable { try { Object value = invoke(this, "unknownMethod", "abc"); fail("Should have thrown an exception"); } catch (GroovyRuntimeException e) { // worked } } public void testInvokeMethodWithWrongNumberOfParameters() throws Throwable { try { Object[] args = { "a", "b" }; Object value = invoke(this, "unknownMethod", args); fail("Should have thrown an exception"); } catch (GroovyRuntimeException e) { // worked } } public void testInvokeMethodOnNullObject() throws Throwable { try { invoke(null, "mockCallWithNoParams", null); fail("Should have thrown an exception"); } catch (NullPointerException e) { // worked } } // Mock methods used for testing //------------------------------------------------------------------------- public Object mockCallWithNoParams() { return "NoParams"; } public Object mockCallWithOneParam(Object value) { assertEquals("Method not passed in the correct value", "abc", value); return "OneParam"; } public Object mockCallWithOneNullParam(Object value) { assertEquals("Method not passed in the correct value", null, value); return "OneParamWithNull"; } public Integer mockCallWithOneCollectionParam(Object collection) { Collection coll = InvokerHelper.asCollection(collection); return new Integer(coll.size()); } public Object mockOverloadedMethod() { return "void"; } public Object mockOverloadedMethod(Object object) { return "Object"; } public Object mockOverloadedMethod(Number object) { return "Number"; } public Object mockOverloadedMethod(String object) { return "String"; } public Object mockOverloadedMethod(Object object, Object bar) { return "Object,Object"; } public Object mockOverloadedMethod(Object object, Object[] array) { return "Object,Object[]"; } public Object badOverload(String a, Object b) { return "String, Object"; } public Object badOverload(Object a, String b) { return "Object, String"; } public Object methodTakesString(String x) { return x; } public Object overloadedRemove(int idx) { return "int" + idx; } public Object overloadedRemove(Object value) { return "Object" + value; } // Implementation methods //------------------------------------------------------------------------- protected Object aProtectedMethod(String param) { return param + " there!"; } private Object aPrivateMethod(String param) { return param + " James!"; } protected void assertMethodCall(Object object, String method, Object param, Object expected) { Object value = InvokerHelper.invokeMethod(object, method, new Object[] { param }); assertEquals("result of method: " + method, expected, value); } /** * Asserts that invoking the method chooser finds the right overloaded * method implementation * * @param expected * is the expected value of the method * @param arguments * the argument(s) to the method invocation */ protected void assertMethodChooser(Object expected, Object arguments) throws Throwable { Object value = invoke(this, "mockOverloadedMethod", arguments); assertEquals("Invoking overloaded method for arguments: " + InvokerHelper.toString(arguments), expected, value); } protected Object invoke(Object object, String method, Object args) throws Throwable { try { return invoker.invokeMethod(object, method, args); } catch (InvokerInvocationException e) { throw e.getCause(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -