예제 #1
0
        public void TestMapIndexPropertyRooted()
        {
            _epService.EPAdministrator.Configuration.AddEventType(typeof(MyTypeErasure));
            var stmt = _epService.EPAdministrator.CreateEPL("select " +
                                                            "InnerTypes('key1') as c0,\n" +
                                                            "InnerTypes(key) as c1,\n" +
                                                            "InnerTypes('key1').ids[1] as c2,\n" +
                                                            "InnerTypes(key).GetIds(subkey) as c3,\n" +
                                                            "InnerTypesArray[1].ids[1] as c4,\n" +
                                                            "InnerTypesArray(subkey).GetIds(subkey) as c5,\n" +
                                                            "InnerTypesArray(subkey).GetIds(s0, 'xyz') as c6,\n" +
                                                            "InnerTypesArray(subkey).GetIds(*, 'xyz') as c7\n" +
                                                            "from MyTypeErasure as s0");

            stmt.AddListener(_listener);
            Assert.That(stmt.EventType.GetPropertyType("c0"), Is.EqualTo(typeof(InnerType)));
            Assert.That(stmt.EventType.GetPropertyType("c1"), Is.EqualTo(typeof(InnerType)));
            Assert.That(stmt.EventType.GetPropertyType("c2"), Is.EqualTo(typeof(int)));
            Assert.That(stmt.EventType.GetPropertyType("c3"), Is.EqualTo(typeof(int)));

            var @event = new MyTypeErasure("key1", 2, Collections.SingletonMap("key1", new InnerType(new int[] { 20, 30, 40 })), new InnerType[] { new InnerType(new int[] { 2, 3 }), new InnerType(new int[] { 4, 5 }), new InnerType(new int[] { 6, 7, 8 }) });

            _epService.EPRuntime.SendEvent(@event);
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "c0,c1,c2,c3,c4,c5,c6,c7".Split(','), new object[] { @event.InnerTypes.Get("key1"), @event.InnerTypes.Get("key1"), 30, 40, 5, 8, 999999, 999999 });
        }
예제 #2
0
        private void RunAssertionMapIndexPropertyRooted(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType(typeof(MyTypeErasure));
            var stmt = epService.EPAdministrator.CreateEPL(
                "select " +
                "InnerTypes('key1') as c0,\n" +
                "InnerTypes(key) as c1,\n" +
                "InnerTypes('key1').ids[1] as c2,\n" +
                "InnerTypes(key).GetIds(subkey) as c3,\n" +
                "innerTypesArray[1].ids[1] as c4,\n" +
                "InnerTypesArray(subkey).GetIds(subkey) as c5,\n" +
                "InnerTypesArray(subkey).GetIds(s0, 'xyz') as c6,\n" +
                "InnerTypesArray(subkey).GetIds(*, 'xyz') as c7\n" +
                "from MyTypeErasure as s0");
            var listener = new SupportUpdateListener();
            stmt.Events += listener.Update;
            Assert.AreEqual(typeof(InnerType), stmt.EventType.GetPropertyType("c0"));
            Assert.AreEqual(typeof(InnerType), stmt.EventType.GetPropertyType("c1"));
            Assert.AreEqual(typeof(int), stmt.EventType.GetPropertyType("c2"));
            Assert.AreEqual(typeof(int), stmt.EventType.GetPropertyType("c3"));

            var @event = new MyTypeErasure(
                "key1", 2, Collections.SingletonMap("key1", new InnerType(new[] {20, 30, 40})),
                new[] {new InnerType(new[] {2, 3}), new InnerType(new[] {4, 5}), new InnerType(new[] {6, 7, 8})});
            epService.EPRuntime.SendEvent(@event);
            EPAssertionUtil.AssertProps(
                listener.AssertOneGetNewAndReset(), "c0,c1,c2,c3,c4,c5,c6,c7".Split(','), new object[]
                {
                    @event.InnerTypes.Get("key1"), @event.InnerTypes.Get("key1"), 30, 40, 5, 8, 999999, 999999
                });

            stmt.Dispose();
        }