Beispiel #1
0
        public void ObservableCompositeCollection_ModifyTest()
        {
            var data = CreateData();

            var compositeCollection = new ObservableCompositeCollection <Item>();

            compositeCollection.Content.AddRange(data);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));

            // move
            data[99].Move(0, 999);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // replace
            data[1][42] = new Item {
                Index = -1
            };
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // add
            data[42].AddRange(new[] { new Item(), new Item(), new Item() });
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // remove
            data[218].RemoveWhere(item => (item.Index & 1) == 0);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // reset
            data[698].Clear();
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // modify sources
            data.RemoveAt(777);
            compositeCollection.Content.RemoveAt(777);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
        }
Beispiel #2
0
        private static void CommpareAdd(ObservableCollection <Item> collection, ObservableCompositeCollection <Item> compositeCollection)
        {
            var data = CreateData();

            var stopwatch = Stopwatch.StartNew();

            var t1 = stopwatch.Elapsed;

            collection.AddRange(data.SelectMany(list => list));

            var t2 = stopwatch.Elapsed;

            compositeCollection.Content.AddRange(data);

            var t3 = stopwatch.Elapsed;

            stopwatch.Stop();

            var compositeTime = t3 - t2;
            var plainTime     = t2 - t1;
            var factor        = compositeTime.TotalSeconds / plainTime.TotalSeconds;

            Debug.WriteLine("composite: {0} / plain {1} = {2}", compositeTime, plainTime, factor);
            Debug.WriteLine("{0} elements.", compositeCollection.Count);

            Assert.IsTrue(factor < 2);
            Assert.IsTrue(collection.SequenceEqual(compositeCollection));
        }
Beispiel #3
0
        public void ObservableCompositeCollection_FillWithoutEventHandlersTest()
        {
            var collection          = new ObservableCollection <Item>();
            var compositeCollection = new ObservableCompositeCollection <Item>();

            CommpareAdd(collection, compositeCollection);
        }
        private static void CommpareAdd(ObservableCollection<Item> collection, ObservableCompositeCollection<Item> compositeCollection)
        {
            var data = CreateData();

            var stopwatch = Stopwatch.StartNew();

            var t1 = stopwatch.Elapsed;

            collection.AddRange(data.SelectMany(list => list));

            var t2 = stopwatch.Elapsed;
            compositeCollection.Content.AddRange(data);

            var t3 = stopwatch.Elapsed;

            stopwatch.Stop();

            var compositeTime = t3 - t2;
            var plainTime = t2 - t1;
            var factor = compositeTime.TotalSeconds / plainTime.TotalSeconds;

            Debug.WriteLine("composite: {0} / plain {1} = {2}", compositeTime, plainTime, factor);
            Debug.WriteLine("{0} elements.", compositeCollection.Count);

            Assert.IsTrue(factor < 2);
            Assert.IsTrue(collection.SequenceEqual(compositeCollection));
        }
        public void ObservableCompositeCollection_ModifyTest()
        {
            var data = CreateData();

            var compositeCollection = new ObservableCompositeCollection<Item>();

            compositeCollection.Content.AddRange(data);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));

            // move
            data[99].Move(0, 999);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // replace
            data[1][42] = new Item { Index = -1 };
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // add
            data[42].AddRange(new[] { new Item(), new Item(), new Item() });
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // remove
            data[218].RemoveRange(item => (item.Index & 1) == 0);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // reset
            data[698].Clear();
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
            // modify sources
            data.RemoveAt(777);
            compositeCollection.Content.RemoveAt(777);
            Assert.IsTrue(compositeCollection.SequenceEqual(data.SelectMany(list => list)));
        }
        public void ObservableCompositeCollection_FillWithoutEventHandlersTest()
        {
            var collection = new ObservableCollection<Item>();
            var compositeCollection = new ObservableCompositeCollection<Item>();

            CommpareAdd(collection, compositeCollection);
        }
Beispiel #7
0
        private Project([NotNull] Solution solution, [NotNull] string fullName, [NotNull] IVsHierarchy projectHierarchy)
        {
            Solution         = solution;
            FullName         = fullName;
            ProjectHierarchy = projectHierarchy;

            ProjectFile = new ProjectFile(solution, this);

            DefaultProjectConfiguration   = new ProjectConfiguration(this, null, null);
            SpecificProjectConfigurations = new ReadOnlyObservableCollection <ProjectConfiguration>(_internalSpecificProjectConfigurations);

            ProjectConfigurations     = ObservableCompositeCollection.FromSingleItemAndList(DefaultProjectConfiguration, _internalSpecificProjectConfigurations);
            IsProjectTypeGuidSelected = new ProjectTypeGuidIndexer(DefaultProjectConfiguration);

            Update();
        }
Beispiel #8
0
        public void ObservableCompositeCollection_FillWithEventHandlersTest()
        {
            var collection          = new ObservableCollection <Item>();
            var compositeCollection = new ObservableCompositeCollection <Item>();

            var collectionEvents = 0;
            var compositeEvents  = 0;

            collection.CollectionChanged          += (_, _) => collectionEvents += 1;
            compositeCollection.CollectionChanged += (_, _) => compositeEvents += 1;

            collection.CollectionChanged          += Collection_CollectionChanged;
            compositeCollection.CollectionChanged += Collection_CollectionChanged;

            CommpareAdd(collection, compositeCollection);

            Assert.AreEqual(collectionEvents, collection.Count);
            Assert.AreEqual(compositeEvents, compositeCollection.Count);
        }
        public void ObservableCompositeCollection_FillWithEventHandlersTest()
        {
            var collection = new ObservableCollection<Item>();
            var compositeCollection = new ObservableCompositeCollection<Item>();

            var collectionEvents = 0;
            var compositeEvents = 0;

            collection.CollectionChanged += (_, __) => collectionEvents += 1;
            compositeCollection.CollectionChanged += (_, __) => compositeEvents += 1;

            collection.CollectionChanged += Collection_CollectionChanged;
            compositeCollection.CollectionChanged += Collection_CollectionChanged;

            CommpareAdd(collection, compositeCollection);

            Assert.AreEqual(collectionEvents, collection.Count);
            Assert.AreEqual(compositeEvents, compositeCollection.Count);
        }
        private Project([NotNull] Solution solution, [NotNull] string fullName, [NotNull] IVsHierarchy projectHierarchy)
        {
            Contract.Requires(solution != null);
            Contract.Requires(projectHierarchy != null);

            _solution         = solution;
            _fullName         = fullName;
            _projectHierarchy = projectHierarchy;

            _projectFile = new ProjectFile(solution, this);

            _defaultProjectConfiguration   = new ProjectConfiguration(this, null, null);
            _specificProjectConfigurations = new ReadOnlyObservableCollection <ProjectConfiguration>(_internalSpecificProjectConfigurations);

            _projectConfigurations     = ObservableCompositeCollection.FromSingleItemAndList(_defaultProjectConfiguration, _internalSpecificProjectConfigurations);
            _isProjectTypeGuidSelected = new ProjectTypeGuidIndexer(_defaultProjectConfiguration);

            CommandManager.RequerySuggested += (_, __) => OnPropertyChanged(nameof(IsSaved));

            Update();
        }
Beispiel #11
0
        private Project(Solution solution, EnvDTE.Project project)
        {
            Contract.Requires(solution != null);
            Contract.Requires(project != null);
            Contract.Requires(!string.IsNullOrEmpty(project.FullName));
            Contract.Requires(!string.IsNullOrEmpty(project.UniqueName));

            _solution   = solution;
            _project    = project;
            _uniqueName = _project.UniqueName;
            _name       = _project.Name;
            _fullName   = _project.FullName;

            _projectFile = new ProjectFile(solution, this);

            _defaultProjectConfiguration   = new ProjectConfiguration(this, null, null);
            _specificProjectConfigurations = new ReadOnlyObservableCollection <ProjectConfiguration>(_internalSpecificProjectConfigurations);
            _solutionContexts          = _solution.SolutionContexts.ObservableWhere(context => context.ProjectName == _uniqueName);
            _projectConfigurations     = ObservableCompositeCollection.FromSingleItemAndList(_defaultProjectConfiguration, _internalSpecificProjectConfigurations);
            _isProjectTypeGuidSelected = new ProjectTypeGuidIndexer(_defaultProjectConfiguration);

            Update();
        }