예제 #1
0
        public void TestTrackableCollection_FirstOrDefault(bool track)
        {
            var acc  = new Accumulator("test");
            var a    = new Simple("a");
            var b    = new Simple("b");
            var c    = new Simple("c");
            var coll = new TrackableCollection <Simple>(acc, track)
            {
                a, b, c, b, c, b, b
            };
            var first = coll.FirstOrDefault();

            Assert.AreEqual(a, first);
            coll.Clear();
            first = coll.FirstOrDefault();
            Assert.IsNull(first);

            var coll2 = new TrackableCollection <int>(acc, track)
            {
                -1, 1, 2
            };
            var f = coll2.FirstOrDefault();

            Assert.AreEqual(-1, f);
            coll2.Clear();
            f = coll2.FirstOrDefault();
            Assert.AreEqual(default(int), f);

            if (track)
            {
                Assert.AreEqual(12, acc.Records.Count);
            }
            else
            {
                Assert.AreEqual(0, acc.Records.Count);
            }
        }
예제 #2
0
        /// <summary>
        /// Supprime un lien référentiel - Action.
        /// </summary>
        /// <typeparam name="TActionLink">Le type de lien référentiel - action.</typeparam>
        /// <param name="collection">La collection dans laquelle l'élément doit être supprimé.</param>
        /// <param name="referential">Le référentiel.</param>
        /// <returns><c>true</c> si la suppression a réussi.</returns>
        static bool Delete <TActionLink>(TrackableCollection <TActionLink> collection, IMultipleActionReferential referential, bool cancelChanges = false)
            where TActionLink : IReferentialActionLink, IObjectWithChangeTracker
        {
            TActionLink al = collection.FirstOrDefault(c => c.Referential == referential);

            if (al != null)
            {
                if (cancelChanges)
                {
                    al.Referential.CancelChanges();
                }
                collection.Remove(al);
                if (al.IsMarkedAsAdded)
                {
                    al.MarkAsUnchanged();
                }

                return(true);
            }
            return(false);
        }