Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/28/12 16:40:03 (12 years ago)
Author:
mkommend
Message:

#1797:

  • Added parameter visibility test to the basic test list.
  • Changed parameter visibility test to use interfaces instead of classes for object discovery.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/ParameterVisibilityTest.cs

    r8121 r8154  
    2424using System.Reflection;
    2525using System.Text;
    26 using HeuristicLab.Common;
    2726using HeuristicLab.Core;
    28 using HeuristicLab.Data;
    29 using HeuristicLab.Parameters;
    3027using HeuristicLab.PluginInfrastructure;
    3128using Microsoft.VisualStudio.TestTools.UnitTesting;
     
    5956      foreach (var parameterizedItem in ApplicationManager.Manager.GetInstances<IParameterizedItem>()) {
    6057        foreach (var parameter in parameterizedItem.Parameters) {
    61           if (parameter.GetType().IsGenericType && parameter.GetType().GetGenericTypeDefinition() == typeof(ConstrainedValueParameter<>) ||
    62             parameter.GetType().IsGenericType && parameter.GetType().GetGenericTypeDefinition() == typeof(OptionalConstrainedValueParameter<>)) {
    63             var parameterGenericTypeArgument = parameter.GetType().GetGenericArguments().First();
    64             var parameterGenericTypeDefinition = typeof(IConstrainedValueParameter<>);
     58          var parameterType = parameter.GetType().GetInterfaces().FirstOrDefault(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IConstrainedValueParameter<>));
     59          if (parameterType == null) continue;
    6560
    66             var paramProperty = parameterizedItem.GetType().GetProperty(parameter.Name + "Parameter",
    67               BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
    68             var valueProperty = parameterizedItem.GetType().GetProperty(parameter.Name,
    69                                                                    BindingFlags.GetProperty | BindingFlags.Instance |
    70                                                                    BindingFlags.Public);
    71             if (paramProperty == null)
    72               errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
    73                 ": public property " + parameter.Name + "Parameter is missing.");
    74             else if (paramProperty.PropertyType.GetGenericTypeDefinition() != parameterGenericTypeDefinition)
    75               errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
    76                 ": public property " + parameter.Name + "Parameter type must be " + parameterGenericTypeDefinition.Name);
    77             else if (paramProperty.PropertyType.GetGenericArguments().First() != parameterGenericTypeArgument)
    78               errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
    79                 ": public property " + parameter.Name + "Parameter generic type argument does not match the generic type argument of the parameter.");
     61          var parameterGenericTypeArgument = parameterType.GetGenericArguments().First();
     62          var parameterGenericTypeDefinition = typeof(IConstrainedValueParameter<>);
    8063
    81             if (valueProperty == null)
    82               TestContext.WriteLine(parameterizedItem.GetType() + ": public property " + parameter.Name + " is missing.");
    83             else if (valueProperty.PropertyType != parameterGenericTypeArgument) {
    84               TestContext.WriteLine(parameterizedItem.GetType() + ": " + parameter.Name + " property type does not match the generic type argument of the parameter.");
    85             } else if (!valueProperty.CanRead || !valueProperty.CanWrite)
    86               TestContext.WriteLine(parameterizedItem.GetType() + ": public property " + parameter.Name + " must have a getter and a setter.");
    87           }
     64          var paramProperty = parameterizedItem.GetType().GetProperty(parameter.Name + "Parameter",
     65            BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
     66          var valueProperty = parameterizedItem.GetType().GetProperty(parameter.Name,
     67                                                                 BindingFlags.GetProperty | BindingFlags.Instance |
     68                                                                 BindingFlags.Public);
     69          if (paramProperty == null)
     70            errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
     71              ": public property " + parameter.Name + "Parameter is missing.");
     72          else if (paramProperty.PropertyType.GetGenericTypeDefinition() != parameterGenericTypeDefinition)
     73            errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
     74              ": public property " + parameter.Name + "Parameter type must be " + parameterGenericTypeDefinition.Name);
     75          else if (paramProperty.PropertyType.GetGenericArguments().First() != parameterGenericTypeArgument)
     76            errorMessage.Append(Environment.NewLine + parameterizedItem.GetType() +
     77              ": public property " + parameter.Name + "Parameter generic type argument does not match the generic type argument of the parameter.");
     78
     79          if (valueProperty == null)
     80            TestContext.WriteLine(parameterizedItem.GetType() + ": public property " + parameter.Name + " is missing.");
     81          else if (valueProperty.PropertyType != parameterGenericTypeArgument) {
     82            TestContext.WriteLine(parameterizedItem.GetType() + ": " + parameter.Name + " property type does not match the generic type argument of the parameter.");
     83          } else if (!valueProperty.CanRead || !valueProperty.CanWrite)
     84            TestContext.WriteLine(parameterizedItem.GetType() + ": public property " + parameter.Name + " must have a getter and a setter.");
    8885        }
    8986      }
Note: See TracChangeset for help on using the changeset viewer.