private void RunAssertionSuperTypesInterfaces(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType("SupportBeanVariantOne", typeof(SupportBeanVariantOne));
            epService.EPAdministrator.Configuration.AddEventType("SupportBeanVariantTwo", typeof(SupportBeanVariantTwo));

            var variant = new ConfigurationVariantStream();

            variant.AddEventTypeName("SupportBeanVariantOne");
            variant.AddEventTypeName("SupportBeanVariantTwo");
            epService.EPAdministrator.Configuration.AddVariantStream("MyVariantStreamTwo", variant);
            epService.EPAdministrator.CreateEPL("insert into MyVariantStreamTwo select * from SupportBeanVariantOne");
            epService.EPAdministrator.CreateEPL("insert into MyVariantStreamTwo select * from SupportBeanVariantTwo");

            EPStatement stmt        = epService.EPAdministrator.CreateEPL("select * from MyVariantStreamTwo");
            var         listenerOne = new SupportUpdateListener();

            stmt.Events += listenerOne.Update;
            EventType eventType = stmt.EventType;

            string[] expected      = "P0,P1,P2,P3,P4,P5,Indexed,Mapped,Inneritem".Split(',');
            string[] propertyNames = eventType.PropertyNames;
            EPAssertionUtil.AssertEqualsAnyOrder(expected, propertyNames);
            Assert.AreEqual(typeof(ISupportBaseAB), eventType.GetPropertyType("P0"));
            Assert.AreEqual(typeof(ISupportAImplSuperG), eventType.GetPropertyType("P1"));
            Assert.AreEqual(typeof(object), eventType.GetPropertyType("P2"));
            Assert.AreEqual(typeof(IList <object>), eventType.GetPropertyType("P3"));
            Assert.AreEqual(typeof(ICollection <object>), eventType.GetPropertyType("P4"));
            Assert.AreEqual(typeof(ICollection <object>), eventType.GetPropertyType("P5"));
            Assert.AreEqual(typeof(int[]), eventType.GetPropertyType("Indexed"));
            Assert.AreEqual(typeof(IDictionary <string, string>), eventType.GetPropertyType("Mapped"));
            Assert.AreEqual(typeof(SupportBeanVariantOne.SupportBeanVariantOneInner), eventType.GetPropertyType("Inneritem"));

            stmt.Dispose();
            stmt         = epService.EPAdministrator.CreateEPL("select P0,P1,P2,P3,P4,P5,Indexed[0] as P6,IndexArr[1] as P7,MappedKey('a') as P8,inneritem as P9,inneritem.val as P10 from MyVariantStreamTwo");
            stmt.Events += listenerOne.Update;
            eventType    = stmt.EventType;
            Assert.AreEqual(typeof(int?), eventType.GetPropertyType("P6"));
            Assert.AreEqual(typeof(int?), eventType.GetPropertyType("P7"));
            Assert.AreEqual(typeof(string), eventType.GetPropertyType("P8"));
            Assert.AreEqual(typeof(SupportBeanVariantOne.SupportBeanVariantOneInner), eventType.GetPropertyType("P9"));
            Assert.AreEqual(typeof(string), eventType.GetPropertyType("P10"));

            var ev1 = new SupportBeanVariantOne();

            epService.EPRuntime.SendEvent(ev1);
            EPAssertionUtil.AssertProps(listenerOne.AssertOneGetNewAndReset(), "P6,P7,P8,P9,P10".Split(','), new object[] { 1, 2, "val1", ev1.Inneritem, ev1.Inneritem.Val });

            var ev2 = new SupportBeanVariantTwo();

            epService.EPRuntime.SendEvent(ev2);
            EPAssertionUtil.AssertProps(listenerOne.AssertOneGetNewAndReset(), "P6,P7,P8,P9,P10".Split(','), new object[] { 10, 20, "val2", ev2.Inneritem, ev2.Inneritem.Val });

            epService.EPAdministrator.DestroyAllStatements();
        }
Beispiel #2
0
            public void Run(RegressionEnvironment env)
            {
                env.CompileDeploy("insert into MyVariantStreamTwo select * from SupportBeanVariantOne");
                env.CompileDeploy("insert into MyVariantStreamTwo select * from SupportBeanVariantTwo");

                env.CompileDeploy("@Name('s0') select * from MyVariantStreamTwo").AddListener("s0");
                var eventType = env.Statement("s0").EventType;

                var expected = new [] { "P0","P1","P2","P3","P4","P5","Indexed","Mapped","Inneritem" };
                var propertyNames = eventType.PropertyNames;
                EPAssertionUtil.AssertEqualsAnyOrder(expected, propertyNames);
                Assert.AreEqual(typeof(ISupportBaseAB), eventType.GetPropertyType("P0"));
                Assert.AreEqual(typeof(ISupportAImplSuperG), eventType.GetPropertyType("P1"));
                Assert.AreEqual(typeof(LinkedList<object>), eventType.GetPropertyType("P2"));
                Assert.AreEqual(typeof(IList<object>), eventType.GetPropertyType("P3"));
                Assert.AreEqual(typeof(ICollection<object>), eventType.GetPropertyType("P4"));
                Assert.AreEqual(typeof(ICollection<object>), eventType.GetPropertyType("P5"));
                Assert.AreEqual(typeof(int[]), eventType.GetPropertyType("Indexed"));
                Assert.AreEqual(typeof(IDictionary<string, string>), eventType.GetPropertyType("Mapped"));
                Assert.AreEqual(typeof(SupportBeanVariantOne.SupportBeanVariantOneInner), eventType.GetPropertyType("Inneritem"));

                env.UndeployModuleContaining("s0");

                env.CompileDeploy(
                    "@Name('s0') select P0,P1,P2,P3,P4,P5,Indexed[0] as P6,IndexArr[1] as P7,MappedKey('a') as P8,Inneritem as P9,Inneritem.Val as P10 from MyVariantStreamTwo");
                env.AddListener("s0");
                eventType = env.Statement("s0").EventType;
                Assert.AreEqual(typeof(int?), eventType.GetPropertyType("P6"));
                Assert.AreEqual(typeof(int?), eventType.GetPropertyType("P7"));
                Assert.AreEqual(typeof(string), eventType.GetPropertyType("P8"));
                Assert.AreEqual(
                    typeof(SupportBeanVariantOne.SupportBeanVariantOneInner),
                    eventType.GetPropertyType("P9"));
                Assert.AreEqual(typeof(string), eventType.GetPropertyType("P10"));

                var ev1 = new SupportBeanVariantOne();
                env.SendEventBean(ev1);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    new [] { "P6","P7","P8","P9","P10" },
                    new object[] {1, 2, "val1", ev1.Inneritem, ev1.Inneritem.Val});

                var ev2 = new SupportBeanVariantTwo();
                env.SendEventBean(ev2);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    new [] { "P6","P7","P8","P9","P10" },
                    new object[] {10, 20, "val2", ev2.Inneritem, ev2.Inneritem.Val});

                env.UndeployAll();
            }