/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * 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.core.support.SupportEngineImportServiceFactory; import com.espertech.esper.supportunit.epl.SupportPluginAggregationMethodOneFactory; import junit.framework.TestCase; import java.lang.reflect.Method; public class TestEngineImportServiceImpl extends TestCase { EngineImportServiceImpl engineImportService; public void setUp() { this.engineImportService = SupportEngineImportServiceFactory.make(); } public void testResolveMethodNoArgTypes() throws Exception { Method method = engineImportService.resolveMethodOverloadChecked("java.lang.Math", "cbrt"); assertEquals(Math.class.getMethod("cbrt", new Class[]{double.class}), method); try { engineImportService.resolveMethodOverloadChecked("java.lang.Math", "abs"); fail(); } catch (EngineImportException ex) { assertEquals("Method by name 'abs' is overloaded in class 'java.lang.Math' and overloaded methods do not return the same type", ex.getMessage()); } } public void testAddAggregation() throws EngineImportException { engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", "abcdef.G")); engineImportService.addAggregation("abcDefGhk", new ConfigurationPlugInAggregationFunction("abcDefGhk", "ab")); engineImportService.addAggregation("a", new ConfigurationPlugInAggregationFunction("a", "Yh")); tryInvalidAddAggregation("g h", ""); tryInvalidAddAggregation("gh", "j j"); tryInvalidAddAggregation("abc", "hhh"); } public void testResolveAggregationMethod() throws Exception { engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", SupportPluginAggregationMethodOneFactory.class.getName())); assertTrue(engineImportService.resolveAggregationFactory("abc") instanceof SupportPluginAggregationMethodOneFactory); } public void testInvalidResolveAggregation(String funcName) throws Exception { try { engineImportService.resolveAggregationFactory("abc"); } catch (EngineImportUndefinedException ex) { // expected } engineImportService.addAggregation("abc", new ConfigurationPlugInAggregationFunction("abc", "abcdef.G")); try { engineImportService.resolveAggregationFactory("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, false)); engineImportService.addImport("java.lang.Math"); assertEquals(expected, engineImportService.resolveClassInternal(className, false, false)); engineImportService.addImport("java.lang.*"); className = "String"; expected = String.class; assertEquals(expected, engineImportService.resolveClassInternal(className, false, false)); } public void testResolveClassInvalid() { String className = "Math"; try { engineImportService.resolveClassInternal(className, false, 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)); } catch (EngineImportException ex) { // expected } } }