コード例 #1
0
        public void GroupBy_ObservableKeyChangesEraseGroup_Update()
        {
            var update = false;

            ICollection <Dummy <string> > coll = new ObservableCollection <Dummy <string> >();
            var dummy1 = new Dummy <string>("A");
            var dummy2 = new ObservableDummy <string>("B");

            coll.Add(dummy1);
            coll.Add(dummy2);

            var test = coll.WithUpdates().GroupBy(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                Assert.IsTrue(ContainsGroup(e.OldItems, "B"));
                update = true;
            };

            Assert.IsTrue(Sys.Contains(Sys.Single(test, group => group.Key == "A"), dummy1));
            Assert.IsTrue(Sys.Contains(Sys.Single(test, group => group.Key == "B"), dummy2));
            Assert.IsFalse(update);

            dummy2.Item = "A";

            Assert.IsTrue(update);
            Assert.AreEqual(1, test.Count());
            Assert.IsTrue(Sys.Contains(Sys.Single(test, group => group.Key == "A"), dummy2));
        }
コード例 #2
0
        public static void WriterAsReadOnlyCollection()
        {
            using var writer = new PooledArrayBufferWriter <int>();
            IReadOnlyList <int> collection = writer;

            Empty(collection);

            writer.Add(42);
            Equal(1, writer.WrittenCount);
            Equal(1, collection.Count);
            Equal(42, collection[0]);
            Throws <IndexOutOfRangeException>(() => collection[1]);
            Equal(42, Enumerable.First(collection));
            Equal(1, Enumerable.Count(collection));

            writer.AddAll(new[] { 43, 44 });
            Equal(3, writer.WrittenCount);
            Equal(3, collection.Count);
            Equal(42, collection[0]);
            Equal(43, collection[1]);
            Equal(44, collection[2]);
            Throws <IndexOutOfRangeException>(() => collection[3]);
            Equal(3, Enumerable.Count(collection));
            Equal(new[] { 42, 43, 44 }, Enumerable.ToArray(collection));
        }
コード例 #3
0
ファイル: ObservableIntersect.cs プロジェクト: wasowski/NMF
 private void NotifySource2(ICollectionChangedNotificationResult <TSource> change, List <TSource> added, List <TSource> removed)
 {
     if (change.RemovedItems != null)
     {
         var uniqueRemoved = new HashSet <TSource>(sourceItems.Comparer);
         foreach (var item in change.RemovedItems)
         {
             if (RemoveItem(item))
             {
                 uniqueRemoved.Add(item);
             }
         }
         removed.AddRange(SL.Where(source, item => uniqueRemoved.Contains(item)));
     }
     if (change.AddedItems != null)
     {
         var uniqueAdded = new HashSet <TSource>(sourceItems.Comparer);
         foreach (var item in change.AddedItems)
         {
             if (AddItem(item))
             {
                 uniqueAdded.Add(item);
             }
         }
         added.AddRange(SL.Where(source, item => uniqueAdded.Contains(item)));
     }
 }
コード例 #4
0
        public void Where_ObservableSourceItemAdded_Updates()
        {
            var update = false;
            ICollection <Dummy <bool> > coll = new ObservableCollection <Dummy <bool> >();
            var dummy = new Dummy <bool>()
            {
                Item = true
            };

            var test = coll.WithUpdates().Where(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(NotifyCollectionChangedAction.Add, e.Action);
                Assert.AreEqual(dummy, e.NewItems[0]);
            };

            Assert.IsFalse(Sys.Any(test));
            Assert.IsFalse(update);

            coll.Add(dummy);

            Assert.IsTrue(update);
            Assert.IsTrue(Sys.Contains(test, dummy));
        }
コード例 #5
0
ファイル: SelectTest.cs プロジェクト: mlessmann/NMF
        public void Select_ObservableItem_Update()
        {
            var update = false;
            ICollection <Dummy <string> > coll = new List <Dummy <string> >();
            var dummy = new ObservableDummy <string>()
            {
                Item = "23"
            };

            coll.Add(dummy);

            var test = coll.WithUpdates().Select(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldItems[0]);
            };

            Assert.IsTrue(Sys.Contains(test, "23"));
            Assert.IsFalse(update);

            dummy.Item = "42";

            Assert.IsTrue(update);
            Assert.IsTrue(Sys.Contains(test, "42"));
        }
コード例 #6
0
ファイル: InServerTesting.cs プロジェクト: ybdev/ravendb
        public void ngram_search_not_empty()
        {
            using (GetNewServer())
                using (var database = new DocumentStore
                {
                    Url = "http://localhost:8079"
                }.Initialize())
                {
                    new ImageByName().Execute(database);

                    using (var session = database.OpenSession())
                    {
                        session.Store(new Image {
                            Id = "1", Name = "Great Photo buddy"
                        });
                        session.Store(new Image {
                            Id = "2", Name = "Nice Photo of the sky"
                        });
                        session.SaveChanges();
                    }
                    using (var session = database.OpenSession())
                    {
                        var images = Enumerable.ToList <Image>(session.Query <Image, ImageByName>()
                                                               .Customize(x => x.WaitForNonStaleResults())
                                                               .OrderBy(x => x.Name)
                                                               .Search(x => x.Name, "phot"));

                        Assert.NotEmpty(images);
                    }
                }
        }
コード例 #7
0
        protected string GetWithClause(IEnumerable <ProviderPropertyExpression> properties)
        {
            bool withNoLock = GetProviderPropertyValue <WithNoLockExpression, bool>(properties, false);

            IEnumerable <string> indexNames = GetProviderPropertyValue <IndexNamesExpression, IEnumerable <string> >(
                properties, new string[] { });


            bool forceIndex = Enumerable.Count(indexNames) > 0 &&
                              GetProviderPropertyValue <ForceIndexExpression, bool>(properties, false);

            if (!withNoLock && !forceIndex)
            {
                return(String.Empty);
            }

            if (withNoLock && !forceIndex)
            {
                return(" WITH(NOLOCK) ");
            }

            if (forceIndex && !withNoLock)
            {
                return(string.Format(" WITH(INDEX({0})) ", string.Join(",", Enumerable.ToArray(indexNames))));
            }

            return(string.Format(" WITH(NOLOCK,INDEX({0})) ", string.Join(",", Enumerable.ToArray(indexNames))));
        }
コード例 #8
0
        public override string ToString()
        {
            var fields =
                Enumerable.Where(this.GetType()
                                 .GetFields(), field =>
                                 CustomAttributeExtensions.IsDefined((MemberInfo)field, typeof(InjectFieldValueAttribute)) &&
                                 ((field.FieldType == typeof(string)) || field.FieldType.IsPrimitive));

            var objectStringRepresentation = new StringBuilder(capacity: 6000);

            objectStringRepresentation.AppendFormat("{0} {1}", this.GetType().Name, Environment.NewLine);
            foreach (var field in fields)
            {
                var fldValue = field.GetValue(this);
                if (field.FieldType.IsClass && (fldValue == null))
                {
                    objectStringRepresentation.AppendFormat("{0} --> {1}{2}", field.Name, "[Null]", Environment.NewLine);
                    continue;
                }

                if ((field.FieldType == typeof(string)) && string.IsNullOrEmpty((string)fldValue))
                {
                    objectStringRepresentation.AppendFormat("{0} --> {1}{2}", field.Name, "[string.Empty]", Environment.NewLine);
                    continue;
                }

                objectStringRepresentation.AppendFormat("{0} --> {1}{2}", field.Name, fldValue, Environment.NewLine);
            }

            return(objectStringRepresentation.ToString());
        }
コード例 #9
0
 public override IEnumerator <T> GetEnumerator()
 {
     if (ObservableExtensions.KeepOrder)
     {
         return(SL.Where(source, item =>
         {
             if (isValueType || item != null)
             {
                 TaggedObservableValue <bool, ItemMultiplicity> node;
                 if (lambdaInstances.TryGetValue(item, out node))
                 {
                     return node.Value;
                 }
                 else
                 {
                     return false;
                 }
             }
             else
             {
                 return nullCheck != null && nullCheck.Value;
             }
         }).GetEnumerator());
     }
     else
     {
         return(ItemsUnordered.GetEnumerator());
     }
 }
コード例 #10
0
        public void Aggregate_Matrix4x4_Multiply_Test()
        {
            using (var matrices = new NativeArray <Matrix4x4>(1024, Allocator.Persistent))
            {
                InitializeMatrixArray(matrices);
                var identity = Matrix4x4.identity;
                sw.Start();
                for (var i = 0; i < Count; i++)
                {
                    identity = matrices.Aggregate <Matrix4x4>(identity, (accumulate, seed) => accumulate * seed);
                }
                Debug.Log(sw.Stop().ToString());

                sw.Start();
                for (var i = 0; i < Count; i++)
                {
                    matrices.Aggregate <Matrix4x4, Multiply>(ref identity, default);
                }
                Debug.Log(sw.Stop().ToString());

                identity = Matrix4x4.identity;
                sw.Start();
                for (var i = 0; i < Count; i++)
                {
                    identity = LE.Aggregate(matrices, identity, (accumulate, seed) => accumulate * seed);
                }
                Debug.Log(sw.Stop().ToString());
            }
        }
コード例 #11
0
        public override async Task SetOverdueNotificationsAsync(List <string> overdueNotifications)
        {
            CriteriaBuilder criteriaBuilder = new CriteriaBuilder();

            _overdueNotifications = overdueNotifications;
            _followUps            = await _followUpsController.GetManyByCriteria
                                    (
                criteriaBuilder
                .Add("Id", _overdueNotifications.ToArray(), ConjunctionsEnum.And, Operators.In)
                                    );

            List <Guid> followUpsToRemove = new List <Guid>();

            for (int i = 0; i < _followUps.Count; i++)
            {
                if ((await ProspectWasConverted(_followUps[i])))
                {
                    followUpsToRemove.Add(_followUps[i].Id);
                }
            }
            if (followUpsToRemove.Count > 0)
            {
                _followUps = Enumerable.ToList(Enumerable.Where(_followUps, followup => !followUpsToRemove.Contains(followup.Id)));
            }

            if (_followUps.Count == 1 && _singleProspect == null)
            {
                _singleProspect = await new ProspectsController().GetByIdAsync(_followUps[0].ProspectId);
                _singleProspect.ReminderTime = _followUps[0].ReminderTime;
            }
        }
コード例 #12
0
        public string ExpressionText(ExpressionType type)
        {
            var text = "(\n";

            int i = 0;

            List <Exception> validationExceptions = new List <Exception>();

            foreach (var expression in NestedExpressions)
            {
                try
                {
                    i++;
                    text += expression.ExpressionText(type) +
                            (i < NestedExpressions.Count ? " " + GroupMenuButton.Content : "") + "\n";
                }
                catch (InvalidQueryExpressionException e)
                {
                    validationExceptions.Add(e);
                }
            }

            if (validationExceptions.Any())
            {
                string message = Enumerable.Aggregate(validationExceptions, string.Empty, (current, exeption) => current + $"{exeption.Message}\n");

                throw new InvalidQueryExpressionException(message);
            }

            return(text + ")");
        }
コード例 #13
0
        public override INotificationResult Notify(IList <INotificationResult> sources)
        {
            var added   = new List <TSource>();
            var removed = new List <TSource>();
            var moved   = new List <TSource>();

            foreach (ICollectionChangedNotificationResult change in sources)
            {
                if (change.IsReset)
                {
                    OnCleared();
                    return(new CollectionChangedNotificationResult <TSource>(this));
                }

                if (change.AddedItems != null)
                {
                    added.AddRange(SL.Cast <TSource>(change.AddedItems));
                }
                if (change.RemovedItems != null)
                {
                    removed.AddRange(SL.Cast <TSource>(change.RemovedItems));
                }
                if (change.MovedItems != null)
                {
                    moved.AddRange(SL.Cast <TSource>(change.MovedItems));
                }
            }

            RaiseEvents(added, removed, moved);
            return(new CollectionChangedNotificationResult <TSource>(this, added, removed, moved));
        }
コード例 #14
0
        public void GroupBy_ObservableSourceItemAdded_Update()
        {
            var update = false;
            ICollection <Dummy <string> > coll = new ObservableCollection <Dummy <string> >();

            var test = coll.WithUpdates().GroupBy(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                Assert.IsTrue(ContainsGroup(e.NewItems, "42"));
                Assert.AreEqual(1, e.NewItems.Count);
                update = true;
            };

            Assert.IsTrue(!test.Any());
            Assert.IsFalse(update);

            coll.Add(new Dummy <string>()
            {
                Item = "42"
            });

            Assert.IsFalse(!test.Any());
            Assert.IsTrue(Sys.Any(test, group => group.Key == "42"));
            Assert.IsTrue(update);
        }
コード例 #15
0
 public void InsertTest()
 {
     try
     {
         int[] insert = Enumerable.Range(0, 5).Insert(-1, 5).ToArray();
         Assert.Fail(string.Join(", ", insert.Select(int32 => int32.ToString())));
     }
     catch (ArgumentOutOfRangeException exception)
     {
         Assert.AreEqual("index", exception.ParamName);
     }
     EnumerableAssert.AreSequentialEqual(new int[] { 5, 0, 1, 2, 3, 4 }, Enumerable.Range(0, 5).Insert(0, 5));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 5, 1, 2, 3, 4 }, Enumerable.Range(0, 5).Insert(1, 5));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 5, 2, 3, 4 }, Enumerable.Range(0, 5).Insert(2, 5));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 2, 5, 3, 4 }, Enumerable.Range(0, 5).Insert(3, 5));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 2, 3, 5, 4 }, Enumerable.Range(0, 5).Insert(4, 5));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 2, 3, 4, 5 }, Enumerable.Range(0, 5).Insert(5, 5));
     try
     {
         int[] insert = Enumerable.Range(0, 5).Insert(6, 5).ToArray();
         Assert.Fail(string.Join(", ", insert.Select(int32 => int32.ToString())));
     }
     catch (ArgumentOutOfRangeException exception)
     {
         Assert.AreEqual("index", exception.ParamName);
     }
 }
コード例 #16
0
ファイル: SelectTest.cs プロジェクト: wasowski/NMF
        public void Select_ObservableSourceItemAdded_Update()
        {
            var update = false;
            ICollection <Dummy <string> > coll = new ObservableCollection <Dummy <string> >();

            var test = coll.WithUpdates().Select(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                Assert.AreEqual(NotifyCollectionChangedAction.Add, e.Action);
                Assert.IsTrue(e.NewItems.Contains("42"));
                Assert.AreEqual(1, e.NewItems.Count);
                update = true;
            };

            Assert.IsTrue(!test.Any());
            Assert.IsFalse(update);

            coll.Add(new Dummy <string>()
            {
                Item = "42"
            });

            Assert.IsTrue(update);
            Assert.IsFalse(!test.Any());
            Assert.IsTrue(Sys.Contains(test, "42"));
        }
コード例 #17
0
 public void RemoveAtTest()
 {
     try
     {
         int[] removeAt = Enumerable.Range(0, 5).RemoveAt(-1).ToArray();
         Assert.Fail(string.Join(", ", removeAt.Select(int32 => int32.ToString())));
     }
     catch (ArgumentOutOfRangeException exception)
     {
         Assert.AreEqual("index", exception.ParamName);
     }
     EnumerableAssert.AreSequentialEqual(new int[] { 1, 2, 3, 4 }, Enumerable.Range(0, 5).RemoveAt(0));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 2, 3, 4 }, Enumerable.Range(0, 5).RemoveAt(1));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 3, 4 }, Enumerable.Range(0, 5).RemoveAt(2));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 2, 4 }, Enumerable.Range(0, 5).RemoveAt(3));
     EnumerableAssert.AreSequentialEqual(new int[] { 0, 1, 2, 3 }, Enumerable.Range(0, 5).RemoveAt(4));
     try
     {
         int[] removeAt = Enumerable.Range(0, 5).RemoveAt(5).ToArray();
         Assert.Fail(string.Join(", ", removeAt.Select(int32 => int32.ToString())));
     }
     catch (ArgumentOutOfRangeException exception)
     {
         Assert.AreEqual("index", exception.ParamName);
     }
     try
     {
         int[] removeAt = Enumerable.Range(0, 5).RemoveAt(6).ToArray();
         Assert.Fail(string.Join(", ", removeAt.Select(int32 => int32.ToString())));
     }
     catch (ArgumentOutOfRangeException exception)
     {
         Assert.AreEqual("index", exception.ParamName);
     }
 }
コード例 #18
0
ファイル: SelectTest.cs プロジェクト: wasowski/NMF
        public void Select_NoObservableSourceItemRemoved_KeepOrder_NoUpdate()
        {
            ObservableExtensions.KeepOrder = true;

            var update = false;
            ICollection <Dummy <string> > coll = new List <Dummy <string> >();
            var dummy = new Dummy <string>()
            {
                Item = "42"
            };

            coll.Add(dummy);

            var test = coll.WithUpdates().Select(d => d.Item);

            test.CollectionChanged += (o, e) => update = true;

            Assert.IsTrue(Sys.Contains(test, "42"));
            Assert.IsFalse(update);

            coll.Remove(dummy);

            Assert.IsFalse(Sys.Contains(test, "42"));
            Assert.IsFalse(update);
        }
コード例 #19
0
        public void MaxRangeIsMaximumIntValue()
        {
            var range = Linq.Range(int.MaxValue, 1);

            range.Should().OnlyContain(x => x == int.MaxValue);
            range.Should().HaveCount(1);
        }
コード例 #20
0
ファイル: ObservableConcat.cs プロジェクト: mlessmann/NMF
        private void Source2CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            int sourceCount = SL.Count(source);

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                e = new NotifyCollectionChangedEventArgs(e.Action, e.NewItems, sourceCount + e.NewStartingIndex);
                break;

            case NotifyCollectionChangedAction.Move:
                e = new NotifyCollectionChangedEventArgs(e.Action, e.NewItems, sourceCount + e.NewStartingIndex, sourceCount + e.OldStartingIndex);
                break;

            case NotifyCollectionChangedAction.Remove:
                e = new NotifyCollectionChangedEventArgs(e.Action, e.OldItems, sourceCount + e.OldStartingIndex);
                break;

            case NotifyCollectionChangedAction.Replace:
                e = new NotifyCollectionChangedEventArgs(e.Action, e.NewItems, e.OldItems, sourceCount + e.OldStartingIndex);
                break;

            case NotifyCollectionChangedAction.Reset:
                OnCleared();
                return;

            default:
                throw new InvalidOperationException();
            }
            OnCollectionChanged(e);
        }
コード例 #21
0
        public void Where_ObservableItem_Updates()
        {
            var update = false;
            ICollection <Dummy <bool> > coll = new List <Dummy <bool> >();
            var dummy = new ObservableDummy <bool>()
            {
                Item = true
            };

            coll.Add(dummy);

            var test = coll.WithUpdates().Where(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual(dummy, e.OldItems[0]);
            };

            Assert.IsTrue(Sys.Contains(test, dummy));
            Assert.IsFalse(update);

            dummy.Item = false;

            Assert.IsFalse(test.Any());
            Assert.IsTrue(update);
        }
コード例 #22
0
 public void EmptyContainsNoElements()
 {
     using (var empty = Linq.Empty <int>().GetEnumerator())
     {
         Assert.False(empty.MoveNext());
     }
 }
コード例 #23
0
        private bool ReadLibraryFromJson()
        {
            var jsonFormatter = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Books[]));

            using (var fs = new System.IO.FileStream("Library.json", System.IO.FileMode.OpenOrCreate))
            {
                if (fs.Length == 0)
                {
                    System.Console.WriteLine("JSON is empty");
                }
                else
                {
                    var newBooks = (Books[])jsonFormatter.ReadObject(fs);
                    var lst      = Enumerable.ToList(Enumerable.OfType <Books>(newBooks));
                    System.Console.WriteLine("Done reading from json");
                    foreach (var b in lst)
                    {
                        var book = new Books
                        {
                            Author          = b.Author,
                            Title           = b.Title,
                            Annotation      = b.Annotation,
                            Isbn            = b.Isbn,
                            PublicationDate = b.PublicationDate
                        };

                        _books.Add(book);
                    }
                }
            }

            return(true);
        }
コード例 #24
0
ファイル: SelectManyTest.cs プロジェクト: mlessmann/NMF
        public void SelectMany_ObservableSubSourceItemChanges_Updates()
        {
            var update = false;
            ICollection <Dummy <ICollection <Dummy <string> > > > coll = new List <Dummy <ICollection <Dummy <string> > > >();
            var dummy = new ObservableDummy <string>()
            {
                Item = "23"
            };
            var dummy2 = new Dummy <ICollection <Dummy <string> > >()
            {
                Item = new List <Dummy <string> >()
                {
                    dummy
                }
            };

            coll.Add(dummy2);

            var test = coll.WithUpdates().SelectMany(d => d.Item, (d1, d2) => d2.Item);

            test.CollectionChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("23", e.OldItems[0]);
                Assert.AreEqual("42", e.NewItems[0]);
            };

            Assert.IsTrue(Sys.Contains(test, "23"));
            Assert.IsFalse(update);

            dummy.Item = "42";

            Assert.IsTrue(update);
            Assert.IsTrue(Sys.Contains(test, "42"));
        }
コード例 #25
0
ファイル: SelectTest.cs プロジェクト: mlessmann/NMF
        public void Select_ObservableSourceItemRemoved_Update()
        {
            var update = false;
            ICollection <Dummy <string> > coll = new ObservableCollection <Dummy <string> >();
            var dummy = new Dummy <string>()
            {
                Item = "42"
            };

            coll.Add(dummy);

            var test = coll.WithUpdates().Select(d => d.Item);

            test.CollectionChanged += (o, e) =>
            {
                Assert.IsTrue(e.OldItems.Contains("42"));
                Assert.AreEqual(1, e.OldItems.Count);
                update = true;
            };

            Assert.IsTrue(Sys.Contains(test, "42"));
            Assert.IsFalse(update);

            coll.Remove(dummy);

            Assert.IsTrue(update);
            Assert.IsFalse(Sys.Contains(test, "42"));
        }
コード例 #26
0
ファイル: SelectManyTest.cs プロジェクト: mlessmann/NMF
        public void SelectMany_NoObservableSubSourceItemAdded_NoUpdates()
        {
            var update = false;
            ICollection <Dummy <ICollection <Dummy <string> > > > coll = new List <Dummy <ICollection <Dummy <string> > > >();
            var dummy = new Dummy <string>()
            {
                Item = "23"
            };
            var dummy2 = new Dummy <ICollection <Dummy <string> > >()
            {
                Item = new List <Dummy <string> >()
            };

            coll.Add(dummy2);

            var test = coll.WithUpdates().SelectMany(d => d.Item, (d1, d2) => d2.Item);

            test.CollectionChanged += (o, e) => update = true;

            Assert.IsFalse(Sys.Contains(test, "23"));
            Assert.IsFalse(update);

            dummy2.Item.Add(dummy);

            Assert.IsFalse(update);
        }
コード例 #27
0
 public static void RemoveWhere(ICollection <TSource> collection, Func <TSource, bool> predicate)
 {
     if (collection != null)
     {
         var list = collection as IList <TSource>;
         if (list != null)
         {
             for (int i = list.Count - 1; i >= 0; i--)
             {
                 if (predicate(list[i]))
                 {
                     list.RemoveAt(i);
                 }
             }
         }
         else
         {
             var toRemove = SL.ToList(SL.Where(collection, predicate));
             foreach (var item in toRemove)
             {
                 collection.Remove(item);
             }
         }
     }
 }
コード例 #28
0
ファイル: SelectManyTest.cs プロジェクト: mlessmann/NMF
        public void SelectMany_ObservableSubSourceItemAdded_Updates()
        {
            var update = 0;
            ICollection <Dummy <ICollection <Dummy <string> > > > coll = new List <Dummy <ICollection <Dummy <string> > > >();
            var dummy = new Dummy <string>()
            {
                Item = "23"
            };
            var dummy2 = new Dummy <ICollection <Dummy <string> > >()
            {
                Item = new ObservableCollection <Dummy <string> >()
            };

            coll.Add(dummy2);

            var test = coll.WithUpdates().SelectMany(d => d.Item, (d1, d2) => d2.Item);

            test.CollectionChanged += (o, e) =>
            {
                update++;
                Assert.AreEqual("23", e.NewItems[0]);
            };

            Assert.IsFalse(Sys.Contains(test, "23"));
            Assert.AreEqual(0, update);

            dummy2.Item.Add(dummy);

            Assert.AreEqual(1, update);
            Assert.IsTrue(Sys.Contains(test, "23"));
        }
コード例 #29
0
 private static void AddToList <T>(IList <T> storage, T item, Func <T, T, bool> filter)
 {
     if (Enumerable.Count(Processor.Where(storage, delegate(T i) { return(filter(i, item)); })) == 0)
     {
         storage.Add(item);
     }
 }
コード例 #30
0
        public void GroupBy_NoObservableKeyChangesToNewGroup_NoUpdate()
        {
            var update = false;

            ICollection <Dummy <string> > coll = new ObservableCollection <Dummy <string> >();
            var dummy1 = new Dummy <string>("A");
            var dummy2 = new Dummy <string>("A");

            coll.Add(dummy1);
            coll.Add(dummy2);

            var test = coll.WithUpdates().GroupBy(d => d.Item);

            test.CollectionChanged += (o, e) => update = true;

            var group = Sys.Single(test);

            Assert.IsTrue(Sys.Contains(group, dummy1));
            Assert.IsTrue(Sys.Contains(group, dummy2));
            Assert.IsFalse(update);

            dummy2.Item = "B";

            Assert.IsFalse(update);
        }