Пример #1
0
        private void RunAssertionProperty(EPServiceProvider epService)
        {
            // test fragment type - collection inside
            var eplFragment = "select Contained.allOf(x => x.p00 < 5) as allOfX from SupportBean_ST0_Container#keepall";
            var stmtFragment = epService.EPAdministrator.CreateEPL(eplFragment);
            var listener = new SupportUpdateListener();
            stmtFragment.Events += listener.Update;

            epService.EPRuntime.SendEvent(SupportBean_ST0_Container.Make3Value("ID1,KEY1,1"));
            Assert.AreEqual(true, listener.AssertOneGetNewAndReset().Get("allOfX"));

            epService.EPRuntime.SendEvent(SupportBean_ST0_Container.Make3Value("ID1,KEY1,10"));
            Assert.AreEqual(false, listener.AssertOneGetNewAndReset().Get("allOfX"));
            stmtFragment.Dispose();

            // test array and iterable
            var fields = "val0,val1".Split(',');
            eplFragment = "select Intarray.sumof() as val0, " +
                          "Intiterable.sumOf() as val1 " +
                          " from SupportCollection#keepall";
            stmtFragment = epService.EPAdministrator.CreateEPL(eplFragment);
            stmtFragment.Events += listener.Update;

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("5,6,7"));
            EPAssertionUtil.AssertProps(
                listener.AssertOneGetNewAndReset(), fields, new object[] {5 + 6 + 7, 5 + 6 + 7});

            // test map event type with object-array prop
            epService.EPAdministrator.Configuration.AddEventType(typeof(BookDesc));
            epService.EPAdministrator.CreateEPL("create schema MySchema (books BookDesc[])");

            var stmt = epService.EPAdministrator.CreateEPL("select books.max(i => i.price) as mymax from MySchema");
            stmt.Events += listener.Update;

            var @event = Collections.SingletonDataMap(
                "books", new[] {new BookDesc("1", "book1", "dave", 1.00, null)});
            epService.EPRuntime.SendEvent(@event, "MySchema");
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), "mymax".Split(','), new object[] {1.0});

            // test method invocation variations returning list/array of string and test UDF +property as well
            RunAssertionMethodInvoke(epService, "select e.TheList.anyOf(v => v = selector) as flag from MyEvent e");
            epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction(
                "convertToArray", typeof(MyEvent), "ConvertToArray");
            RunAssertionMethodInvoke(
                epService, "select convertToArray(theList).anyOf(v => v = selector) as flag from MyEvent e");
            RunAssertionMethodInvoke(epService, "select TheArray.anyOf(v => v = selector) as flag from MyEvent e");
            RunAssertionMethodInvoke(epService, "select e.TheArray.anyOf(v => v = selector) as flag from MyEvent e");
            RunAssertionMethodInvoke(
                epService, "select e.TheList.anyOf(v => v = e.selector) as flag from pattern[every e=MyEvent]");
            RunAssertionMethodInvoke(
                epService,
                "select e.NestedMyEvent.MyNestedList.anyOf(v => v = e.selector) as flag from pattern[every e=MyEvent]");
            RunAssertionMethodInvoke(
                epService,
                "select " + TypeHelper.MaskTypeName<MyEvent>() +
                ".ConvertToArray(TheList).anyOf(v => v = selector) as flag from MyEvent e");

            stmt.Dispose();
        }
Пример #2
0
 private static void SendAssert(
     RegressionEnvironment env,
     int?expected,
     string csv)
 {
     env.SendEventBean(SupportCollection.MakeNumeric(csv));
     EPAssertionUtil.AssertProps(env.Listener("s0").AssertOneGetNewAndReset(), "c0".SplitCsv(), new object[] { expected });
 }
Пример #3
0
 private void SendAssert(
     RegressionEnvironment env,
     string[] fields,
     double?expected,
     string intcsv)
 {
     env.SendEventBean(SupportCollection.MakeNumeric(intcsv));
     EPAssertionUtil.AssertProps(env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] { expected });
 }
Пример #4
0
        public void TestSumOfScalar()
        {
            String[] fields      = "val0,val1".Split(',');
            String   eplFragment = "select " +
                                   "Intvals.sumOf() as val0, " +
                                   "Bdvals.sumOf() as val1 " +
                                   "from SupportCollection";
            EPStatement stmtFragment = _epService.EPAdministrator.CreateEPL(eplFragment);

            stmtFragment.Events += _listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtFragment.EventType, fields, new Type[] { typeof(int?), typeof(decimal?) });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("1,4,5"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 1 + 4 + 5, 1m + 4m + 5m });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("3,4"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 3 + 4, 3m + 4m });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("3"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 3, 3m });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric(""));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { null, null });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric(null));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { null, null });

            stmtFragment.Dispose();

            // test average with lambda
            _epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractNum", typeof(TestEnumMinMax.MyService).FullName, "ExtractNum");
            _epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractDecimal", typeof(TestEnumMinMax.MyService).FullName, "ExtractDecimal");

            // lambda with string-array input
            String[] fieldsLambda = "val0,val1".SplitCsv();
            String   eplLambda    = "select " +
                                    "Strvals.sumOf(v => extractNum(v)) as val0, " +
                                    "Strvals.sumOf(v => extractDecimal(v)) as val1 " +
                                    "from SupportCollection";
            EPStatement stmtLambda = _epService.EPAdministrator.CreateEPL(eplLambda);

            stmtLambda.Events += _listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtLambda.EventType, fieldsLambda, new [] { typeof(int?), typeof(decimal?) });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString("E2,E1,E5,E4"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { 2 + 1 + 5 + 4, new decimal(2 + 1 + 5 + 4) });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString("E1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { 1, new decimal(1) });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString(null));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { null, null });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString(""));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { null, null });
        }
Пример #5
0
        private void RunAssertionAverageScalar(EPServiceProvider epService)
        {
            var fields      = "val0,val1".Split(',');
            var eplFragment = "select " +
                              "Intvals.average() as val0," +
                              "Bdvals.average() as val1 " +
                              "from SupportCollection";
            var stmtFragment = epService.EPAdministrator.CreateEPL(eplFragment);
            var listener     = new SupportUpdateListener();

            stmtFragment.Events += listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtFragment.EventType, fields, new Type[] { typeof(double?), typeof(decimal?) });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("1,2,3"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 2d, 2m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("1,null,3"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 2d, 2m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("4"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 4d, 4m });
            stmtFragment.Dispose();

            // test average with lambda
            epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractNum", typeof(ExecEnumMinMax.MyService), "ExtractNum");
            epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractDecimal", typeof(ExecEnumMinMax.MyService), "ExtractDecimal");

            var fieldsLambda = "val0,val1".Split(',');
            var eplLambda    = "select " +
                               "Strvals.average(v => extractNum(v)) as val0, " +
                               "Strvals.average(v => extractDecimal(v)) as val1 " +
                               "from SupportCollection";
            var stmtLambda = epService.EPAdministrator.CreateEPL(eplLambda);

            stmtLambda.Events += listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtLambda.EventType, fieldsLambda, new Type[] { typeof(double?), typeof(decimal?) });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString("E2,E1,E5,E4"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { (2 + 1 + 5 + 4) / 4d, (decimal)((2 + 1 + 5 + 4) / 4d) });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString("E1"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { 1d, 1m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString(null));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { null, null });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString(""));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { null, null });

            stmtLambda.Dispose();
        }
Пример #6
0
            public void Run(RegressionEnvironment env)
            {
                var fields  = "c0,c1".SplitCsv();
                var builder = new SupportEvalBuilder("SupportCollection");

                builder.WithExpression(fields[0], "Intvals.sumOf()");
                builder.WithExpression(fields[1], "Bdvals.sumOf()");
                builder.WithStatementConsumer(stmt => AssertTypes(stmt.EventType, fields, new[] { typeof(int?), typeof(decimal?) }));
                builder.WithAssertion(SupportCollection.MakeNumeric("1,4,5")).Expect(fields, 1 + 4 + 5, 1m + 4m + 5m);
                builder.WithAssertion(SupportCollection.MakeNumeric("3,4")).Expect(fields, 3 + 4, 3m + 4m);
                builder.WithAssertion(SupportCollection.MakeNumeric("3")).Expect(fields, 3, 3m);
                builder.WithAssertion(SupportCollection.MakeNumeric("")).Expect(fields, null, null);
                builder.WithAssertion(SupportCollection.MakeNumeric(null)).Expect(fields, null, null);
                builder.Run(env);
            }
Пример #7
0
            public void Run(RegressionEnvironment env)
            {
                var fields  = "c0,c1".SplitCsv();
                var builder = new SupportEvalBuilder("SupportCollection");

                builder.WithExpression(fields[0], "Intvals.average()");
                builder.WithExpression(fields[1], "Bdvals.average()");

                builder.WithStatementConsumer(stmt => AssertTypes(env.Statement("s0").EventType, fields, new[] { typeof(double?), typeof(decimal?) }));

                builder.WithAssertion(SupportCollection.MakeNumeric("1,2,3")).Expect(fields, 2d, 2m);

                builder.WithAssertion(SupportCollection.MakeNumeric("1,null,3")).Expect(fields, 2d, 2m);

                builder.WithAssertion(SupportCollection.MakeNumeric("4")).Expect(fields, 4d, 4m);

                builder.Run(env);
            }
Пример #8
0
        private void RunAssertionSumOfScalar(EPServiceProvider epService)
        {
            string[] fields      = "val0,val1".Split(',');
            string   eplFragment = "select " +
                                   "Intvals.sumOf() as val0, " +
                                   "Bdvals.sumOf() as val1 " +
                                   "from SupportCollection";
            EPStatement stmtFragment = epService.EPAdministrator.CreateEPL(eplFragment);
            var         listener     = new SupportUpdateListener();

            stmtFragment.Events += listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtFragment.EventType, fields, new Type[] {
                typeof(int?), typeof(decimal?)
            });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("1,4,5"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 1 + 4 + 5, 1m + 4m + 5m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("3,4"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 3 + 4, 3m + 4m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric("3"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 3, 3m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric(""));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null });

            epService.EPRuntime.SendEvent(SupportCollection.MakeNumeric(null));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null });

            stmtFragment.Dispose();

            // test average with lambda
            epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractNum", typeof(ExecEnumMinMax.MyService), "ExtractNum");
            epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractDecimal", typeof(ExecEnumMinMax.MyService), "ExtractDecimal");

            // lambda with string-array input
            string[] fieldsLambda = "val0,val1".Split(',');
            string   eplLambda    = "select " +
                                    "Strvals.sumOf(v => extractNum(v)) as val0, " +
                                    "Strvals.sumOf(v => extractDecimal(v)) as val1 " +
                                    "from SupportCollection";
            EPStatement stmtLambda = epService.EPAdministrator.CreateEPL(eplLambda);

            stmtLambda.Events += listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtLambda.EventType, fieldsLambda, new Type[] { typeof(int?), typeof(decimal?) });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString("E2,E1,E5,E4"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { 2 + 1 + 5 + 4, 2m + 1m + 5m + 4m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString("E1"));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { 1, 1m });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString(null));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { null, null });

            epService.EPRuntime.SendEvent(SupportCollection.MakeString(""));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fieldsLambda, new object[] { null, null });

            stmtLambda.Dispose();
        }