public void ItemsShouldHaveTheCorrectSelectionStateInTheCollection() { var target = new HierarchicalItemCollection<string>( CreateNodeHierarchy() ); target.SelectionMode = HierarchicalItemSelectionModes.All | HierarchicalItemSelectionModes.Synchronize; // select all items target[0].IsSelected = true; Assert.Equal( true, target[0].IsSelected ); Assert.Equal( true, target[0][0].IsSelected ); Assert.Equal( true, target[0][1].IsSelected ); Assert.Equal( true, target[0][2].IsSelected ); Assert.Equal( 13, target.SelectedItems.Count ); // unselect a child item target[0][0][0].IsSelected = false; Assert.Equal( false, target[0][0][0].IsSelected ); Assert.Null( target[0][0].IsSelected ); Assert.Null( target[0].IsSelected ); Assert.Equal( 10, target.SelectedItems.Count ); // unselect all items target[0].IsSelected = false; Assert.Equal( false, target[0].IsSelected ); Assert.Equal( false, target[0][0].IsSelected ); Assert.Equal( false, target[0][1].IsSelected ); Assert.Equal( false, target[0][2].IsSelected ); Assert.Equal( 0, target.SelectedItems.Count ); }
public void CollectionShouldResembleTreeWhenRootNodeIsProvided() { var target = new HierarchicalItemCollection<string>( CreateNodeHierarchy() ); Assert.Equal( 1, target.Count ); Assert.Equal( false, target[0].IsSelected ); Assert.Equal( 3, target[0].Count ); }
public void CollectionShouldResembleFanWhenMultipleRootNodesAreProvided() { var target = new HierarchicalItemCollection<string>( CreateNodeHierarchy().ToList() ); Assert.Equal( 3, target[0].Count ); Assert.Equal( false, target[0].IsSelected ); Assert.Equal( false, target[1].IsSelected ); Assert.Equal( false, target[2].IsSelected ); }
public void OnlyLeafItemsShouldBeSelectedInCollection() { var target = new HierarchicalItemCollection<string>( CreateNodeHierarchy() ); target.SelectionMode = HierarchicalItemSelectionModes.Leaf | HierarchicalItemSelectionModes.Synchronize; // select all items target[0].IsSelected = true; Assert.Equal( true, target[0].IsSelected ); Assert.Equal( true, target[0][0].IsSelected ); Assert.Equal( true, target[0][1].IsSelected ); Assert.Equal( true, target[0][2].IsSelected ); Assert.Equal( true, target[0][0][0].IsSelected ); Assert.Equal( true, target[0][0][1].IsSelected ); Assert.Equal( true, target[0][0][2].IsSelected ); Assert.Equal( 9, target.SelectedItems.Count ); // unselect a child item target[0][0][0].IsSelected = false; Assert.Equal( false, target[0][0][0].IsSelected ); Assert.Null( target[0][0].IsSelected ); Assert.Null( target[0].IsSelected ); Assert.Equal( 8, target.SelectedItems.Count ); // unselect all items target[0].IsSelected = false; Assert.Equal( false, target[0].IsSelected ); Assert.Equal( false, target[0][0].IsSelected ); Assert.Equal( false, target[0][1].IsSelected ); Assert.Equal( false, target[0][2].IsSelected ); Assert.Equal( false, target[0][0][0].IsSelected ); Assert.Equal( 0, target.SelectedItems.Count ); }
public void CollectionShouldBeInSyncWithSourceNodeCollection() { var source = CreateNodeHierarchy(); var newItem = new Node<string>( "Item 1.4" ); var target = new HierarchicalItemCollection<string>( source ) { SelectionMode = HierarchicalItemSelectionModes.All | HierarchicalItemSelectionModes.Synchronize }; // select all items target[0].IsSelected = true; Assert.Equal( 13, target.SelectedItems.Count ); // add new item (should cause parent update and unselection of items due to indeterminate state) source[0].Add( newItem ); Assert.Equal( 11, target.SelectedItems.Count ); Assert.Equal( "Item 1.4", target[0][0][3].Value ); Assert.Null( target[0].IsSelected ); // select new item, which should make entire path selected target[0][0][3].IsSelected = true; Assert.Equal( 14, target.SelectedItems.Count ); Assert.Equal( true, target[0][0][3].IsSelected ); Assert.Equal( true, target[0].IsSelected ); // unselect item to revert state target[0][0][3].IsSelected = false; Assert.Equal( 11, target.SelectedItems.Count ); Assert.Null( target[0].IsSelected ); // remove a source item should cause the hierarchy to update source[0].Remove( newItem ); Assert.Equal( 13, target.SelectedItems.Count ); Assert.Equal( true, target[0].IsSelected ); }