/*
* *************************************************************************************
* 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.event.arr;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.client.PropertyAccessException;
import com.espertech.esper.client.scopetest.EPAssertionUtil;
import com.espertech.esper.event.EventAdapterService;
import com.espertech.esper.event.EventTypeMetadata;
import com.espertech.esper.support.bean.SupportBean;
import com.espertech.esper.support.bean.SupportBeanComplexProps;
import com.espertech.esper.support.event.SupportEventAdapterService;
import com.espertech.esper.support.event.SupportEventBeanFactory;
import junit.framework.TestCase;
import java.util.LinkedHashMap;
import java.util.Map;
public class TestObjectArrayEventType extends TestCase {
private EventAdapterService eventAdapterService;
private ObjectArrayEventType eventType;
public void setUp() {
eventAdapterService = SupportEventAdapterService.getService();
EventTypeMetadata metadata = EventTypeMetadata.createNonPojoApplicationType(EventTypeMetadata.ApplicationType.OBJECTARR, "typename", true, true, true, false, false);
String[] names = {"myInt", "myIntBoxed", "myString", "mySupportBean", "myComplexBean", "myNullType"};
Object[] types = {int.class, Integer.class, String.class, SupportBean.class, SupportBeanComplexProps.class, null};
Map<String, Object> namesAndTypes = new LinkedHashMap<String, Object>();
for (int i = 0; i < names.length; i++) {
namesAndTypes.put(names[i], types[i]);
}
eventType = new ObjectArrayEventType(metadata, "typename", 1, eventAdapterService, namesAndTypes, null, null, null);
}
public void testGetPropertyNames()
{
String[] properties = eventType.getPropertyNames();
EPAssertionUtil.assertEqualsAnyOrder(properties, new String[]{"myInt", "myIntBoxed", "myString", "mySupportBean", "myComplexBean", "myNullType"});
}
public void testGetPropertyType()
{
assertEquals(int.class, eventType.getPropertyType("myInt"));
assertEquals(Integer.class, eventType.getPropertyType("myIntBoxed"));
assertEquals(String.class, eventType.getPropertyType("myString"));
assertEquals(SupportBean.class, eventType.getPropertyType("mySupportBean"));
assertEquals(SupportBeanComplexProps.class, eventType.getPropertyType("myComplexBean"));
assertEquals(int.class, eventType.getPropertyType("mySupportBean.intPrimitive"));
assertEquals(String.class, eventType.getPropertyType("myComplexBean.nested.nestedValue"));
assertEquals(int.class, eventType.getPropertyType("myComplexBean.indexed[1]"));
assertEquals(String.class, eventType.getPropertyType("myComplexBean.mapped('a')"));
assertEquals(null, eventType.getPropertyType("myNullType"));
assertNull(eventType.getPropertyType("dummy"));
assertNull(eventType.getPropertyType("mySupportBean.dfgdg"));
assertNull(eventType.getPropertyType("xxx.intPrimitive"));
assertNull(eventType.getPropertyType("myComplexBean.nested.nestedValueXXX"));
}
public void testGetUnderlyingType()
{
assertEquals(Object[].class, eventType.getUnderlyingType());
}
public void testIsValidProperty()
{
assertTrue(eventType.isProperty("myInt"));
assertTrue(eventType.isProperty("myIntBoxed"));
assertTrue(eventType.isProperty("myString"));
assertTrue(eventType.isProperty("mySupportBean.intPrimitive"));
assertTrue(eventType.isProperty("myComplexBean.nested.nestedValue"));
assertTrue(eventType.isProperty("myComplexBean.indexed[1]"));
assertTrue(eventType.isProperty("myComplexBean.mapped('a')"));
assertTrue(eventType.isProperty("myNullType"));
assertFalse(eventType.isProperty("dummy"));
assertFalse(eventType.isProperty("mySupportBean.dfgdg"));
assertFalse(eventType.isProperty("xxx.intPrimitive"));
assertFalse(eventType.isProperty("myComplexBean.nested.nestedValueXXX"));
}
public void testGetGetter()
{
SupportBean nestedSupportBean = new SupportBean();
nestedSupportBean.setIntPrimitive(100);
SupportBeanComplexProps complexPropBean = SupportBeanComplexProps.makeDefaultBean();
assertEquals(null, eventType.getGetter("dummy"));
Object[] values = new Object[] {20, 20, "a", nestedSupportBean, complexPropBean, null};
EventBean eventBean = new ObjectArrayEventBean(values, eventType);
assertEquals(20, eventType.getGetter("myInt").get(eventBean));
assertEquals(20, eventType.getGetter("myIntBoxed").get(eventBean));
assertEquals("a", eventType.getGetter("myString").get(eventBean));
assertEquals(nestedSupportBean, eventType.getGetter("mySupportBean").get(eventBean));
assertEquals(100, eventType.getGetter("mySupportBean.intPrimitive").get(eventBean));
assertEquals("nestedValue", eventType.getGetter("myComplexBean.nested.nestedValue").get(eventBean));
try
{
eventBean = SupportEventBeanFactory.createObject(new Object());
eventType.getGetter("myInt").get(eventBean);
assertTrue(false);
}
catch (ClassCastException ex)
{
}
}
public void testGetSuperTypes()
{
assertNull(eventType.getSuperTypes());
}
}