public void Test_ToString () { var mib = new MenuItemBinding (); Assert.AreEqual ("(Empty)", mib.ToString (), "#A1"); foreach (var entry in toStringValues) ToStringTestProperty (entry.Key, entry.Value); }
void ToStringTestProperty (string propertyName, string expectedValue) { PropertyInfo pi = typeof (MenuItemBinding).GetProperty (propertyName, BindingFlags.Instance | BindingFlags.Public); if (pi == null) Assert.Fail ("Property '{0}' not found.", propertyName); object defaultValue = null; object[] attrs = pi.GetCustomAttributes (typeof (DefaultValueAttribute), false); Type t = pi.PropertyType; if (attrs != null && attrs.Length > 0) { var dva = attrs [0] as DefaultValueAttribute; defaultValue = dva.Value; } else { if (t == typeof (string)) defaultValue = String.Empty; else if (t == typeof (bool)) defaultValue = false; else if (t == typeof (int)) defaultValue = Int32.MaxValue; else Assert.Fail ("Unsupported return type '{0}' for property '{1}'", t.FullName, propertyName); } object setToValue = null; if (t == typeof (string)) { string v = defaultValue as String; if (v == String.Empty || v != "value") setToValue = "value"; else setToValue = "value123"; } else if (t == typeof (bool)) { bool v = (bool) defaultValue; if (v) setToValue = false; else setToValue = true; } else if (t == typeof (int)) { int v = (int) defaultValue; if (v == Int32.MaxValue) v = Int32.MinValue; else v = Int32.MaxValue; } else Assert.Fail ("Unsupported return type '{0}' for property '{1}'", t.FullName, propertyName); var mib = new MenuItemBinding (); pi.SetValue (mib, setToValue, null); Assert.AreEqual (expectedValue, mib.ToString (), propertyName); }