コード例 #1
0
ファイル: ContainsTests.cs プロジェクト: FrederikP/NMF
        public void Contains_ObservableSourceElementAdded_NoUpdateWhenDetached()
        {
            var update = false;
            var coll = new NotifyCollection<int>() { 1, 2, 3 };

            var test = Observable.Expression(() => coll.Contains(4));

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

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            test.Detach();
            update = false;

            coll.Add(4);

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
            update = false;

            coll.Remove(4);

            Assert.IsTrue(update);
        }
コード例 #2
0
ファイル: ContainsTests.cs プロジェクト: mlessmann/NMF
        public void Contains_ObservableSourceElementAdded_NoUpdateWhenDetached()
        {
            var update = false;
            var coll   = new NotifyCollection <int>()
            {
                1, 2, 3
            };

            var test = Observable.Expression(() => coll.Contains(4));

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

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            test.Detach();
            update = false;

            coll.Add(4);

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
            update = false;

            coll.Remove(4);

            Assert.IsTrue(update);
        }
コード例 #3
0
        public void FirstOrDefault_ObservableSourceFirstItemRemoved_Update()
        {
            var update = false;
            var coll   = new NotifyCollection <string>()
            {
                "42"
            };
            var collCasted = (INotifyCollection <string>)coll;

            var test = Observable.Expression(() => collCasted.FirstOrDefault());

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("42", e.OldValue);
                Assert.IsNull(e.NewValue);
            };

            Assert.AreEqual("42", test.Value);
            Assert.IsFalse(update);

            coll.Remove("42");

            Assert.IsTrue(update);
            Assert.IsNull(test.Value);
        }
コード例 #4
0
        public void PredicateFirstOrDefault_ObservableSourceRemoveNewFirstItem_Update()
        {
            var update = false;
            var coll   = new NotifyCollection <string>()
            {
                "1", "42", "23"
            };
            var collCasted = (INotifyCollection <string>)coll;

            var test = Observable.Expression(() => collCasted.FirstOrDefault(s => s.Length > 1));

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("42", e.OldValue);
                Assert.AreEqual("23", e.NewValue);
            };

            Assert.AreEqual("42", test.Value);
            Assert.IsFalse(update);

            coll.Remove("42");

            Assert.IsTrue(update);
            Assert.AreEqual("23", test.Value);
        }
コード例 #5
0
ファイル: FirstOrDefaultTests.cs プロジェクト: mlessmann/NMF
        public void PredicateFirstOrDefault_ObservableSourceFirstItemAdded_NoUpdateWhenDetached()
        {
            var update = false;
            var coll   = new NotifyCollection <string>()
            {
                "1"
            };

            var test = Observable.Expression(() => coll.FirstOrDefault(s => s.Length > 1));

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

            Assert.IsNull(test.Value);
            Assert.IsFalse(update);

            test.Detach();
            update = false;

            coll.Add("42");

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            coll.Remove("42");

            Assert.IsTrue(update);
        }
コード例 #6
0
ファイル: AnyTest.cs プロジェクト: mlessmann/NMF
        public void LambdaAny_ObservableSource_NoUpdateWhenDetached()
        {
            var update = false;
            var coll   = new NotifyCollection <int>()
            {
                -1, -2
            };

            var test = Observable.Expression(() => coll.Any(i => i > 0));

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

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            test.Detach();

            coll.Add(1);

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
            update = false;

            coll.Remove(1);

            Assert.IsTrue(update);
        }
コード例 #7
0
        public void SetEqualsComparer_ObservableSource1ItemRemovedSoTrue_Update()
        {
            var update = false;
            INotifyCollection <int> source1 = new NotifyCollection <int>()
            {
                -1, 1, -2, -3, 4
            };
            INotifyCollection <int> source2 = new NotifyCollection <int>()
            {
                1, 2, 2, 3
            };

            var test = Observable.Expression(() => source1.SetEquals(source2, new AbsoluteValueComparer()));

            test.ValueChanged += (o, e) =>
            {
                Assert.IsFalse((bool)e.OldValue);
                Assert.IsTrue((bool)e.NewValue);
                update = true;
            };

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            source1.Remove(4);

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
        }
コード例 #8
0
        public void SetEquals_ObservableSource2ItemRemovedSoFalse_Update()
        {
            var update = false;
            INotifyCollection <int> source1 = new NotifyCollection <int>()
            {
                1, 1, 2, 3
            };
            INotifyCollection <int> source2 = new NotifyCollection <int>()
            {
                1, 2, 2, 3
            };

            var test = Observable.Expression(() => source1.SetEquals(source2));

            test.ValueChanged += (o, e) =>
            {
                Assert.IsTrue((bool)e.OldValue);
                Assert.IsFalse((bool)e.NewValue);
                update = true;
            };

            Assert.IsTrue(test.Value);
            Assert.IsFalse(update);

            source2.Remove(3);

            Assert.IsTrue(update);
            Assert.IsFalse(test.Value);
        }
コード例 #9
0
ファイル: OrderByTest.cs プロジェクト: walcher/NMF
        public void OrderByTransaction_ChangeRemove_Update()
        {
            ExecutionEngine.Current = new SequentialExecutionEngine();

            var update = false;
            var dummy1 = new ObservableDummy <int>(1);
            var dummy2 = new Dummy <int>(3);
            var dummy3 = new Dummy <int>(5);
            var coll   = new NotifyCollection <Dummy <int> >()
            {
                dummy1, dummy2, dummy3
            };

            var test = coll.OrderBy(d => d.Item);

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

            test.AssertSequence(dummy1, dummy2, dummy3);
            Assert.AreEqual(3, test.Sequences.Count());
            Assert.IsFalse(update);

            ExecutionEngine.Current.BeginTransaction();

            dummy1.Item = 0;
            coll.Remove(dummy1);
            Assert.IsFalse(update);

            ExecutionEngine.Current.CommitTransaction();

            test.AssertSequence(dummy2, dummy3);
            Assert.AreEqual(2, test.Sequences.Count());
            Assert.IsTrue(update);
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: ivanov961/HackBulgaria
 static void Main(string[] args)
 {
     NotifyCollection nc = new NotifyCollection();
     nc.PropertyChanged += (s,e) =>
     {
         Console.WriteLine(e.PropertyName);
     };
     nc.Add(1);
     nc.Add(2);
     nc.Add(3);
     nc.Insert(2, 2);
     nc.Add(4);
     nc.Remove(4);
 }
コード例 #11
0
        public void GroupBy_ObservableSource_NoUpdatesWhenDetached()
        {
            var update = false;
            ICollection <Dummy <string> > coll = new NotifyCollection <Dummy <string> >();

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

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

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

            test.Detach();
            update = false;

            var testDummy = new ObservableDummy <string>()
            {
                Item = "42"
            };

            coll.Add(testDummy);

            Assert.IsFalse(update);

            testDummy.Item = "23";

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("23", test.FirstOrDefault().Key);
            update = false;

            testDummy.Item = "42";

            Assert.IsTrue(update);
            update = false;

            coll.Remove(testDummy);

            Assert.IsTrue(update);
        }
コード例 #12
0
ファイル: FirstOrDefaultTests.cs プロジェクト: mlessmann/NMF
        public void PredicateFirstOrDefault_ObservableSourceOtherItemRemoved_NoUpdate()
        {
            var update = false;
            var coll   = new NotifyCollection <string>()
            {
                "1", "23", "42"
            };

            var test = Observable.Expression(() => coll.FirstOrDefault(s => s.Length > 1));

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

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            coll.Remove("42");

            Assert.IsFalse(update);
        }
コード例 #13
0
        public void TopX_Remove_CorrectResult()
        {
            var collection = new NotifyCollection <Dummy <int> >();
            var collCasted = (INotifyCollection <Dummy <int> >)collection;
            var top1       = new Dummy <int>(43);
            var top2       = new Dummy <int>(42);
            var top3       = new Dummy <int>(30);

            collection.Add(top1);
            collection.Add(top2);
            collection.Add(top3);
            collection.Add(new Dummy <int>(23));
            collection.Add(new Dummy <int>(6));

            var topEx = Observable.Expression(() => collCasted.TopX(3, d => d.Item));
            var top   = topEx.Value;

            Assert.AreEqual(top1, top[0].Key);
            Assert.AreEqual(top2, top[1].Key);
            Assert.AreEqual(top3, top[2].Key);
            Assert.AreEqual(3, top.Length);

            var changed = false;

            topEx.ValueChanged += (o, e) =>
            {
                Assert.IsNotNull(e.OldValue);
                Assert.IsNotNull(e.NewValue);
                changed = true;
            };

            collection.RemoveAt(3);

            Assert.AreEqual(top, topEx.Value);
            Assert.IsFalse(changed);

            collection.Remove(top1);

            Assert.IsTrue(changed);
            Assert.AreEqual(42, topEx.Value[0].Key.Item);
            Assert.AreEqual(30, topEx.Value[1].Key.Item);
            Assert.AreEqual(6, topEx.Value[2].Key.Item);
        }
コード例 #14
0
ファイル: LambdaAvgTests.cs プロジェクト: mlessmann/NMF
        public void LambdaIntAverage_ObservableSourceItemAdded_NoUpdatesWhenDetached()
        {
            var update = false;
            var coll   = new NotifyCollection <Dummy <int> >()
            {
                new Dummy <int>(1), new Dummy <int>(2), new Dummy <int>(3)
            };
            var testColl = coll.WithUpdates();

            var test = Observable.Expression(() => testColl.Average(d => d.Item));

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

            Assert.AreEqual(2, test.Value);
            Assert.AreEqual(2, testColl.Average(d => d.Item));
            Assert.IsFalse(update);

            test.Detach();

            var testDummy = new ObservableDummy <int>(5);

            coll.Add(testDummy);

            Assert.IsFalse(update);

            testDummy.Item = 4;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(2.5, test.Value);
            update = false;

            testDummy.Item = 5;

            Assert.IsTrue(update);
            update = false;

            coll.Remove(testDummy);
        }
コード例 #15
0
        static void Main ( string[] args )
        {
            Delegates del = new Delegates();
            List<int> numbers = new List<int> { 5 , 4 , 8 , 7 , 9 , 6 , 6 , 6 , 3 , 1 , 20 };
            List<int> evens = del.FilterCollection(numbers , IsEven);
            foreach(var item in evens)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            AverageAggregator aggregator = new AverageAggregator();
            aggregator.AverageChanged += delegate ( object sender )
            {
                if(sender is AverageAggregator)
                {
                    AverageAggregator newSender = (AverageAggregator)sender;
                    Console.WriteLine("Average has changed!\nNew value: {0}" , newSender.Average);
                }
            };
            aggregator.AddNumber(6);
            aggregator.AddNumber(4);
            aggregator.AddNumber(2);
            aggregator.AddNumber(3);
            Student stu = new Student();
            stu.PropertyChanged += PropChange;
            stu.Name = "Anton";
            stu.FacultyNumber = 65888;
            stu.Grade = 5.58;

            NotifyCollection<int> newList = new NotifyCollection<int>();
            newList.PropertyChanged += (object sender, PropertyChangedEventArgs e)=>
        {
            Console.WriteLine("The list has changed!\n{0}" , e.PropertyName);
        };
            newList.Add(5);
            newList.Add(12);
            newList.Insert(1 , 20);
            newList.Remove(12);
            Console.ReadKey();
        }
コード例 #16
0
ファイル: GroupByTest.cs プロジェクト: FrederikP/NMF
        public void GroupBy_ObservableSource_NoUpdatesWhenDetached()
        {
            var update = false;
            ICollection<Dummy<string>> coll = new NotifyCollection<Dummy<string>>();

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

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

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

            test.Detach();
            update = false;

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

            Assert.IsFalse(update);

            testDummy.Item = "23";

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("23", test.FirstOrDefault().Key);
            update = false;

            testDummy.Item = "42";

            Assert.IsTrue(update);
            update = false;

            coll.Remove(testDummy);

            Assert.IsTrue(update);
        }
コード例 #17
0
ファイル: LambdaAvgTests.cs プロジェクト: FrederikP/NMF
        public void LambdaIntAverage_ObservableSourceItemAdded_NoUpdatesWhenDetached()
        {
            var update = false;
            var coll = new NotifyCollection<Dummy<int>>() { new Dummy<int>(1), new Dummy<int>(2), new Dummy<int>(3) };
            var testColl = coll.WithUpdates();

            var test = Observable.Expression(() => testColl.Average(d => d.Item));

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

            Assert.AreEqual(2, test.Value);
            Assert.AreEqual(2, testColl.Average(d => d.Item));
            Assert.IsFalse(update);

            test.Detach();

            var testDummy = new ObservableDummy<int>(5);
            coll.Add(testDummy);

            Assert.IsFalse(update);

            testDummy.Item = 4;

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual(2.5, test.Value);
            update = false;

            testDummy.Item = 5;

            Assert.IsTrue(update);
            update = false;

            coll.Remove(testDummy);
        }
コード例 #18
0
        public void SetEqualsComparer_ObservableSource2ItemRemoved_NoUpdate()
        {
            var update = false;
            INotifyCollection <int> source1 = new NotifyCollection <int>()
            {
                -1, 1, -2, -3
            };
            INotifyCollection <int> source2 = new NotifyCollection <int>()
            {
                1, 2, 2, 3
            };

            var test = Observable.Expression(() => source1.SetEquals(source2, new AbsoluteValueComparer()));

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

            Assert.IsTrue(test.Value);
            Assert.IsTrue(source1.SetEquals(source2, new AbsoluteValueComparer()));
            Assert.IsFalse(update);

            source2.Remove(2);

            Assert.IsFalse(update);
        }
コード例 #19
0
        public void SetEquals_ObservableSource1ItemRemoved_NoUpdate()
        {
            var update = false;
            INotifyCollection <int> source1 = new NotifyCollection <int>()
            {
                1, 1, 2, 3
            };
            INotifyCollection <int> source2 = new NotifyCollection <int>()
            {
                1, 2, 2, 3
            };

            var test = Observable.Expression(() => source1.SetEquals(source2));

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

            Assert.IsTrue(test.Value);
            Assert.IsTrue(source1.SetEquals(source2));
            Assert.IsFalse(update);

            source1.Remove(1);

            Assert.IsFalse(update);
        }
コード例 #20
0
ファイル: SetEqualsTest.cs プロジェクト: FrederikP/NMF
        public void SetEqualsComparer_ObservableSource2ItemRemovedSoTrue_Update()
        {
            var update = false;
            var source1 = new NotifyCollection<int>() { -1, 1, -2, -3 };
            var source2 = new NotifyCollection<int>() { 1, 2, -2, 3, 4 };

            var test = Observable.Expression(() => source1.SetEquals(source2, new AbsoluteValueComparer()));

            test.ValueChanged += (o, e) =>
            {
                Assert.IsFalse((bool)e.OldValue);
                Assert.IsTrue((bool)e.NewValue);
                update = true;
            };

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            source2.Remove(4);

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
        }
コード例 #21
0
ファイル: SetEqualsTest.cs プロジェクト: FrederikP/NMF
        public void SetEquals_ObservableSource2ItemRemovedSoFalse_Update()
        {
            var update = false;
            var source1 = new NotifyCollection<int>() { 1, 1, 2, 3 };
            var source2 = new NotifyCollection<int>() { 1, 2, 2, 3 };

            var test = Observable.Expression(() => source1.SetEquals(source2));

            test.ValueChanged += (o, e) =>
            {
                Assert.IsTrue((bool)e.OldValue);
                Assert.IsFalse((bool)e.NewValue);
                update = true;
            };

            Assert.IsTrue(test.Value);
            Assert.IsFalse(update);

            source2.Remove(3);

            Assert.IsTrue(update);
            Assert.IsFalse(test.Value);
        }
コード例 #22
0
ファイル: AnyTest.cs プロジェクト: FrederikP/NMF
        public void LambdaAny_ObservableSource_NoUpdateWhenDetached()
        {
            var update = false;
            var coll = new NotifyCollection<int>() { -1, -2 };

            var test = Observable.Expression(() => coll.Any(i => i > 0));

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

            Assert.IsFalse(test.Value);
            Assert.IsFalse(update);

            test.Detach();

            coll.Add(1);

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.IsTrue(test.Value);
            update = false;

            coll.Remove(1);

            Assert.IsTrue(update);
        }
コード例 #23
0
        static void Main(string[] args)
        {
            Console.InputEncoding = Encoding.Unicode;
            Console.OutputEncoding = Encoding.Unicode;
            AverageAggregator averageAgg = new AverageAggregator
                (delegate (object sender, decimal oldAverage, decimal newAverage)
                {
                    Console.Write("--->Handler: ");
                    Console.WriteLine("Average changed from {0} to {1}.", oldAverage, newAverage);
                });

            Console.WriteLine("---AverageAggregator---");
            Console.WriteLine();

            Console.WriteLine("Adding number to aggregator: 2");
            averageAgg.AddNumber(2);
            Console.WriteLine("Adding number to aggregator: 2");
            averageAgg.AddNumber(2);
            Console.WriteLine("Adding number to aggregator: 8");
            averageAgg.AddNumber(8);
            Console.WriteLine("Adding number to aggregator: 4");
            averageAgg.AddNumber(4);
            Console.WriteLine("Adding number to aggregator: 4");
            averageAgg.AddNumber(4);
            Console.WriteLine("Adding number to aggregator: 4");
            averageAgg.AddNumber(4);
            Console.WriteLine("Adding number to aggregator: -24");
            averageAgg.AddNumber(-24);
            Console.WriteLine("Adding number to aggregator: 0");
            averageAgg.AddNumber(0);
            Console.WriteLine("Adding number to aggregator: 0");
            averageAgg.AddNumber(0);
            Console.WriteLine("Adding number to aggregator: 10");
            averageAgg.AddNumber(10);
            Console.WriteLine("Adding number to aggregator: 1");
            averageAgg.AddNumber(1);
            Console.WriteLine("Adding number to aggregator: 1");
            averageAgg.AddNumber(1);
            Console.WriteLine("Adding number to aggregator: 2");
            averageAgg.AddNumber(2);

            Console.WriteLine();
            Console.WriteLine("---NotifyCollection---");
            Console.WriteLine();

            NotifyCollection<Book> notCol = new NotifyCollection<Book>
                ((sender, changeType, changedItemIndex, changedItemInfo) =>
                {
                    Console.Write("--->Handler: ");
                    switch (changeType)
                    {
                        case ItemChangeType.Add:
                            Console.WriteLine("Added item to collection on {0} index!", changedItemIndex);
                            break;
                        case ItemChangeType.Insert:
                            Console.WriteLine("Inserted item in collection on {0} index!", changedItemIndex);
                            break;
                        case ItemChangeType.Remove:
                            if (changedItemIndex == -1) Console.WriteLine("Collection items cleared!");
                            else Console.WriteLine("Removed item from collection being on {0} index!", changedItemIndex);
                            break;
                        case ItemChangeType.Replace:
                            Console.WriteLine("Replaced item in collection being on {0} index!", changedItemIndex);
                            break;
                        case ItemChangeType.ChangedProperty:
                            Console.WriteLine("Item on {0} index property {1} changed!", changedItemIndex, changedItemInfo);
                            break;
                        default:
                            break;
                    }
                });

            Book book1 = new Book("author1", "book1", 2000);
            Book book2 = new Book("author2", "book2", 2001);
            Book book3 = new Book("author3", "book3", 2002);
            Console.WriteLine("Adding {0}!", book1);
            notCol.Add(book1);
            Console.WriteLine("Adding {0}!", book2);
            notCol.Add(book2);
            Console.WriteLine("Inserting {0} on index 1!", book3);
            notCol.Insert(1, book3);
            Console.WriteLine("Changing {0} year to 2011!", book1);
            book1.Year = 2011;
            Console.WriteLine("Changing {0} year to 2005!", book3);
            book3.Year = 2005;
            Console.WriteLine("Removing {0}!", book2);
            notCol.Remove(book2);
            Console.WriteLine("Changing removed book year to 1995!");
            book2.Year = 1995;
            Console.WriteLine("Clearing all items!");
            notCol.Clear();
            Console.WriteLine("Adding {0}!", book1);
            notCol.Add(book1);
            Console.WriteLine("Adding {0}!", book2);
            notCol.Add(book2);
            Console.WriteLine("Replacing book on 0 index with {0}", book3);
            notCol[0] = book3;
            Console.WriteLine("Changing old book year to 1895!");
            book1.Year = 1895;
            Console.WriteLine("Changing new book year to 2003!");
            book3.Year = 2003;

            Console.WriteLine();
            Console.WriteLine("---Network Buffer---");

            ReceiveBuffer rec = new ReceiveBuffer(MessageReceivedHandle);
            PacketGenerator pg = new PacketGenerator(rec);
            Console.WriteLine("Write messages. Write exit for exit.");
            Console.Write("Message to send: ");
            string inputMessage = Console.ReadLine();
            while(!inputMessage.Equals("exit"))
            {
                pg.SendMessage(inputMessage);
                Console.Write("Message to send: ");
                inputMessage = Console.ReadLine();
            }
        }
コード例 #24
0
ファイル: FirstOrDefaultTests.cs プロジェクト: FrederikP/NMF
        public void PredicateFirstOrDefault_ObservableSourceFirstItemAdded_NoUpdateWhenDetached()
        {
            var update = false;
            var coll = new NotifyCollection<string>() { "1" };

            var test = Observable.Expression(() => coll.FirstOrDefault(s => s.Length > 1));

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

            Assert.IsNull(test.Value);
            Assert.IsFalse(update);

            test.Detach();
            update = false;

            coll.Add("42");

            Assert.IsFalse(update);

            test.Attach();

            Assert.IsTrue(update);
            Assert.AreEqual("42", test.Value);
            update = false;

            coll.Remove("42");

            Assert.IsTrue(update);
        }
コード例 #25
0
ファイル: FirstOrDefaultTests.cs プロジェクト: FrederikP/NMF
        public void PredicateFirstOrDefault_ObservableSourceOtherItemRemoved_NoUpdate()
        {
            var update = false;
            var coll = new NotifyCollection<string>() { "1", "23", "42" };

            var test = Observable.Expression(() => coll.FirstOrDefault(s => s.Length > 1));

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

            Assert.AreEqual("23", test.Value);
            Assert.IsFalse(update);

            coll.Remove("42");

            Assert.IsFalse(update);
        }
コード例 #26
0
ファイル: FirstOrDefaultTests.cs プロジェクト: FrederikP/NMF
        public void FirstOrDefault_ObservableSourceRemoveNewFirstItem_Update()
        {
            var update = false;
            var coll = new NotifyCollection<string>() { "42", "23" };

            var test = Observable.Expression(() => coll.FirstOrDefault());

            test.ValueChanged += (o, e) =>
            {
                update = true;
                Assert.AreEqual("42", e.OldValue);
                Assert.AreEqual("23", e.NewValue);
            };

            Assert.AreEqual("42", test.Value);
            Assert.IsFalse(update);

            coll.Remove("42");

            Assert.IsTrue(update);
            Assert.AreEqual("23", test.Value);
        }
コード例 #27
0
ファイル: SetEqualsTest.cs プロジェクト: FrederikP/NMF
        public void SetEqualsComparer_ObservableSource1ItemRemoved_NoUpdate()
        {
            var update = false;
            var source1 = new NotifyCollection<int>() { -1, 1, -2, -3 };
            var source2 = new NotifyCollection<int>() { 1, 2, 2, 3 };

            var test = Observable.Expression(() => source1.SetEquals(source2, new AbsoluteValueComparer()));

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

            Assert.IsTrue(test.Value);
            Assert.IsTrue(source1.SetEquals(source2, new AbsoluteValueComparer()));
            Assert.IsFalse(update);

            source1.Remove(1);

            Assert.IsFalse(update);
        }