/// <summary> /// Provides <see cref="IStepNameInfo"/> object containing information about step name represented by <paramref name="stepDescriptor"/>. /// The <paramref name="previousStepTypeName"/> represents the step type name of previous step. /// <para> /// The <see cref="IStepNameInfo.StepTypeName"/> is determined from value <see cref="StepDescriptor.PredefinedStepType"/> or parsed from <see cref="StepDescriptor.RawName"/> if former is <c>null</c>. /// When determined step type is the same as <paramref name="previousStepTypeName"/>, it is being replaced with <see cref="StepTypeConfiguration.RepeatedStepReplacement"/>. /// </para> /// See also: <seealso cref="StepTypeConfiguration"/>, <seealso cref="LightBddConfiguration"/>. /// </summary> /// <param name="stepDescriptor">Step descriptor.</param> /// <param name="previousStepTypeName">Step type name of previous step, or <c>null</c> if current step is first one.</param> /// <returns><see cref="IStepNameInfo"/> object.</returns> public IStepNameInfo GetStepName(StepDescriptor stepDescriptor, string previousStepTypeName) { var formattedStepName = _nameParser.GetNameFormat(stepDescriptor.MethodInfo, stepDescriptor.RawName, stepDescriptor.Parameters); return(new StepNameInfo( _stepTypeProcessor.GetStepTypeName(stepDescriptor.PredefinedStepType, ref formattedStepName, previousStepTypeName), formattedStepName, stepDescriptor.Parameters.Select(p => NameParameterInfo.Unknown).ToArray())); }