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))); }
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_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); }
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(); }
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(); }
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(); }