+
+ [Test]
+ public void Text_DropDown ()
+ {
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("tr-TR");
+
+ ComboBox cmbbox = new ComboBox ();
+ Assert.IsNotNull (cmbbox.Text, "#A1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#A2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#A3");
+
+ cmbbox.Items.Add ("Another");
+ cmbbox.Items.Add ("Bad");
+ cmbbox.Items.Add ("IN");
+ cmbbox.Items.Add ("Combobox");
+ cmbbox.Items.Add ("BAD");
+ cmbbox.Items.Add ("iN");
+ cmbbox.Items.Add ("Bad");
+
+ Assert.IsNotNull (cmbbox.Text, "#B1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#B2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#B3");
+
+ cmbbox.SelectedIndex = 3;
+ Assert.IsNotNull (cmbbox.Text, "#C1");
+ Assert.AreEqual ("Combobox", cmbbox.Text, "#C2");
+ Assert.AreEqual (3, cmbbox.SelectedIndex, "#C3");
+
+ cmbbox.Text = string.Empty;
+ Assert.IsNotNull (cmbbox.Text, "#D1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#D2");
+ Assert.AreEqual (3, cmbbox.SelectedIndex, "#D3");
+
+ cmbbox.SelectedIndex = 1;
+ Assert.IsNotNull (cmbbox.Text, "#E1");
+ Assert.AreEqual ("Bad", cmbbox.Text, "#E2");
+ Assert.AreEqual (1, cmbbox.SelectedIndex, "#E3");
+
+ cmbbox.Text = null;
+ Assert.IsNotNull (cmbbox.Text, "#F1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#F2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#F3");
+
+ cmbbox.SelectedIndex = 0;
+ cmbbox.Text = "Q";
+ Assert.IsNotNull (cmbbox.Text, "#G1");
+ Assert.AreEqual ("Q", cmbbox.Text, "#G2");
+ Assert.AreEqual (0, cmbbox.SelectedIndex, "#G3");
+
+ cmbbox.Text = "B";
+ Assert.IsNotNull (cmbbox.Text, "#H1");
+ Assert.AreEqual ("B", cmbbox.Text, "#H2");
+ Assert.AreEqual (0, cmbbox.SelectedIndex, "#H3");
+
+ cmbbox.Text = "BAD";
+ Assert.IsNotNull (cmbbox.Text, "#I1");
+ Assert.AreEqual ("BAD", cmbbox.Text, "#I2");
+ Assert.AreEqual (4, cmbbox.SelectedIndex, "#I3");
+
+ cmbbox.Text = "BAD";
+ Assert.IsNotNull (cmbbox.Text, "#J1");
+ Assert.AreEqual ("BAD", cmbbox.Text, "#J2");
+ Assert.AreEqual (4, cmbbox.SelectedIndex, "#J3");
+
+ cmbbox.Text = "baD";
+ Assert.IsNotNull (cmbbox.Text, "#K1");
+ Assert.AreEqual ("Bad", cmbbox.Text, "#K2");
+ Assert.AreEqual (1, cmbbox.SelectedIndex, "#K3");
+
+ cmbbox.SelectedIndex = -1;
+ cmbbox.Text = "E";
+ Assert.IsNotNull (cmbbox.Text, "#L1");
+ Assert.AreEqual ("E", cmbbox.Text, "#L2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#L3");
+
+ cmbbox.Text = "iN";
+ Assert.IsNotNull (cmbbox.Text, "#M1");
+ Assert.AreEqual ("iN", cmbbox.Text, "#M2");
+ Assert.AreEqual (5, cmbbox.SelectedIndex, "#M3");
+
+ cmbbox.Text = "In";
+ Assert.IsNotNull (cmbbox.Text, "#N1");
+ Assert.AreEqual ("IN", cmbbox.Text, "#N2");
+ Assert.AreEqual (2, cmbbox.SelectedIndex, "#N3");
+
+ cmbbox.Text = "Badd";
+ Assert.IsNotNull (cmbbox.Text, "#O1");
+ Assert.AreEqual ("Badd", cmbbox.Text, "#O2");
+ Assert.AreEqual (2, cmbbox.SelectedIndex, "#O3");
+
+ cmbbox.SelectedIndex = -1;
+ Assert.IsNotNull (cmbbox.Text, "#P1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#P2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#P3");
+
+ cmbbox.Text = "Something";
+ Assert.IsNotNull (cmbbox.Text, "#Q1");
+ Assert.AreEqual ("Something", cmbbox.Text, "#Q2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#Q3");
+
+ cmbbox.SelectedIndex = -1;
+ Assert.IsNotNull (cmbbox.Text, "#R1");
+ Assert.AreEqual ("Something", cmbbox.Text, "#R2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#R3");
+
+ cmbbox.Text = null;
+ Assert.IsNotNull (cmbbox.Text, "#S1");
+ Assert.AreEqual (string.Empty, cmbbox.Text, "#S2");
+ Assert.AreEqual (-1, cmbbox.SelectedIndex, "#S3");
+ }
+
+ [Test] // bug 360862
+ public void SizeChangesAtCreateHandle ()
+ {
+ ComboBox cb = new ComboBox ();
+ cb.Font = new Font ("Arial", 24f);
+
+ int original = cb.Height;
+
+ IntPtr h = cb.Handle;
+
+ Assert.IsTrue (cb.Height > original, string.Format ("ComboBox height ({0}) should be bigger than original ({1})", cb.Height, original));
+ }
+
+ [Test]
+ public void Bug424270 ()
+ {
+ ComboBox cb = new ComboBox ();
+ cb.Items.Add ("ab");
+
+ cb.SelectedIndex = 0;
+
+ Assert.AreEqual (0, cb.SelectedIndex, "A1");
+ Assert.AreEqual ("ab", cb.SelectedItem, "A2");
+
+ cb.SelectedItem = null;
+
+ Assert.AreEqual (-1, cb.SelectedIndex, "A3");
+ Assert.AreEqual (null, cb.SelectedItem, "A4");
+ }
+
+#if NET_2_0
+ [Test]
+ public void BehaviorAutoSize ()
+ {
+ if (TestHelper.RunningOnUnix)
+ Assert.Ignore ("Depends on font measurements, corresponds to windows");
+
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+
+ f.Show ();
+
+ Image i = new Bitmap (20, 20);
+ String s = "My test string";
+
+ CheckBox b = new CheckBox ();
+ Size s_size = TextRenderer.MeasureText (s, b.Font);
+
+ b.UseCompatibleTextRendering = false;
+ b.Size = new Size (5, 5);
+ b.AutoSize = true;
+ b.Text = s;
+ f.Controls.Add (b);
+
+ // Text only
+ b.TextImageRelation = TextImageRelation.Overlay;
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + 4), b.Size, "A1");
+ b.TextImageRelation = TextImageRelation.ImageAboveText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + 4), b.Size, "A2");
+ b.TextImageRelation = TextImageRelation.ImageBeforeText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + 4), b.Size, "A3");
+ b.TextImageRelation = TextImageRelation.TextAboveImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + 4), b.Size, "A4");
+ b.TextImageRelation = TextImageRelation.TextBeforeImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + 4), b.Size, "A5");
+
+ // Text and Image
+ b.Image = i;
+ b.TextImageRelation = TextImageRelation.Overlay;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, i.Height), b.Size, "A6");
+ b.TextImageRelation = TextImageRelation.ImageAboveText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + i.Height + 4), b.Size, "A7");
+ b.TextImageRelation = TextImageRelation.ImageBeforeText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + i.Width + 19, i.Height), b.Size, "A8");
+ b.TextImageRelation = TextImageRelation.TextAboveImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + 19, s_size.Height + i.Height + 4), b.Size, "A9");
+ b.TextImageRelation = TextImageRelation.TextBeforeImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (s_size.Width + i.Width + 19, i.Height), b.Size, "A10");
+
+ // Image only
+ b.Text = string.Empty;
+ b.TextImageRelation = TextImageRelation.Overlay;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (i.Height + 15, i.Height), b.Size, "A11");
+ b.TextImageRelation = TextImageRelation.ImageAboveText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (i.Height + 15, i.Height), b.Size, "A12");
+ b.TextImageRelation = TextImageRelation.ImageBeforeText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (i.Height + 15, i.Height), b.Size, "A13");
+ b.TextImageRelation = TextImageRelation.TextAboveImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (i.Height + 15, i.Height), b.Size, "A14");
+ b.TextImageRelation = TextImageRelation.TextBeforeImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (i.Height + 15, i.Height), b.Size, "A15");
+
+ // Neither
+ b.Image = null;
+ b.TextImageRelation = TextImageRelation.Overlay;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (15, 14), b.Size, "A16");
+ b.TextImageRelation = TextImageRelation.ImageAboveText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (15, 14), b.Size, "A17");
+ b.TextImageRelation = TextImageRelation.ImageBeforeText;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (15, 14), b.Size, "A18");
+ b.TextImageRelation = TextImageRelation.TextAboveImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (15, 14), b.Size, "A19");
+ b.TextImageRelation = TextImageRelation.TextBeforeImage;
+ b.Size = new Size (5, 5);
+ Assert.AreEqual (new Size (15, 14), b.Size, "A20");
+
+ // Padding
+ b.Padding = new Padding (5, 10, 15, 20);
+ Assert.AreEqual (new Size (15 + b.Padding.Horizontal, 14 + b.Padding.Vertical), b.Size, "A21");
+
+ f.Dispose ();
+ }
+
+ [Test]
+ public void MethodScaleControl ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+
+ f.Show ();
+
+ PublicComboBox gb = new PublicComboBox ();
+ gb.Location = new Point (5, 10);
+ f.Controls.Add (gb);
+
+ Assert.AreEqual (new Rectangle (5, 10, 121, gb.PreferredHeight), gb.Bounds, "A1");
+
+ gb.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
+ Assert.AreEqual (new Rectangle (10, 20, 238, gb.PreferredHeight), gb.Bounds, "A2");
+
+ gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
+ Assert.AreEqual (new Rectangle (5, 10, 238, gb.PreferredHeight), gb.Bounds, "A3");
+
+ gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 121, gb.PreferredHeight), gb.Bounds, "A4");
+
+ gb.PublicScaleControl (new SizeF (3.5f, 3.5f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 414, gb.PreferredHeight), gb.Bounds, "A5");
+
+ gb.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 1029, gb.PreferredHeight), gb.Bounds, "A6");
+
+ gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 209, gb.PreferredHeight), gb.Bounds, "A7");
+
+ f.Dispose ();
+ }
+
+ private class PublicComboBox : ComboBox
+ {
+ public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
+ {
+ base.ScaleControl (factor, specified);
+ }
+ }
+#endif
+
+ private struct ComboVal
+ {
+ public string text;
+
+ public ComboVal (string t)
+ {
+ text = t;
+ }
+
+ public override string ToString ()
+ {
+ return text;
+ }
+ }
+
+ [Test]
+ public void SortTest ()
+ {
+ // Test sorting of objects with no IComparer
+ // should not crash
+
+ ComboBox cmb = new ComboBox ();
+ cmb.Items.Add (new ComboVal ("B"));
+ cmb.Items.Add (new ComboVal ("A"));
+ cmb.Sorted = true;
+ }
+ }
+