/* * ************************************************************************************* * 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.regression.view; import com.espertech.esper.client.*; import com.espertech.esper.client.scopetest.SupportUpdateListener; import com.espertech.esper.client.soda.*; import com.espertech.esper.support.bean.SupportBean; import com.espertech.esper.support.client.SupportConfigFactory; import com.espertech.esper.util.SerializableObjectCopier; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class TestBitWiseOperators extends TestCase { private static final byte FIRST_EVENT = 1; private static final short SECOND_EVENT = 2; private static final int THIRD_EVENT = FIRST_EVENT | SECOND_EVENT; private static final long FOURTH_EVENT = 4; private static final boolean FITH_EVENT = false; private EPServiceProvider epService; private SupportUpdateListener listener; protected void tearDown() throws Exception { listener = null; } public void testBitWiseOperators_OM() throws Exception { String viewExpr = "select bytePrimitive & byteBoxed as myFirstProperty, " + "shortPrimitive | shortBoxed as mySecondProperty, " + "intPrimitive | intBoxed as myThirdProperty, " + "longPrimitive ^ longBoxed as myFourthProperty, " + "boolPrimitive & boolBoxed as myFifthProperty " + "from " + SupportBean.class.getName() + ".win:length(3)"; EPStatementObjectModel model = new EPStatementObjectModel(); model.setSelectClause(SelectClause.create() .add(Expressions.binaryAnd().add("bytePrimitive").add("byteBoxed"), "myFirstProperty") .add(Expressions.binaryOr().add("shortPrimitive").add("shortBoxed"), "mySecondProperty") .add(Expressions.binaryOr().add("intPrimitive").add("intBoxed"), "myThirdProperty") .add(Expressions.binaryXor().add("longPrimitive").add("longBoxed"), "myFourthProperty") .add(Expressions.binaryAnd().add("boolPrimitive").add("boolBoxed"), "myFifthProperty") ); model.setFromClause(FromClause.create(FilterStream.create(SupportBean.class.getName()).addView("win", "length", Expressions.constant(3)))); model = (EPStatementObjectModel) SerializableObjectCopier.copy(model); assertEquals(viewExpr, model.toEPL()); EPStatement selectTestView = epService.getEPAdministrator().createEPL(viewExpr); selectTestView.addListener(listener); runBitWiseOperators(); } public void testBitWiseOperators() { setUpBitWiseStmt(); listener.reset(); runBitWiseOperators(); } private void runBitWiseOperators() { sendEvent(FIRST_EVENT, new Byte(FIRST_EVENT), SECOND_EVENT, new Short(SECOND_EVENT), FIRST_EVENT, new Integer(THIRD_EVENT), 3L, new Long(FOURTH_EVENT), FITH_EVENT, new Boolean(FITH_EVENT)); EventBean received = listener.getAndResetLastNewData()[0]; assertEquals((byte) 1, (received.get("myFirstProperty"))); assertTrue(((Short) (received.get("mySecondProperty")) & SECOND_EVENT) == SECOND_EVENT); assertTrue(((Integer) (received.get("myThirdProperty")) & FIRST_EVENT) == FIRST_EVENT); assertEquals(7L, (received.get("myFourthProperty"))); assertEquals(false, (received.get("myFifthProperty"))); } public void setUp() { listener = new SupportUpdateListener(); epService = EPServiceProviderManager.getDefaultProvider(SupportConfigFactory.getConfiguration()); epService.initialize(); } private EPStatement setUpBitWiseStmt() { String viewExpr = "select (bytePrimitive & byteBoxed) as myFirstProperty, " + "(shortPrimitive | shortBoxed) as mySecondProperty, " + "(intPrimitive | intBoxed) as myThirdProperty, " + "(longPrimitive ^ longBoxed) as myFourthProperty, " + "(boolPrimitive & boolBoxed) as myFifthProperty " + " from " + SupportBean.class.getName() + ".win:length(3) "; EPStatement selectTestView = epService.getEPAdministrator().createEPL(viewExpr); selectTestView.addListener(listener); EventType type = selectTestView.getEventType(); assertEquals(Byte.class, type.getPropertyType("myFirstProperty")); assertEquals(Short.class, type.getPropertyType("mySecondProperty")); assertEquals(Integer.class, type.getPropertyType("myThirdProperty")); assertEquals(Long.class, type.getPropertyType("myFourthProperty")); assertEquals(Boolean.class, type.getPropertyType("myFifthProperty")); return selectTestView; } protected void sendEvent (byte bytePrimitive_, Byte byteBoxed_, short shortPrimitive_, Short shortBoxed, int intPrimitive_, Integer intBoxed_, long longPrimitive_, Long longBoxed_, boolean boolPrimitive_, Boolean boolBoxed_) { SupportBean bean = new SupportBean(); bean.setBytePrimitive(bytePrimitive_); bean.setByteBoxed(byteBoxed_); bean.setShortPrimitive(shortPrimitive_); bean.setShortBoxed(shortBoxed); bean.setIntPrimitive(intPrimitive_); bean.setIntBoxed(intBoxed_); bean.setLongPrimitive(longPrimitive_); bean.setLongBoxed(longBoxed_); bean.setBoolPrimitive(boolPrimitive_); bean.setBoolBoxed(boolBoxed_); epService.getEPRuntime().sendEvent(bean); } private static final Log log = LogFactory.getLog(TestBitWiseOperators.class); }