Example #1
0
            public IWeakEvent this[string PropertyName]
            {
                get
                {
                    WeakEvent evt;
                    if (_propertyEvents.TryGetValue(PropertyName, out evt))
                    {
                        return(evt);
                    }

                    evt = new WeakEvent(_owner);
                    _propertyEvents.Add(PropertyName, evt);
                    return(evt);
                }
            }
Example #2
0
        public void test_FilterCollection()
        {
            WeakObservableCollection<FilterItem> items = new WeakObservableCollection<FilterItem>() {
                new FilterItem() {Property = false}};

            var manualTrigger = new WeakEvent(items);

            var filtered = items.ToAutoProcessed().FilteredBy(x => x.Property)
                .UpdateOn(x => x.PropertyTrigger)
                .UpdateOn(x => null);

            var filteredM = items.ToAutoProcessed().FilteredBy(x => x.Property).UpdateOn(manualTrigger);

            Assert.AreEqual(0, filtered.Count);
            items[0].Property = true;
            Assert.AreEqual(1, filtered.Count);

            Assert.AreEqual(0, filteredM.Count);
            manualTrigger.Raise();
            Assert.AreEqual(filtered.Count, filteredM.Count);

            items[0].Property = false;
            Assert.AreEqual(0, filtered.Count);

            items.Add(new FilterItem() { Property = true });
            Assert.AreEqual(1, filtered.Count);

            items.Add(new FilterItem() { Property = false });
            Assert.AreEqual(1, filtered.Count);

            items.Add(new FilterItem() { Property = true });
            Assert.AreEqual(2, filtered.Count);
            items.Remove(items.First(x => x.Property));
            Assert.AreEqual(1, filtered.Count);
            Assert.AreSame(items.Single(x => x.Property), filtered[0]);
            items.Remove(items.First(x => !x.Property));
            Assert.AreEqual(1, filtered.Count);

            items.Clear();
            Assert.AreEqual(0, filtered.Count);

            //тестируем работу сортировки
            var rawColl = new WeakObservableCollection<string>();

            //сортируем по первым символам
            var sorted = rawColl.ToAutoProcessed().SortedOn((x, y) => x.Substring(0, 1).CompareTo(y.Substring(0, 1)));
            rawColl.Add("5ф");
            rawColl.Add("2ф");
            rawColl.Add("4ф");
            rawColl.Add("3ф");
            rawColl.Add("1с");
            rawColl.Add("5с");
            rawColl.Add("2с");
            rawColl.Add("4с");
            rawColl.Add("3с");
            rawColl.Add("1с");

            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual((i + 1).ToString(), sorted[2 * i].Substring(0, 1));
                Assert.AreEqual((i + 1).ToString(), sorted[2 * i + 1].Substring(0, 1));
            }
        }
Example #3
0
            public IWeakEvent this[string PropertyName]
            {
                get
                {
                    WeakEvent evt;
                    if (_propertyEvents.TryGetValue(PropertyName, out evt))
                        return evt;

                    evt = new WeakEvent(_owner);
                    _propertyEvents.Add(PropertyName, evt);
                    return evt;
                }
            }
Example #4
0
 private CompoundWeakEvent()
 {
     _evt    = new WeakEvent(this);
     trigger = new EventReceiver((x, y) => _evt.Raise(y));
 }