context: //
  // ToolStripComboBoxTests.cs
  //
  // Permission is hereby granted, free of charge, to any person obtaining
  // a copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to
  // permit persons to whom the Software is furnished to do so, subject to
  // the following conditions:
  // 
  // The above copyright notice and this permission notice shall be
  // included in all copies or substantial portions of the Software.
  // 
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  //
  // Copyright (c) 2006 Jonathan Pobst
  //
  // Authors:
  //	Jonathan Pobst (monkey@jpobst.com)
  //
  #if NET_2_0
  using System;
  using System.Collections.Generic;
  using System.Text;
  using NUnit.Framework;
  using System.Drawing;
  using System.Windows.Forms;
  
  namespace MonoTests.System.Windows.Forms
  {
  	[TestFixture]
  	public class ToolStripComboBoxTests : TestHelper
  	{
  		[Test]
  		public void Constructor ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  
  			//Assert.AreEqual ("System.Windows.Forms.AutoCompleteStringCollection", tsi.AutoCompleteCustomSource.GetType ().ToString (), "A1");
  			//Assert.AreEqual (AutoCompleteMode.None, tsi.AutoCompleteMode, "A2");
  			//Assert.AreEqual (AutoCompleteSource.None, tsi.AutoCompleteSource, "A3");
  			Assert.AreEqual ("System.Windows.Forms.ToolStripComboBox+ToolStripComboBoxControl", tsi.ComboBox.GetType ().ToString (), "A4");
  			//Assert.AreEqual (106, tsi.DropDownHeight, "A5");
  			Assert.AreEqual (ComboBoxStyle.DropDown, tsi.DropDownStyle, "A6");
  			Assert.AreEqual (121, tsi.DropDownWidth, "A7");
  			Assert.AreEqual (false, tsi.DroppedDown, "A8");
  			Assert.AreEqual (FlatStyle.Popup, tsi.FlatStyle, "A9");
  			Assert.AreEqual (true, tsi.IntegralHeight, "A10");
  			Assert.AreEqual ("System.Windows.Forms.ComboBox+ObjectCollection", tsi.Items.ToString (), "A11");
  			Assert.AreEqual (8, tsi.MaxDropDownItems, "A12");
  			Assert.AreEqual (0, tsi.MaxLength, "A13");
  			Assert.AreEqual (-1, tsi.SelectedIndex, "A14");
  			Assert.AreEqual (null, tsi.SelectedItem, "A15");
  			Assert.AreEqual (string.Empty, tsi.SelectedText, "A16");
  			Assert.AreEqual (0, tsi.SelectionLength, "A17");
  			Assert.AreEqual (0, tsi.SelectionStart, "A18");
  			Assert.AreEqual (false, tsi.Sorted, "A19");
  
  			tsi = new ToolStripComboBox ("Bob");
  			Assert.AreEqual ("Bob", tsi.Name, "A20");
  			Assert.AreEqual (string.Empty, tsi.Control.Name, "A21");
  		}
  	
  		[Test]
  		[ExpectedException (typeof (NotSupportedException))]
  		public void ConstructorNSE ()
  		{
  			new ToolStripComboBox (new ComboBox ());
  		}
  		
  		[Test]
  		public void ProtectedProperties ()
  		{
  			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
  
  			Assert.AreEqual (new Padding (1, 0, 1, 0), epp.DefaultMargin, "C1");
  			Assert.AreEqual (new Size (100, 22), epp.DefaultSize, "C2");
  		}
  
  		//[Test]
  		//public void PropertyAutoCompleteCustomSource ()
  		//{
  		//        ToolStripComboBox tsi = new ToolStripComboBox ();
  		//        EventWatcher ew = new EventWatcher (tsi);
  
  		//        AutoCompleteStringCollection acsc = new AutoCompleteStringCollection ();
  		//        acsc.AddRange (new string[] { "Apple", "Banana" });
  
  		//        tsi.AutoCompleteCustomSource = acsc;
  		//        Assert.AreSame (acsc, tsi.AutoCompleteCustomSource, "B1");
  		//        Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  		//        ew.Clear ();
  		//        tsi.AutoCompleteCustomSource = acsc;
  		//        Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		//}
  
  		[Test]
  		public void PropertyDropDownHeight ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.DropDownHeight = 42;
  			Assert.AreEqual (42, tsi.DropDownHeight, "B1");
  			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.DropDownHeight = 42;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyDropDownStyle ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.DropDownStyle = ComboBoxStyle.Simple;
  			Assert.AreEqual (ComboBoxStyle.Simple, tsi.DropDownStyle, "B1");
  			Assert.AreEqual ("DropDownStyleChanged", ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.DropDownStyle = ComboBoxStyle.Simple;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyDropDownWidth ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.DropDownWidth = 42;
  			Assert.AreEqual (42, tsi.DropDownWidth, "B1");
  			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.DropDownWidth = 42;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyDroppedDown ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.DroppedDown = true;
  			Assert.AreEqual (true, tsi.DroppedDown, "B1");
  			Assert.AreEqual ("DropDown", ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.DroppedDown = true;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyFlatStyle ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.FlatStyle = FlatStyle.System;
  			Assert.AreEqual (FlatStyle.System, tsi.FlatStyle, "B1");
  			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.FlatStyle = FlatStyle.System;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyIntegralHeight ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.IntegralHeight = false;
  			Assert.AreEqual (false, tsi.IntegralHeight, "B1");
  			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.IntegralHeight = false;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyMaxDropDownItems ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.MaxDropDownItems = 12;
  			Assert.AreEqual (12, tsi.MaxDropDownItems, "B1");
  			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
  
  			ew.Clear ();
  			tsi.MaxDropDownItems = 12;
  			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
  		}
  
  		[Test]
  		public void PropertyMaxLength ()
  		{
  			ToolStripComboBox tsi = new ToolStripComboBox ();
  			EventWatcher ew = new EventWatcher (tsi);
  
  			tsi.MaxLength = 42;
  
gt: 			Assert.AreEqual (42, tsi.MaxLength, "B1");