Inheritance: System.Windows.Controls.ComboBox, IPoker
Example #1
0
		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 ());
				}
			);
		}
Example #2
0
		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");
		}
Example #3
0
		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 ()))
			);
		}
Example #4
0
		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");
		}
Example #5
0
		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");
		}
Example #6
0
		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");
		}
Example #7
0
		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");
		}
Example #8
0
		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");
				}
			);
		}
Example #9
0
		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
				}
			);
		}
Example #10
0
		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");
		}
Example #11
0
		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");
		}
Example #12
0
		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);
		}
Example #13
0
		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");
		}
Example #14
0
		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");
		}
Example #15
0
		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 ();
		}
Example #16
0
		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);
		}
Example #17
0
		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");
		}
Example #18
0
		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 ();
		}