Beispiel #1
0
        private void RunAssertionSelectNested <T>(
            string typename,
            FunctionSendEvent send,
            Func <object, object> optionalValueConversion,
            IEnumerable <Pair <T, ValueWithExistsFlag[]> > tests,
            Type expectedPropertyType)
        {
            var stmtText = "select " +
                           " item.nested?.nestedValue as n1, " +
                           " exists(item.nested?.nestedValue) as exists_n1, " +
                           " item.nested?.nestedValue? as n2, " +
                           " exists(item.nested?.nestedValue?) as exists_n2, " +
                           " item.nested?.nestedNested.nestedNestedValue as n3, " +
                           " exists(item.nested?.nestedNested.nestedNestedValue) as exists_n3, " +
                           " item.nested?.nestedNested?.nestedNestedValue as n4, " +
                           " exists(item.nested?.nestedNested?.nestedNestedValue) as exists_n4, " +
                           " item.nested?.nestedNested.nestedNestedValue? as n5, " +
                           " exists(item.nested?.nestedNested.nestedNestedValue?) as exists_n5, " +
                           " item.nested?.nestedNested?.nestedNestedValue? as n6, " +
                           " exists(item.nested?.nestedNested?.nestedNestedValue?) as exists_n6 " +
                           " from " + typename;

            var stmt     = _epService.EPAdministrator.CreateEPL(stmtText);
            var listener = new SupportUpdateListener();

            stmt.AddListener(listener);

            var propertyNames = "n1,n2,n3,n4,n5,n6".SplitCsv();

            foreach (var propertyName in propertyNames)
            {
                Assert.AreEqual(expectedPropertyType, stmt.EventType.GetPropertyType(propertyName));
                Assert.AreEqual(typeof(bool?), stmt.EventType.GetPropertyType("exists_" + propertyName));
            }

            foreach (var pair in tests)
            {
                send.Invoke(_epService, pair.First);
                var @event = listener.AssertOneGetNewAndReset();
                SupportEventInfra.AssertValuesMayConvert(@event, propertyNames, (ValueWithExistsFlag[])pair.Second, optionalValueConversion);
            }

            stmt.Dispose();
        }
Beispiel #2
0
        private void RunAssertion <T>(
            string typename,
            FunctionSendEvent send,
            Func <object, object> optionalValueConversion,
            IEnumerable <Pair <T, ValueWithExistsFlag[]> > tests,
            Type expectedPropertyType)
        {
            var stmtText = "select " +
                           "item?.indexed[0] as indexed1, " +
                           "exists(item?.indexed[0]) as exists_indexed1, " +
                           "item?.indexed[1]? as indexed2, " +
                           "exists(item?.indexed[1]?) as exists_indexed2, " +
                           "item?.arrayProperty[1]? as array, " +
                           "exists(item?.arrayProperty[1]?) as exists_array, " +
                           "item?.mapped('keyOne') as mapped1, " +
                           "exists(item?.mapped('keyOne')) as exists_mapped1, " +
                           "item?.mapped('keyTwo')? as mapped2,  " +
                           "exists(item?.mapped('keyTwo')?) as exists_mapped2,  " +
                           "item?.mapProperty('xOne')? as map, " +
                           "exists(item?.mapProperty('xOne')?) as exists_map " +
                           " from " + typename;

            var stmt     = _epService.EPAdministrator.CreateEPL(stmtText);
            var listener = new SupportUpdateListener();

            stmt.AddListener(listener);

            var propertyNames = "indexed1,indexed2,array,mapped1,mapped2,map".SplitCsv();

            foreach (var propertyName in propertyNames)
            {
                Assert.AreEqual(expectedPropertyType, stmt.EventType.GetPropertyType(propertyName));
                Assert.AreEqual(typeof(bool?), stmt.EventType.GetPropertyType("exists_" + propertyName));
            }

            foreach (var pair in tests)
            {
                send.Invoke(_epService, pair.First);
                SupportEventInfra.AssertValuesMayConvert(listener.AssertOneGetNewAndReset(), propertyNames, (ValueWithExistsFlag[])pair.Second, optionalValueConversion);
            }

            stmt.Dispose();
        }
Beispiel #3
0
        private void RunAssertion <T>(
            EPServiceProvider epService,
            string typename,
            FunctionSendEvent send,
            Func <object, object> optionalValueConversion,
            Pair <T, ValueWithExistsFlag[]>[] tests,
            Type expectedPropertyType)
        {
            string stmtText = "select " +
                              "simpleProperty? as simple, " +
                              "exists(simpleProperty?) as exists_simple, " +
                              "nested?.nestedValue as nested, " +
                              "exists(nested?.nestedValue) as exists_nested, " +
                              "nested?.nestedNested.nestedNestedValue as nestedNested, " +
                              "exists(nested?.nestedNested.nestedNestedValue) as exists_nestedNested " +
                              "from " + typename;
            EPStatement stmt     = epService.EPAdministrator.CreateEPL(stmtText);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            string[] propertyNames = "simple,nested,nestedNested".Split(',');
            foreach (string propertyName in propertyNames)
            {
                Assert.AreEqual(expectedPropertyType, stmt.EventType.GetPropertyType(propertyName));
                Assert.AreEqual(typeof(bool?), stmt.EventType.GetPropertyType("exists_" + propertyName));
            }

            foreach (var pair in tests)
            {
                send.Invoke(epService, pair.First);
                SupportEventInfra.AssertValuesMayConvert(listener.AssertOneGetNewAndReset(), propertyNames, (ValueWithExistsFlag[])pair.Second, optionalValueConversion);
            }

            stmt.Dispose();
        }