public void ContainerItemTest5 () { ComboBoxPoker box = new ComboBoxPoker (); box.ApplyTemplate (); box.ContainerItem = new ComboBoxItem (); CreateAsyncTest (box, () => box.IsDropDownOpen = true, () => { box.Items.Add (new object ()); }, () => { box.Items.Add (new object ()); } ); }
public void AddTest () { ComboBoxPoker box = new ComboBoxPoker (); box.Items.Add ("blah"); Assert.AreEqual (1, box.methods.Count, "#1"); Assert.AreEqual ("OnItemsChanged", box.methods [0].MethodName, "#2"); NotifyCollectionChangedEventArgs e = (NotifyCollectionChangedEventArgs) box.methods [0].MethodParams [0]; Assert.AreEqual (null, e.OldItems, "#3"); Assert.AreEqual (-1, e.OldStartingIndex, "#4"); Assert.IsNotNull (e.NewItems, "#5"); Assert.AreEqual (1, e.NewItems.Count, "#6"); Assert.AreEqual ("blah", e.NewItems [0], "#7"); Assert.AreEqual (0, e.NewStartingIndex, "#8"); }
public void ContainerItemTest4 () { ComboBoxPoker box = new ComboBoxPoker (); box.ApplyTemplate (); box.ContainerItem = new Rectangle (); CreateAsyncTest (box, () => box.IsDropDownOpen = true, () => Assert.Throws<InvalidCastException> (() => box.Items.Add (new object ())) ); }
public void InsertTest () { object orig = new object (); ComboBoxPoker c = new ComboBoxPoker (); c.Items.Add (orig); c.SelectedIndex = 0; c.methods.Clear (); c.Items.Insert (0, new object ()); // WTF? Why is there a remove, then add, then replace? Surely this is just a replace... Assert.AreEqual (1, c.methods.Count, "#1"); Assert.AreEqual ("OnItemsChanged", c.methods [0].MethodName, "#2"); Assert.AreEqual (NotifyCollectionChangedAction.Add, ((NotifyCollectionChangedEventArgs) c.methods [0].MethodParams [0]).Action, "#3"); Assert.AreEqual (1, c.SelectedIndex, "#8"); Assert.AreEqual (orig, c.SelectedItem, "#9"); }
public void TestOverrides () { ComboBoxPoker b = new ComboBoxPoker (); object o = new object (); b.Items.Add (o); Assert.AreEqual (0, b.Items.IndexOf (b.Items [0]), "#0"); Assert.AreEqual (1, b.methods.Count, "#1"); Assert.AreEqual ("OnItemsChanged", b.methods [0].MethodName, "#2"); b.IsDropDownOpen = true; Assert.AreEqual ("OnDropDownOpened", b.methods [1].MethodName, "#3"); Assert.AreEqual ("DropDownOpenedEvent", b.methods [2].MethodName, "#4"); b.IsDropDownOpen = false; Assert.AreEqual ("OnDropDownClosed", b.methods [3].MethodName, "#5"); Assert.AreEqual ("DropDownClosedEvent", b.methods [4].MethodName, "#6"); b.SelectedItem = new object (); Assert.AreEqual (5, b.methods.Count, "#7"); b.SelectedItem = b.Items [0]; Assert.AreEqual (6, b.methods.Count, "#8"); Assert.AreEqual ("SelectionChangedEvent", b.methods [5].MethodName); b.SelectedIndex = -1; Assert.AreEqual (null, b.SelectedItem, "#9"); Assert.AreEqual (7, b.methods.Count, "#10"); Assert.AreEqual ("SelectionChangedEvent", b.methods [6].MethodName, "#11"); b.SelectedItem = b.Items [0]; b.methods.Clear (); b.Items.RemoveAt (0); Assert.AreEqual (2, b.methods.Count, "#12"); Assert.AreEqual ("OnItemsChanged", b.methods [0].MethodName, "#13"); Assert.AreEqual ("SelectionChangedEvent", b.methods [1].MethodName, "#14"); Assert.IsNull (b.SelectedItem, "#15"); Assert.AreEqual (-1, b.SelectedIndex, "#16"); }
public void RemoveTest2 () { object orig = new object (); ComboBoxPoker c = new ComboBoxPoker (); c.Items.Add (orig); c.Items.Add (new object ()); c.Items.Add (new object ()); c.SelectedIndex = 0; c.methods.Clear (); c.Items.RemoveAt (0); Assert.AreEqual (2, c.methods.Count, "#1"); // Fails in Silverlight 3 Assert.AreEqual ("OnItemsChanged", c.methods [0].MethodName, "#2"); Assert.AreEqual ("SelectionChangedEvent", c.methods [1].MethodName, "#3"); Assert.AreEqual (NotifyCollectionChangedAction.Remove, ((NotifyCollectionChangedEventArgs) c.methods [0].MethodParams [0]).Action, "#4"); Assert.AreEqual (-1, c.SelectedIndex, "#5"); Assert.IsNull (c.SelectedItem, "#6"); }
public void ClearTest () { ComboBoxPoker c = new ComboBoxPoker (); c.Items.Add (new object ()); c.Items.Add (new object ()); c.Items.Add (new object ()); c.SelectedIndex = 0; c.methods.Clear (); // What happens when we clear the items c.Items.Clear (); Assert.IsNull (c.SelectedItem, "#1"); Assert.AreEqual (-1, c.SelectedIndex, "#2"); Assert.AreEqual (2, c.methods.Count); Assert.AreEqual ("OnItemsChanged", c.methods [0].MethodName, "#3"); Assert.AreEqual ("SelectionChangedEvent", c.methods [1].MethodName, "#4"); }
public void SelectThenClear () { ComboBoxPoker box = new ComboBoxPoker (); CreateAsyncTest (box, () => box.ApplyTemplate (), () => { box.Items.Add (new object ()); box.Items.Add (new object ()); box.Items.Add (new object ()); }, () => { box.IsDropDownOpen = true; }, () => { box.SelectedItem = box.Items [0]; }, () => { box.methods.Clear (); box.Items.Clear (); Assert.AreEqual (5, box.methods.Count, "#0"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [0].MethodName, "#1"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [1].MethodName, "#2"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [2].MethodName, "#3"); Assert.AreEqual ("OnItemsChanged", box.methods [3].MethodName, "#5"); Assert.AreEqual ("SelectionChangedEvent", box.methods [4].MethodName, "#6"); Assert.IsNull (box.SelectedItem, "#7"); } ); }
public void SelectThenClear2 () { ComboBoxPoker box = new ComboBoxPoker (); CreateAsyncTest (box, () => box.ApplyTemplate (), () => { box.Items.Add (new object ()); box.Items.Add (new object ()); box.Items.Add (new object ()); }, // Check to see if the items are cleared in the reverse order they were added in () => { box.IsDropDownOpen = true; }, () => { box.SelectedItem = box.Items.Last (); }, () => { box.methods.Clear (); box.Items.Clear (); Assert.AreEqual (5, box.methods.Count, "#0"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [0].MethodName, "#1"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [1].MethodName, "#2"); Assert.AreEqual ("ClearContainerForItemOverride", box.methods [2].MethodName, "#3"); Assert.AreEqual ("OnItemsChanged", box.methods [3].MethodName, "#4"); Assert.AreEqual ("SelectionChangedEvent", box.methods [4].MethodName, "#5"); // Fails in Silverlight 3 } ); }
public void SelectedItemTest2 () { ComboBoxPoker box = new ComboBoxPoker (); object o = new object (); box.Items.Add (o); box.SelectedItem = o; box.methods.Clear (); box.SelectedItem = null; Assert.AreEqual (1, box.methods.Count, "#1"); Assert.AreEqual ("SelectionChangedEvent", box.methods [0].MethodName, "#2"); Assert.AreEqual (null, box.SelectedItem, "#3"); Assert.AreEqual (-1, box.SelectedIndex, "#4"); }
public void SelectedItemTest3 () { ComboBoxPoker box = new ComboBoxPoker (); object o = new object (); box.Items.Add (o); box.SelectedItem = o; box.methods.Clear (); box.SelectedIndex = -1; Assert.AreEqual (1, box.methods.Count, "#1"); Assert.AreEqual ("SelectionChangedEvent", box.methods [0].MethodName, "#2"); Assert.AreEqual (null, box.SelectedItem, "#3"); Assert.AreEqual (-1, box.SelectedIndex, "#4"); SelectionChangedEventArgs e = (SelectionChangedEventArgs) box.methods [0].ReturnValue; Assert.AreEqual (o, e.RemovedItems [0], "#5"); Assert.AreEqual (0, e.AddedItems.Count, "#6"); }
public void SelectedItemTest () { ComboBoxPoker box = new ComboBoxPoker (); Assert.AreEqual (-1, box.SelectedIndex, "#1"); Assert.AreEqual (null, box.SelectedItem, "#2"); box.SelectedItem = new object (); Assert.AreEqual (-1, box.SelectedIndex, "#3"); Assert.AreEqual (null, box.SelectedItem, "#4"); object a = new object (); object b = new object (); object c = new object (); box.Items.Add (a); box.Items.Add (b); box.Items.Add (c); box.SelectedItem = new object (); Assert.AreEqual (-1, box.SelectedIndex, "#5"); Assert.AreEqual (null, box.SelectedItem, "#6"); box.SelectedItem = a; Assert.AreEqual (0, box.SelectedIndex, "#7"); Assert.AreEqual (a, box.SelectedItem, "#8"); box.SelectedIndex = -1; Assert.AreEqual (-1, box.SelectedIndex, "#9"); Assert.AreEqual (null, box.SelectedItem, "#10"); box.SelectedItem = a; box.SelectedItem = b; Assert.AreEqual (1, box.SelectedIndex, "#11"); Assert.AreEqual (b, box.SelectedItem, "#12"); Assert.AreEqual (7, box.methods.Count, "#13"); int i = 0; Assert.AreEqual ("OnItemsChanged", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("OnItemsChanged", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("OnItemsChanged", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("SelectionChangedEvent", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("SelectionChangedEvent", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("SelectionChangedEvent", box.methods [i++].MethodName, "#14." + i); Assert.AreEqual ("SelectionChangedEvent", box.methods [i++].MethodName, "#14." + i); }
public void ReplaceTest () { object orig = new object (); ComboBoxPoker c = new ComboBoxPoker (); c.Items.Add (orig); c.SelectedIndex = 0; c.methods.Clear (); c.Items [0] = new object (); Assert.AreEqual (2, c.methods.Count, "#1"); Assert.AreEqual ("OnItemsChanged", c.methods [0].MethodName, "#2"); Assert.AreEqual (NotifyCollectionChangedAction.Replace, ((NotifyCollectionChangedEventArgs) c.methods [0].MethodParams [0]).Action, "#3"); Assert.AreEqual ("SelectionChangedEvent", c.methods [1].MethodName, "#4"); SelectionChangedEventArgs args = (SelectionChangedEventArgs)c.methods[1].ReturnValue; Assert.AreEqual (0, args.AddedItems.Count, "#5"); Assert.AreEqual (1, args.RemovedItems.Count, "#6"); Assert.AreEqual (orig, args.RemovedItems[0], "#7"); Assert.AreEqual (-1, c.SelectedIndex, "#8"); Assert.IsNull (c.SelectedItem, "#9"); }
public void RemoveTest3 () { Rectangle orig = new Rectangle (); ComboBoxPoker c = new ComboBoxPoker (); c.Items.Add (orig); c.SelectedIndex = 0; c.Items.RemoveAt (0); Assert.AreEqual (-1, c.SelectedIndex, "#1"); // Fails in Silverlight 3 Assert.IsNull (c.SelectedItem, "#2"); Assert.IsNull (orig.Parent, "#3"); Assert.IsNull (VisualTreeHelper.GetParent (orig), "#4"); }
public void ItemParentTest5 () { bool loaded = false; bool opened = false; Rectangle content = new Rectangle { Fill = new SolidColorBrush (Colors.Brown), Width = 100, Height = 50 }; ComboBoxPoker box = new ComboBoxPoker { Width = 50, Height = 50 }; ComboBoxItem item = new ComboBoxItem { Content = content }; StringBuilder sb = new StringBuilder (); box.DropDownOpened += delegate { opened = true; }; box.DropDownClosed += delegate { opened = false; }; box.Items.Add (item); box.SelectedIndex = 0; box.Loaded += delegate { loaded = true; }; TestPanel.Children.Add (box); EnqueueConditional (() => loaded); Enqueue (() => box.ApplyTemplate ()); Enqueue (() => box.IsDropDownOpen = true); EnqueueConditional (() => opened); Enqueue (() => Assert.IsNotNull (VisualTreeHelper.GetParent (item), "#0")); Enqueue (() => Assert.IsInstanceOfType<StackPanel> (VisualTreeHelper.GetParent (item), "#1")); Enqueue (() => Assert.AreSame (box, item.Parent, "#2")); Enqueue (() => Assert.AreEqual (content, item.Content, "#2b")); Enqueue (() => Assert.AreEqual (item, content.Parent, "2c")); Enqueue (() => Assert.IsInstanceOfType<ContentPresenter> (VisualTreeHelper.GetParent ((Rectangle) item.Content), "#3")); Enqueue (() => Assert.AreSame (item, ((Rectangle) item.Content).Parent, "#4")); Enqueue (() => box.IsDropDownOpen = false); EnqueueConditional (() => !opened, "#5"); Enqueue (() => Assert.IsNotNull (VisualTreeHelper.GetParent (item), "#6")); Enqueue (() => Assert.IsInstanceOfType<StackPanel> (VisualTreeHelper.GetParent (item), "#6b")); Enqueue (() => Assert.AreSame (box, item.Parent, "#7")); Enqueue (() => Assert.IsNull (item.Content, "#8")); EnqueueTestComplete (); }
public void AddTest2 () { ComboBoxPoker c = new ComboBoxPoker (); Assert.AreEqual (-1, c.SelectedIndex); c.Items.Add (new object ()); Assert.AreEqual (-1, c.SelectedIndex); c.SelectedIndex = 0; c.Items.Add (new object ()); Assert.AreEqual (0, c.SelectedIndex); }
public void ItemsChangedTest () { // Are SelectedItem and SelectedIndex updated in the base method or before it's invoked? ComboBoxPoker c = new ComboBoxPoker { CallBaseOnItemsChanged = false }; c.Items.Add (new object ()); c.methods.Clear (); c.SelectedItem = c.Items [0]; Assert.AreEqual (0, c.SelectedIndex, "#1"); Assert.AreEqual (c.Items [0], c.SelectedItem, "#2"); c.Items.Insert (0, new object ()); Assert.AreEqual (0, c.SelectedIndex, "#3"); Assert.AreEqual (c.Items [1], c.SelectedItem, "#4"); }
public void OnDropDownMethodsTest () { bool opened = false; ComboBoxPoker box = new ComboBoxPoker { CallBaseOnDropDown = false }; TestPanel.Children.Add (box); box.DropDownOpened += delegate { opened = true; }; box.ApplyTemplate (); Enqueue (() => { box.IsDropDownOpen = true; }); Enqueue (() => { try { Assert.IsFalse (opened, "#1"); Assert.IsTrue (box.TemplatePopup.IsOpen, "#2"); } finally { box.IsDropDownOpen = false; } }); EnqueueTestComplete (); }