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(); }
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(); }
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(); }