/* *************************************************************************************** * 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.event.vaevent; import com.espertech.esper.client.EventType; import com.espertech.esper.client.scopetest.EPAssertionUtil; import com.espertech.esper.core.support.SupportEventAdapterService; import com.espertech.esper.event.EventAdapterService; import com.espertech.esper.supportunit.bean.*; 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); } } }