public static void Run() { // test config panel var bar = new Bar() { C = "sub" }; var foo = new Foo() { C = "c", D = true, E = 2.0, F = 2, G = bar }; var config = new ConfigurationPanel(foo); var copy = config.GetConfiguredObject() as Foo; if (!bar.HasEqualParameters(copy.G)) throw new Exception("Sub-object comparison failed!"); foo.G = copy.G = null; if (!foo.HasEqualParameters(copy)) throw new Exception("Main object comparison failed!"); var fprop = typeof(Foo).GetProperty("F"); config.SetterFor(fprop)(200); if ((int)config.GetterFor(fprop)() != 200) throw new Exception("Getter or setter failed!"); config.PropertyChanged += (args) => { if (args.Property != fprop) return; if ((int)args.Getter() > 150) args.Setter((int)args.Getter() - 2); }; config.SetterFor(fprop)(190); if ((int)config.GetterFor(fprop)() != 150) throw new Exception("PropertyChanged failed!"); // test derived type panel var derivedConfig = new DerivedTypeConfigurationPanel(typeof(Interface), bar); if (!new Bar() { C = "sub" }.HasEqualParameters((Bar)derivedConfig.GetConfiguredObject())) throw new Exception("DerivedTypeConfigurationPanel failed!"); var diffBar = new Bar() { C = "different" }; derivedConfig.SetConfiguredObject(diffBar); if (!diffBar.HasEqualParameters((Bar)derivedConfig.GetConfiguredObject())) throw new Exception("SetConfiguredObject failed!"); }
public static void Run() { var foo = new Foo(); var parameters = foo.GetParameters().ToIArray(); // check count if (parameters.Count != 2) throw new Exception("Bad parameter count: " + parameters.Count); // check default values foo.SetParametersToDefaultValues(); foreach (var param in parameters) if (param.HasDefaultValue() && !foo.GetProperty(param.Property).Equals(param.DefaultValue)) throw new Exception("Parameter " + param.Property.Name + " has value " + foo.GetProperty(param.Property) + " instead of default value " + param.DefaultValue); // check min/max foo.I = (int)parameters.Where(p => p.Description == "I").First().MinValue - 1; string errorMessage; if (foo.AreParameterValuesValid(out errorMessage)) throw new Exception("MinValue check failed!"); foo.I = (int)parameters.Where(p => p.Description == "I").First().MaxValue + 1; if (foo.AreParameterValuesValid(out errorMessage)) throw new Exception("MaxValue check failed!"); // check transfer foo.SetParametersToDefaultValues(); var foo2 = new Foo(); foo.TransferParameterValuesTo(foo2); foreach (var param in parameters) if (!foo.GetProperty(param.Property).Equals(foo2.GetProperty(param.Property))) throw new Exception("Property transfer failed on " + param.Property.Name); // check factory foo.S += "suffix"; var factory = foo.GetFactory(); for (int i = 0; i < 3; i++) { foo2 = (Foo)factory(); if (foo2.I != foo.I || foo2.S != foo.S) throw new Exception("Factory failed!"); } // check parameter equals foo.SetParametersToDefaultValues(); foo2.SetParametersToDefaultValues(); if (!foo.HasEqualParameters(foo2)) throw new Exception("Equals check failed on equal objects"); foo.S = "different"; if (foo.HasEqualParameters(foo2)) throw new Exception("Equals check failed on unequal objects"); // check description if (typeof(Foo).DisplayName() != "?") throw new Exception("DisplayName failed!"); if (typeof(Foo).Description() != "D") throw new Exception("Description failed!"); // check enum foreach (Enum value in Enum.GetValues(typeof(X))) if (!value.GetDescriptionForEnum().Description.Equals(value.ToString().ToLower())) throw new Exception("GetDescription for enum failed!"); }