Ejemplo n.º 1
0
        public async Task Test()
        {
            var b = new AcWrapperObservableCollection();
            var e = new AcEnabledOnlyCollection <AcFakeObject>(b);

            // First run
            b.Add(new AcItemWrapper(new AcFakeObject("a", true)));
            await Task.Delay(1);

            b.Add(new AcItemWrapper(new AcFakeObject("b", true)));
            b.Add(new AcItemWrapper(new AcFakeObject("c", false)));
            Assert.AreEqual("a,b", e.Select(x => x.Id).JoinToString(','));

            // Loading
            var w = new AcItemWrapper(new FakeLoader(), new AcPlaceholderNew("a", true));

            b.Add(w);
            Assert.AreEqual("a,b", e.Select(x => x.Id).JoinToString(','));
            w.Value = new AcFakeObject("L", true);
            Assert.AreEqual("a,b,L", e.Select(x => x.Id).JoinToString(','));

            // Removal
            b.RemoveAt(1);
            b.RemoveAt(2);
            await Task.Delay(1);

            b.Add(new AcItemWrapper(new AcFakeObject("q", true)));
            Assert.AreEqual("a,q", e.Select(x => x.Id).JoinToString(','));

            // Replacement
            b.Replace(b.First(x => x.Id == "a"), new AcItemWrapper(new AcFakeObject("a", false)));
            b.Replace(b.First(x => x.Id == "c"), new AcItemWrapper(new AcFakeObject("c", true)));
            Assert.AreEqual("c,q", e.Select(x => x.Id).JoinToString(','));

            // Insert
            b.Insert(0, new AcItemWrapper(new AcFakeObject("m", true)));
            Assert.AreEqual("m,c,q", e.Select(x => x.Id).JoinToString(','));
        }
Ejemplo n.º 2
0
        protected void ReplaceInList([NotNull] string oldId, AcItemWrapper newItem)
        {
            if (oldId == null)
            {
                throw new ArgumentNullException(nameof(oldId));
            }
            var wrapper = GetWrapperById(oldId);

            if (wrapper == null)
            {
                return;
            }
            if (wrapper.IsLoaded)
            {
                ((AcObjectNew)wrapper.Value).Outdate();
            }
            InnerWrappersList.Replace(wrapper, newItem);
            UpdateList(true);
            ResetLoading();
        }