/* * ************************************************************************************* * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * * ************************************************************************************* */ package com.espertech.esper.epl.core; import com.espertech.esper.client.ConfigurationPlugInAggregationFunction; import com.espertech.esper.support.epl.SupportPluginAggregationMethodOne; import junit.framework.TestCase; import java.lang.reflect.Method; public class TestEngineImportServiceImpl extends TestCase { EngineImportServiceImpl engineImportService; public void setUp() { this.engineImportService = new EngineImportServiceImpl(true, true, true); } public void testResolveMethodNoArgTypes() throws Exception { Method method = engineImportService.resolveMethod("java.lang.Math", "cbrt"); assertEquals(Math.class.getMethod("cbrt", new Class[] {double.class}), method); try { engineImportService.resolveMethod("java.lang.Math", "abs"); fail(); } catch (EngineImportException ex) { assertEquals("Ambiguous method name: method by name 'abs' is overloaded in class 'java.lang.Math'", ex.getMessage()); } } public void testAddAggregation() throws EngineImportException { engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", "abcdef.G", null)); engineImportService.addAggregation("abcDefGhk", new ConfigurationPlugInAggregationFunction("abcDefGhk", "ab", null)); engineImportService.addAggregation("a", new ConfigurationPlugInAggregationFunction("a", "Yh", null)); tryInvalidAddAggregation("g h", ""); tryInvalidAddAggregation("gh", "j j"); tryInvalidAddAggregation("abc", "hhh"); } public void testResolveAggregationMethod() throws Exception { engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", SupportPluginAggregationMethodOne.class.getName(), null)); assertTrue(engineImportService.resolveAggregation("abc") instanceof SupportPluginAggregationMethodOne); } public void testInvalidResolveAggregation(String funcName) throws Exception { try { engineImportService.resolveAggregation("abc"); } catch (EngineImportUndefinedException ex) { // expected } engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", "abcdef.G", null)); try { engineImportService.resolveAggregation("abc"); } catch (EngineImportException ex) { // expected } } public void testResolveClass() throws Exception { String className = "java.lang.Math"; Class expected = Math.class; assertEquals(expected, engineImportService.resolveClassInternal(className, false)); engineImportService.addImport("java.lang.Math"); assertEquals(expected, engineImportService.resolveClassInternal(className, false)); engineImportService.addImport("java.lang.*"); className = "String"; expected = String.class; assertEquals(expected, engineImportService.resolveClassInternal(className, false)); } public void testResolveClassInvalid() { String className = "Math"; try { engineImportService.resolveClassInternal(className, false); fail(); } catch (ClassNotFoundException e) { // Expected } } public void testAddImport() throws EngineImportException { engineImportService.addImport("java.lang.Math"); assertEquals(1, engineImportService.getImports().length); assertEquals("java.lang.Math", engineImportService.getImports()[0]); engineImportService.addImport("java.lang.*"); assertEquals(2, engineImportService.getImports().length); assertEquals("java.lang.Math", engineImportService.getImports()[0]); assertEquals("java.lang.*", engineImportService.getImports()[1]); } public void testAddImportInvalid() { try { engineImportService.addImport("java.lang.*.*"); fail(); } catch (EngineImportException e) { // Expected } try { engineImportService.addImport("java.lang..Math"); fail(); } catch (EngineImportException e) { // Expected } } private void tryInvalidAddAggregation(String funcName, String className) { try { engineImportService.addAggregation(funcName, new ConfigurationPlugInAggregationFunction(funcName, className, null)); } catch (EngineImportException ex) { // expected } } }