/*
* *************************************************************************************
* 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.vaevent;
import com.espertech.esper.client.EventType;
import com.espertech.esper.client.scopetest.EPAssertionUtil;
import com.espertech.esper.event.EventAdapterService;
import com.espertech.esper.support.bean.*;
import com.espertech.esper.support.event.SupportEventAdapterService;
import junit.framework.TestCase;
import java.util.HashMap;
import java.util.Map;
public class TestPropertyUtility extends TestCase
{
private final EventAdapterService eventSource = SupportEventAdapterService.getService();
private static final Map<String, int[]> expectedPropertyGroups = new HashMap<String, int[]>();
static
{
expectedPropertyGroups.put("p0", new int[] {1, 2, 3});
expectedPropertyGroups.put("p1", new int[] {0});
expectedPropertyGroups.put("p2", new int[] {1, 3});
expectedPropertyGroups.put("p3", new int[] {1});
expectedPropertyGroups.put("p4", new int[] {2});
expectedPropertyGroups.put("p5", new int[] {0, 3});
}
private EventType types[];
private String[] fields = "p0,p1,p2,p3,p4,p5".split(",");
public void setUp()
{
types = new EventType[5];
types[0] = eventSource.addBeanType("D1", SupportDeltaOne.class, false, false, false);
types[1] = eventSource.addBeanType("D2", SupportDeltaTwo.class, false, false, false);
types[2] = eventSource.addBeanType("D3", SupportDeltaThree.class, false, false, false);
types[3] = eventSource.addBeanType("D4", SupportDeltaFour.class, false, false, false);
types[4] = eventSource.addBeanType("D5", SupportDeltaFive.class, false, false, false);
}
public void testAnalyze()
{
PropertyGroupDesc[] groups = PropertyUtility.analyzeGroups(fields, types, new String[]{"D1","D2","D3","D4","D5"});
assertEquals(4, groups.length);
assertEquals(0, groups[0].getGroupNum());
EPAssertionUtil.assertEqualsExactOrder(groups[0].getProperties(), new Object[]{"p1", "p5"});
assertEquals(2, groups[0].getTypes().size());
assertEquals("D1", groups[0].getTypes().get(types[0]));
assertEquals("D5", groups[0].getTypes().get(types[4]));
assertEquals(1, groups[1].getGroupNum());
EPAssertionUtil.assertEqualsExactOrder(groups[1].getProperties(), new Object[]{"p0", "p2", "p3"});
assertEquals(1, groups[1].getTypes().size());
assertEquals("D2", groups[1].getTypes().get(types[1]));
assertEquals(2, groups[2].getGroupNum());
EPAssertionUtil.assertEqualsExactOrder(groups[2].getProperties(), new Object[]{"p0", "p4"});
assertEquals(1, groups[2].getTypes().size());
assertEquals("D3", groups[2].getTypes().get(types[2]));
assertEquals(3, groups[3].getGroupNum());
EPAssertionUtil.assertEqualsExactOrder(groups[3].getProperties(), new Object[]{"p0", "p2", "p5"});
assertEquals(1, groups[3].getTypes().size());
assertEquals("D4", groups[3].getTypes().get(types[3]));
}
public void testGetGroups()
{
PropertyGroupDesc[] groups = PropertyUtility.analyzeGroups(fields, types, new String[]{"D1","D2","D3","D4","D5"});
Map<String, int[]> groupsPerProp = PropertyUtility.getGroupsPerProperty(groups);
assertEquals(groupsPerProp.size(), expectedPropertyGroups.size());
for (Map.Entry<String, int[]> entry : expectedPropertyGroups.entrySet())
{
int[] result = groupsPerProp.get(entry.getKey());
EPAssertionUtil.assertEqualsExactOrder(entry.getValue(), result);
}
}
}