Esempio n. 1
0
        public void TestCollections()
        {
            var numbers = new EditableCollection <int>();
            var results = new EditableCollection <int>();

            using (results.SyncWith(numbers, x => x))
            {
                var viewableResults = results.AsViewableCollection();

                // when doing more than one change:
                // use beginupdate/endupdate to reduce syncing events
                numbers.BeginUpdate();
                try
                {
                    numbers.Add(4);
                    numbers.Add(7);
                }
                finally
                {
                    numbers.EndUpdate();
                }

                // Magically results (x) are already added to the Results list
                CollectionAssert.AreEqual(numbers, viewableResults);

                // You can't add a result to the public Results list
                // Results.Add(17);

                // again: change source collection:
                numbers.Add(8);

                // synced results collection is already updated.
                CollectionAssert.AreEqual(numbers, viewableResults);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Registers the inverse change (READY TO BE UNDONE) of a supplied controlled collection and its owning instance, to be undone/redone in the future.
        /// This must happen  as part of a grouping combined variation (a command being performed).
        /// Also, it will not be performed if already an undo/redo operation is running.
        /// </summary>
        public static void RegisterInverseCollectionChange(IModelEntity Instance, EditableCollection SourceCollection, char AlterCode, params object[] Parameters)
        {
            if (Instance == null || Instance.EditEngine == null ||
                Instance.EditEngine.ExecutionStatus != EExecutionStatus.Running)
            {
                return;
            }

            // If no engine controlling or not within command variation declaration then abandon.
            if (!Instance.EditEngine.IsVariating)
            {
                //T Console.WriteLine("No variating at collection change.");
                return;
            }

            // IMPORTANT: EDIT-ENGINES MUST MATCH FOR CHANGING VALUES.
            if (Instance.EditEngine != ActiveEntityEditor)
            {
                throw new UsageAnomaly("Active Entity-Editor differs (for collection) from that of the changing Entity '" + Instance.ToStringAlways() + "'.");
            }

            // Stores the variation into the command being declared.
            var MemberDef = SourceCollection.VariatingInstance.ClassDefinition.GetMemberDef(SourceCollection.Name, false);

            Instance.EditEngine.StoreVariation(new CollectionVariation(SourceCollection, AlterCode, Parameters),
                                               (MemberDef != null && MemberDef.ChangesExistenceStatus));
        }
Esempio n. 3
0
        public void TestEventsFired()
        {
            bool eventFired = false;

            var sampleData = GenerateSampleData(10);
            IEditableCollection <int> sourceCollection = new EditableCollection <int>();
            IEditableCollection <int> targetCollection = new EditableCollection <int>();

            var syncer = targetCollection.SyncWith(sourceCollection, (itemB) => itemB);

            syncer.Synced += delegate(object sender, SyncEventArgs <int, int> args) { eventFired = true; };

            sourceCollection.Add(sampleData[0]);
            Assert.AreEqual(true, eventFired);

            eventFired = false;
            sourceCollection.Remove(sampleData[0]);
            Assert.AreEqual(true, eventFired);

            eventFired = false;
            sourceCollection.BeginUpdate();
            sourceCollection.Add(sampleData[0]);
            sourceCollection.Add(sampleData[1]);
            sourceCollection.EndUpdate();
            Assert.AreEqual(true, eventFired);
        }
Esempio n. 4
0
        public CollectionVariation GenerateInverseDictionaryVariation(EditableCollection TargetCollection, char AlterCode, object[] Parameters)
        {
            var NewCode = GenerateInverseDictionaryAlterCode(AlterCode);
            var Result  = new CollectionVariation(TargetCollection, NewCode, Parameters);

            return(Result);
        }
Esempio n. 5
0
        public void TestRemove()
        {
            var characteristic1 = new Characteristic()
            {
                CharacteristicName = "test1"
            };
            var characteristic2 = new Characteristic()
            {
                CharacteristicName = "test2"
            };
            var characteristic3 = new Characteristic()
            {
                CharacteristicName = "test3"
            };
            var characteristic4 = new Characteristic()
            {
                CharacteristicName = "test4"
            };
            var characteristic5 = new Characteristic()
            {
                CharacteristicName = "test5"
            };

            var characteristics = new EditableCollection <Characteristic>();

            characteristics.Add(characteristic1);
            characteristics.Add(characteristic2);
            characteristics.Add(characteristic3);
            characteristics.Add(characteristic4);
            characteristics.Add(characteristic5);
            var wrappedCharacteristics =
                new WrappedEditableCollection <CharacteristicUsage, Characteristic>(characteristics);

            characteristics.Count.Should().Be(5);
            wrappedCharacteristics.Count.Should().Be(characteristics.Count);
            characteristics[0].Should().Be(characteristic1);
            characteristics[1].Should().Be(characteristic2);
            characteristics[2].Should().Be(characteristic3);
            characteristics[3].Should().Be(characteristic4);
            characteristics[4].Should().Be(characteristic5);

            CompareList(characteristics, wrappedCharacteristics);

            wrappedCharacteristics.RemoveAt(2);
            characteristics.Count.Should().Be(4);
            CompareList(characteristics, wrappedCharacteristics);

            characteristics.RemoveAt(2);
            wrappedCharacteristics.Count.Should().Be(3);
            CompareList(characteristics, wrappedCharacteristics);

            wrappedCharacteristics.RemoveFirst();
            characteristics.Count.Should().Be(2);
            CompareList(characteristics, wrappedCharacteristics);

            characteristics.RemoveFirst();
            wrappedCharacteristics.Count.Should().Be(1);
            CompareList(characteristics, wrappedCharacteristics);
        }
        public void TestTrackedCollectionSpeed()
        {
            var foo = new EditableCollection <Company>();

            for (int i = 0; i < 10000; i++)
            {
                foo.Add(new Company());
            }
        }
Esempio n. 7
0
        private void CompareList(EditableCollection <Characteristic> original,
                                 WrappedEditableCollection <CharacteristicUsage, Characteristic> wrapped)
        {
            wrapped.Count.Should().Be(original.Count);

            for (var i = 0; i < wrapped.Count; i++)
            {
                wrapped[i].Characteristic.Should().Be(original[i]);
            }
        }
 private void MigrateBankFiles(ICollection <BankFile> oldBankFiles,
                               EditableCollection <NewModels.BankFile> newBankFiles)
 {
     foreach (var oldBankFile in oldBankFiles)
     {
         newBankFiles.Add(new NewModels.BankFile
         {
             Path = oldBankFile.Path, BankName = oldBankFile.BankName, ProgramRange = oldBankFile.ProgramRange
         });
     }
 }
Esempio n. 9
0
        public void TestInit()
        {
            var characteristics = new EditableCollection <Characteristic>();

            characteristics.Add(new Characteristic());

            var wrappedCharacteristics =
                new WrappedEditableCollection <CharacteristicUsage, Characteristic>(characteristics);

            wrappedCharacteristics.Count.Should().Be(characteristics.Count);
            wrappedCharacteristics.First().Characteristic.Should().Be(characteristics.First());
        }
Esempio n. 10
0
        public FilteredParentProvider(ModelMapper mapper)
        {
            var defaultParentProvider = new DefaultParentProvider(mapper);
            var children = defaultParentProvider.Childs;

            if (children != null)
            {
                var collection = new EditableCollection <object>();
                FSyncer = collection.SyncWith(children, CreateTargetItem, DestroyTargetItem, FilterPredicate);

                Childs = collection.AsViewableCollection();
            }
        }
Esempio n. 11
0
        private void CompareBankFiles(ICollection <OldBankFile> oldBankFiles, EditableCollection <BankFile> newBankFiles)
        {
            newBankFiles.Count.Should().Be(oldBankFiles.Count);

            foreach (var oldBankFile in oldBankFiles)
            {
                var found = (from t in newBankFiles
                             where t.BankName == oldBankFile.BankName &&
                             t.ProgramRange == oldBankFile.ProgramRange &&
                             t.Path == oldBankFile.Path
                             select t).Any();

                found.Should().BeTrue();
            }
        }
Esempio n. 12
0
        public void TestObjectLifetime()
        {
            int createCount  = 0;
            int destroyCount = 0;

            var source = new SortedEditableList <MockObject, int>(mo => mo.Order);
            var target = new EditableCollection <MockObject>();

            Func <MockObject, MockObject> createMo = mo =>
            {
                createCount++;
                return(new MockObject(mo.Order));
            };

            Action <MockObject> destroyMo = mo =>
            {
                destroyCount++;
            };

            target.SyncWith(source, createMo, destroyMo);

            source.Add(new MockObject(0));

            Assert.AreEqual(1, createCount, "Create count");
            Assert.AreEqual(0, destroyCount, "Destroy count");

            var mock = new MockObject(-1);

            source.Add(mock);
            source.Add(new MockObject(-2));
            source.Add(new MockObject(10));

            Assert.AreEqual(4, createCount, "Create count");
            Assert.AreEqual(0, destroyCount, "Destroy count");

            source.Remove(mock);

            Assert.AreEqual(4, createCount, "Create count");
            Assert.AreEqual(1, destroyCount, "Destroy count");

            Assert.AreEqual(source.Count, target.Count);

            source.Clear();

            Assert.AreEqual(source.Count, target.Count);
            Assert.AreEqual(createCount, destroyCount, "Create count doesn't match destroy count after source.Clear()");
        }
Esempio n. 13
0
        public void TestEditableCollectionAndEditableIDList()
        {
            var sampleData       = new IIDItem[] { new IDItem("item1"), new IDItem("item2"), new IDItem("item3"), new IDItem("item4"), new IDItem("item5"), new IDItem("item6") };
            var sourceCollection = new EditableIDList <IIDItem>("source");
            var targetCollection = new EditableCollection <IIDItem>();

            var syncer = targetCollection.SyncWith(sourceCollection, (itemB) => itemB);

            sourceCollection.AddRange(sampleData);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Remove(sampleData[0]);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Clear();

            CollectionAssert.AreEqual(sourceCollection, targetCollection, "Clear() on EditableIDList failed.");
        }
Esempio n. 14
0
        public void TestEditableCollectionAndViewableList()
        {
            var sampleData       = GenerateSampleData(10);
            var sourceCollection = new ViewableList <int>();
            IEditableCollection <int> targetCollection = new EditableCollection <int>();

            var syncer = targetCollection.SyncWith(sourceCollection, (itemB) => itemB);

            sourceCollection.AddRange(sampleData);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Remove(sampleData[0]);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Clear();

            CollectionAssert.AreEqual(sourceCollection, targetCollection);
        }
Esempio n. 15
0
        public void TestEditableCollectionAndViewableCollection()
        {
            var sampleData       = GenerateSampleData(10);
            var sourceCollection = new ViewableCollection <int>();
            IEditableCollection <int> targetCollection = new EditableCollection <int>();

            var syncer = targetCollection.SyncWith(sourceCollection, (itemB) => itemB);

            sourceCollection.AddRange(sampleData);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Remove(sampleData[0]);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            // Make sure a Clear triggers following event chaing: UpdateBegun / Removed ... / Cleared / Updated
            int updateBegunCount = 0;

            sourceCollection.UpdateBegun += delegate(IViewableCollection collection) { updateBegunCount++; };
            int removedCount = 0;
            int removeCount  = sourceCollection.Count;

            sourceCollection.Removed += delegate(IViewableCollection <int> collection, int item) { removedCount++; };
            int clearedCount = 0;

            sourceCollection.Cleared += delegate(IViewableCollection <int> collection) { clearedCount++; };
            int updatedCount = 0;

            sourceCollection.Updated += delegate(IViewableCollection collection) { updatedCount++; };

            sourceCollection.Clear();

            Assert.AreEqual(1, updateBegunCount);
            Assert.AreEqual(1, updatedCount);
            Assert.AreEqual(removeCount, removedCount);
            Assert.AreEqual(1, clearedCount);

            CollectionAssert.AreEqual(sourceCollection, targetCollection);
        }
Esempio n. 16
0
        public void TestSyncerChain()
        {
            var sampleData = GenerateSampleData(10);
            IEditableCollection <int> sourceCollection = new EditableCollection <int>();
            IEditableCollection <int> interCollection  = new EditableCollection <int>();
            IEditableCollection <int> targetCollection = new EditableCollection <int>();

            var syncer1 = targetCollection.SyncWith(interCollection, (itemB) => itemB);
            var syncer2 = interCollection.SyncWith(sourceCollection, (itemB) => itemB);

            sourceCollection.BeginUpdate();
            sourceCollection.Add(sampleData[0]);
            sourceCollection.Add(sampleData[1]);
            sourceCollection.Add(sampleData[2]);

            CollectionAssert.AreNotEqual(sourceCollection, targetCollection);

            sourceCollection.Remove(sampleData[0]);

            CollectionAssert.AreNotEqual(sourceCollection, targetCollection);

            bool eventFired = false;

            syncer1.Synced += delegate(object sender, SyncEventArgs <int, int> args) { eventFired = true; };

            sourceCollection.EndUpdate();

            Assert.AreEqual(true, eventFired);
            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.AddRange(sampleData);
            CollectionAssert.AreEqual(sourceCollection, targetCollection);

            sourceCollection.Clear();
            CollectionAssert.AreEqual(sourceCollection, targetCollection);
        }
Esempio n. 17
0
        public void TestBatchUpdate()
        {
            var sampleData = GenerateSampleData(10);
            IEditableCollection <int> sourceCollection = new EditableCollection <int>();
            IEditableCollection <int> targetCollection = new EditableCollection <int>();

            var syncer = targetCollection.SyncWith(sourceCollection, (itemB) => itemB);

            sourceCollection.BeginUpdate();
            sourceCollection.Add(sampleData[0]);
            sourceCollection.Add(sampleData[1]);
            sourceCollection.Add(sampleData[2]);

            CollectionAssert.AreNotEqual(sourceCollection, targetCollection);

            sourceCollection.Remove(sampleData[0]);
            sourceCollection.Remove(sampleData[2]);

            CollectionAssert.AreNotEqual(sourceCollection, targetCollection);

            sourceCollection.EndUpdate();

            CollectionAssert.AreEqual(sourceCollection, targetCollection);
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 internal CollectionVariation(EditableCollection VariatingCollection, char VariatingAlterCode, object[] PassedParameters)
 {
     this.VariatingCollection = VariatingCollection;
     this.VariatingAlterCode  = VariatingAlterCode;
     this.PassedParameters    = PassedParameters;
 }
Esempio n. 19
0
 public TeamEditable()
 {
     _players = new EditableCollection <PlayerEditable>();
 }