Index: src/Deltares.DSoilModel.Forms.Tests/ControlTester.cs =================================================================== diff -u -r343 -r350 --- src/Deltares.DSoilModel.Forms.Tests/ControlTester.cs (.../ControlTester.cs) (revision 343) +++ src/Deltares.DSoilModel.Forms.Tests/ControlTester.cs (.../ControlTester.cs) (revision 350) @@ -13,9 +13,10 @@ { public class ControlTester { - private readonly string CannotFindControlFormatString = "Cannot find {0} : {1} control."; private readonly string InitialValueMismatchString = "Initial value mismatch"; private readonly string ObjectDidntReceivedValueString = "The object didn't receive the value"; + private readonly string ClassFieldDoesNotExist = "Cannot find {0} in {1}"; + private readonly string ClassFieldValueDoesntMatchExpected = "Field {0} has {1} type what is different from {2}"; private KnownUnits knownUnits; private bool oldBypass; private LanguageType oldLanguage; @@ -52,23 +53,28 @@ LocalizationManager.CurrentLanguage = oldLanguage; } - protected object GetPrivateField(object obj, string field) + protected T GetPrivateField(object obj, string field) where T : class { - return obj.GetType().GetField(field, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj); + var fi = obj.GetType().GetField(field, BindingFlags.NonPublic | BindingFlags.Instance); + Assert.IsNotNull(fi, ClassFieldDoesNotExist, field, obj.GetType().Name); + + // even if we found the field it class can differ from expected + var value = fi.GetValue(obj); + Assert.IsInstanceOf(typeof (T), value, ClassFieldValueDoesntMatchExpected, field, value.GetType().Name, typeof(T).Name); + return value as T; } private object GetValue(T target, Expression> outExpr) { - var expr = (MemberExpression)outExpr.Body; - var prop = (PropertyInfo)expr.Member; + var expr = (MemberExpression) outExpr.Body; + var prop = (PropertyInfo) expr.Member; return prop.GetValue(target, null); } protected void TestControlVisibleEnabled(IPropertyControl parentControl, string spinEditName, bool isVisibleExpected, bool isEnabledExpected) { - var edit = GetPrivateField(parentControl, spinEditName) as Control; - Assert.IsNotNull(edit, CannotFindControlFormatString, spinEditName, ""); + var edit = GetPrivateField(parentControl, spinEditName); Assert.AreEqual(isVisibleExpected, edit.Visible, spinEditName + ": Visible-check failed"); Assert.AreEqual(isEnabledExpected, edit.Enabled, spinEditName + ": Enabled-check failed"); } @@ -78,8 +84,7 @@ TestControlVisibleEnabled(parentControl, spinEditName, isVisibleExpected, isEnabledExpected); if (isVisibleExpected) { - var edit = GetPrivateField(parentControl, spinEditName) as SpinEdit; - Assert.IsNotNull(edit, CannotFindControlFormatString, spinEditName, "SpinEdit"); + var edit = GetPrivateField(parentControl, spinEditName); var initialValue = GetValue(target, outExpr); Assert.AreEqual(initialValue, edit.Value, InitialValueMismatchString); @@ -99,8 +104,7 @@ TestControlVisibleEnabled(parentControl, textEditName, isVisibleExpected, isEnabledExpected); if (isVisibleExpected) { - var edit = GetPrivateField(parentControl, textEditName) as TextEdit; - Assert.IsNotNull(edit, CannotFindControlFormatString, textEditName, "TextEdit"); + var edit = GetPrivateField(parentControl, textEditName); var initialValue = GetValue(target, outExpr); Assert.AreEqual(initialValue, edit.EditValue, InitialValueMismatchString); @@ -117,16 +121,14 @@ protected void TestLabelControlVisibleValue(IPropertyControl parentControl, string labelControlName, bool isVisibleExpected, string labelTextExpected) { TestControlVisibleEnabled(parentControl, labelControlName, isVisibleExpected, true); // labels are always enabled in DSL projects - var labelControl = GetPrivateField(parentControl, labelControlName) as LabelControl; - Assert.IsNotNull(labelControl, CannotFindControlFormatString, labelControlName, "LabelControl"); + var labelControl = GetPrivateField(parentControl, labelControlName); Assert.AreEqual(labelTextExpected, labelControl.Text, InitialValueMismatchString); } protected void TestGridVisibleEnabledSize(IPropertyControl parentControl, string gridName, bool isVisibleExpected, bool isEnabledExpected, int rowCount, int colCount) { TestControlVisibleEnabled(parentControl, gridName, isVisibleExpected, isEnabledExpected); - var gridControl = GetPrivateField(parentControl, gridName) as GridViewControl; - Assert.IsNotNull(gridControl, CannotFindControlFormatString, gridName, "GridViewControl"); + var gridControl = GetPrivateField(parentControl, gridName); Assert.AreEqual(rowCount, gridControl.gridView1.RowCount, "Row count mismatch"); Assert.AreEqual(colCount, gridControl.gridView1.Columns.Count, "Columns count mismatch"); }