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