public void testCorrel() { // further math tests can be found in the view unit test EPAdministrator admin = epService.getEPAdministrator(); admin.getConfiguration().addEventType("Market", SupportMarketDataBean.class); EPStatement statement = admin.createEPL( "select * from Market.std:groupwin(symbol).win:length(1000000).stat:correl(price, volume, feed)"); SupportUpdateListener listener = new SupportUpdateListener(); statement.addListener(listener); assertEquals(Double.class, statement.getEventType().getPropertyType("correlation")); String[] fields = new String[] {"symbol", "correlation", "feed"}; epService.getEPRuntime().sendEvent(new SupportMarketDataBean("ABC", 10.0, 1000L, "f1")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"ABC", Double.NaN, "f1"}); epService.getEPRuntime().sendEvent(new SupportMarketDataBean("DEF", 1.0, 2L, "f2")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"DEF", Double.NaN, "f2"}); epService.getEPRuntime().sendEvent(new SupportMarketDataBean("DEF", 2.0, 4L, "f3")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"DEF", 1.0, "f3"}); epService.getEPRuntime().sendEvent(new SupportMarketDataBean("ABC", 20.0, 2000L, "f4")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"ABC", 1.0, "f4"}); }
public void testLinest() { // further math tests can be found in the view unit test EPAdministrator admin = epService.getEPAdministrator(); admin.getConfiguration().addEventType("Market", SupportMarketDataBean.class); EPStatement statement = admin.createEPL( "select * from Market.std:groupwin(symbol).win:length(1000000).stat:linest(price, volume, feed)"); SupportUpdateListener listener = new SupportUpdateListener(); statement.addListener(listener); assertEquals(Double.class, statement.getEventType().getPropertyType("slope")); assertEquals(Double.class, statement.getEventType().getPropertyType("YIntercept")); assertEquals(Double.class, statement.getEventType().getPropertyType("XAverage")); assertEquals(Double.class, statement.getEventType().getPropertyType("XStandardDeviationPop")); assertEquals( Double.class, statement.getEventType().getPropertyType("XStandardDeviationSample")); assertEquals(Double.class, statement.getEventType().getPropertyType("XSum")); assertEquals(Double.class, statement.getEventType().getPropertyType("XVariance")); assertEquals(Double.class, statement.getEventType().getPropertyType("YAverage")); assertEquals(Double.class, statement.getEventType().getPropertyType("YStandardDeviationPop")); assertEquals( Double.class, statement.getEventType().getPropertyType("YStandardDeviationSample")); assertEquals(Double.class, statement.getEventType().getPropertyType("YSum")); assertEquals(Double.class, statement.getEventType().getPropertyType("YVariance")); assertEquals(Long.class, statement.getEventType().getPropertyType("dataPoints")); assertEquals(Long.class, statement.getEventType().getPropertyType("n")); assertEquals(Double.class, statement.getEventType().getPropertyType("sumX")); assertEquals(Double.class, statement.getEventType().getPropertyType("sumXSq")); assertEquals(Double.class, statement.getEventType().getPropertyType("sumXY")); assertEquals(Double.class, statement.getEventType().getPropertyType("sumY")); assertEquals(Double.class, statement.getEventType().getPropertyType("sumYSq")); String[] fields = new String[] {"symbol", "slope", "YIntercept", "feed"}; epService.getEPRuntime().sendEvent(new SupportMarketDataBean("ABC", 10.0, 50000L, "f1")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"ABC", Double.NaN, Double.NaN, "f1"}); epService.getEPRuntime().sendEvent(new SupportMarketDataBean("DEF", 1.0, 1L, "f2")); EventBean theEvent = listener.assertOneGetNewAndReset(); EPAssertionUtil.assertProps( theEvent, fields, new Object[] {"DEF", Double.NaN, Double.NaN, "f2"}); assertEquals(1d, theEvent.get("XAverage")); assertEquals(0d, theEvent.get("XStandardDeviationPop")); assertEquals(Double.NaN, theEvent.get("XStandardDeviationSample")); assertEquals(1d, theEvent.get("XSum")); assertEquals(Double.NaN, theEvent.get("XVariance")); assertEquals(1d, theEvent.get("YAverage")); assertEquals(0d, theEvent.get("YStandardDeviationPop")); assertEquals(Double.NaN, theEvent.get("YStandardDeviationSample")); assertEquals(1d, theEvent.get("YSum")); assertEquals(Double.NaN, theEvent.get("YVariance")); assertEquals(1L, theEvent.get("dataPoints")); assertEquals(1L, theEvent.get("n")); assertEquals(1d, theEvent.get("sumX")); assertEquals(1d, theEvent.get("sumXSq")); assertEquals(1d, theEvent.get("sumXY")); assertEquals(1d, theEvent.get("sumY")); assertEquals(1d, theEvent.get("sumYSq")); // above computed values tested in more detail in RegressionBean test epService.getEPRuntime().sendEvent(new SupportMarketDataBean("DEF", 2.0, 2L, "f3")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"DEF", 1.0, 0.0, "f3"}); epService.getEPRuntime().sendEvent(new SupportMarketDataBean("ABC", 11.0, 50100L, "f4")); EPAssertionUtil.assertProps( listener.assertOneGetNewAndReset(), fields, new Object[] {"ABC", 100.0, 49000.0, "f4"}); }