Ejemplo n.º 1
0
 private void RunAssertion(
     EPServiceProvider epService, string typename, ExecEventInfraPropertyNestedSimple.FunctionSendEvent4Int send, Type nestedClass,
     string fragmentTypeName)
 {
     RunAssertionSelectNested(epService, typename, send);
     RunAssertionBeanNav(epService, typename, send);
     RunAssertionTypeValidProp(epService, typename, send, nestedClass, fragmentTypeName);
     RunAssertionTypeInvalidProp(epService, typename);
 }
Ejemplo n.º 2
0
        private void RunAssertionTypeValidProp(
            EPServiceProvider epService,
            string typeName,
            ExecEventInfraPropertyNestedSimple.FunctionSendEvent4Int send,
            Type nestedClass,
            string fragmentTypeName)
        {
            var eventType    = epService.EPAdministrator.Configuration.GetEventType(typeName);
            var arrayType    = nestedClass == typeof(object[]) ? nestedClass : TypeHelper.GetArrayType(nestedClass);
            var expectedType = new[] { new object[] { "l1", arrayType, fragmentTypeName, true } };

            SupportEventTypeAssertionUtil.AssertEventTypeProperties(
                expectedType, eventType, SupportEventTypeAssertionEnumExtensions.GetSetWithFragment());

            EPAssertionUtil.AssertEqualsAnyOrder(new[] { "l1" }, eventType.PropertyNames);

            foreach (var prop in Collections.List("l1[0]", "l1[0].lvl1", "l1[0].l2", "l1[0].l2[0]", "l1[0].l2[0].lvl2"))
            {
                Assert.IsNotNull(eventType.GetGetter(prop));
                Assert.IsTrue(eventType.IsProperty(prop));
            }

            Assert.AreEqual(arrayType, eventType.GetPropertyType("l1"));
            foreach (var prop in Collections.List("l1[0].lvl1", "l1[0].l2[0].lvl2", "l1[0].l2[0].l3[0].lvl3"))
            {
                Assert.AreEqual(typeof(int?), TypeHelper.GetBoxedType(eventType.GetPropertyType(prop)));
            }

            var lvl1Fragment = eventType.GetFragmentType("l1");

            Assert.IsTrue(lvl1Fragment.IsIndexed);
            Assert.AreEqual(send == FBEAN, lvl1Fragment.IsNative);
            Assert.AreEqual(fragmentTypeName, lvl1Fragment.FragmentType.Name);

            var lvl2Fragment = eventType.GetFragmentType("l1[0].l2");

            Assert.IsTrue(lvl2Fragment.IsIndexed);
            Assert.AreEqual(send == FBEAN, lvl2Fragment.IsNative);

            Assert.AreEqual(
                new EventPropertyDescriptor("l1", arrayType, nestedClass, false, false, true, false, true),
                eventType.GetPropertyDescriptor("l1"));
        }
Ejemplo n.º 3
0
        private void RunAssertionSelectNested(EPServiceProvider epService, string typename, ExecEventInfraPropertyNestedSimple.FunctionSendEvent4Int send)
        {
            var epl = "select " +
                      "l1[0].lvl1 as c0, " +
                      "exists(l1[0].lvl1) as exists_c0, " +
                      "l1[0].l2[0].lvl2 as c1, " +
                      "exists(l1[0].l2[0].lvl2) as exists_c1, " +
                      "l1[0].l2[0].l3[0].lvl3 as c2, " +
                      "exists(l1[0].l2[0].l3[0].lvl3) as exists_c2, " +
                      "l1[0].l2[0].l3[0].l4[0].lvl4 as c3, " +
                      "exists(l1[0].l2[0].l3[0].l4[0].lvl4) as exists_c3 " +
                      "from " + typename;
            var statement = epService.EPAdministrator.CreateEPL(epl);
            var listener  = new SupportUpdateListener();

            statement.Events += listener.Update;
            var fields = "c0,exists_c0,c1,exists_c1,c2,exists_c2,c3,exists_c3".Split(',');

            foreach (var property in fields)
            {
                Assert.AreEqual(
                    property.StartsWith("exists") ? typeof(bool?) : typeof(int?),
                    statement.EventType.GetPropertyType(property).GetBoxedType());
            }

            send.Invoke(epService, 1, 2, 3, 4);
            var @event = listener.AssertOneGetNewAndReset();

            EPAssertionUtil.AssertProps(@event, fields, new object[] { 1, true, 2, true, 3, true, 4, true });
            SupportEventTypeAssertionUtil.AssertConsistency(@event);

            send.Invoke(epService, 10, 5, 50, 400);
            EPAssertionUtil.AssertProps(
                listener.AssertOneGetNewAndReset(), fields, new object[] { 10, true, 5, true, 50, true, 400, true });

            statement.Dispose();
        }
Ejemplo n.º 4
0
        private void RunAssertionBeanNav(EPServiceProvider epService, string typename, ExecEventInfraPropertyNestedSimple.FunctionSendEvent4Int send)
        {
            var epl       = "select * from " + typename;
            var statement = epService.EPAdministrator.CreateEPL(epl);
            var listener  = new SupportUpdateListener();

            statement.Events += listener.Update;

            send.Invoke(epService, 1, 2, 3, 4);
            var @event = listener.AssertOneGetNewAndReset();

            EPAssertionUtil.AssertProps(
                @event, "l1[0].lvl1,l1[0].l2[0].lvl2,l1[0].l2[0].l3[0].lvl3,l1[0].l2[0].l3[0].l4[0].lvl4".Split(','),
                new object[] { 1, 2, 3, 4 });
            SupportEventTypeAssertionUtil.AssertConsistency(@event);
            var isNative = typename.Equals(BEAN_TYPENAME);

            SupportEventTypeAssertionUtil.AssertFragments(
                @event, isNative, true, "l1,l1[0].l2,l1[0].l2[0].l3,l1[0].l2[0].l3[0].l4");
            SupportEventTypeAssertionUtil.AssertFragments(
                @event, isNative, false, "l1[0],l1[0].l2[0],l1[0].l2[0].l3[0],l1[0].l2[0].l3[0].l4[0]");

            RunAssertionEventInvalidProp(@event);

            statement.Dispose();
        }