public void GetParameterFormatter_should_honor_multiple_parameter_formatters() { var parameter = ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_multiple_formatters_on_argument); var formatter = GetMetadataProvider().GetParameterFormatter(parameter); Assert.That(formatter(3), Is.EqualTo("--3--")); }
public void GetParameterFormatter_should_honor_custom_attribute_formatters_for_collection_items() { var parameter = ParameterInfoHelper.GetMethodParameter <bool[]>(Step_with_custom_formatter_for_collection_item); var formatter = GetMetadataProvider().GetParameterFormatter(parameter); Assert.That(formatter(new[] { true, false }), Is.EqualTo("On, Off")); }
public void GetStepParameterFormatter_should_throw_if_multiple_parameter_formatters_are_declared_on_parameter() { var parameter = ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_incorrectly_formatted_argument); var ex = Assert.Throws <InvalidOperationException>(() => _metadataProvider.GetParameterFormatter(parameter)); Assert.That(ex.Message, Is.EqualTo($"Parameter can contain only one attribute ParameterFormatterAttribute. Parameter: argument, Detected attributes: {nameof(CustomFormatterAttribute)}, {nameof(FormatAttribute)}")); }
public void GetParameterFormatter_should_honor_custom_formatters_then_explicit_then_formattable_then_general_then_ToString() { var config = new ValueFormattingConfiguration() .RegisterFrameworkDefaultGeneralFormatters() .RegisterExplicit(typeof(bool), new FormatAttribute(">{0}<")) .RegisterExplicit(typeof(int), new FormatAttribute("i{0}")) .RegisterExplicit(typeof(MyFormattable2), new FormatAttribute("my-explicit2")) .RegisterGeneral(new MyStructFormatter()); var parameter = ParameterInfoHelper.GetMethodParameter <object[]>(Step_with_custom_formatters); var formatter = GetMetadataProvider(config).GetParameterFormatter(parameter); var values = new object[] { null, // null 5, // explicit int true, // [FormatBoolean] overriding explicit bool 5.5, // general struct new MyClass(), // toString new MyFormattable1(), // [Format] new MyFormattable2(), // explicit formatter new MyFormattable3() // ISelfFormattable }; Assert.That(formatter(values), Is.EqualTo("#<null> | #i5 | #On | #s5.5 | #my-class | #my-custom-format1 | #my-explicit2 | #my3")); }
public void It_should_format_step_parameters_with_specified_formatter(string cultureInfo, double parameter, string expectedFormattedParameter) { var parameterInfo = ParameterInfoHelper.GetMethodParameter <double>(Step_with_parameter); var formatter = new TestMetadataProvider(new DefaultNameFormatter(), new StepTypeConfiguration(), new TestCultureInfoProvider(new CultureInfo(cultureInfo))) .GetParameterFormatter(parameterInfo); Assert.That(formatter.Invoke(parameter), Is.EqualTo(expectedFormattedParameter)); }
public void GetValueFormattingService_should_format_values() { var parameter = ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_multiple_formatters_on_argument); #pragma warning disable CS0618 // Type or member is obsolete var formatter = GetMetadataProvider().GetParameterFormatter(parameter); #pragma warning restore CS0618 // Type or member is obsolete Assert.That(formatter.Invoke(3), Is.EqualTo("--3--")); }
public void GetParameterFormatter_should_capture_parameter_formatters() { var parameter1 = ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_argument); var parameter2 = ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_formatted_argument); var formatter1 = GetMetadataProvider().GetParameterFormatter(parameter1); var formatter2 = GetMetadataProvider().GetParameterFormatter(parameter2); Assert.That(formatter1.Invoke(5), Is.EqualTo($"{5}")); Assert.That(formatter2.Invoke(3), Is.EqualTo($"--{3}--")); }
public void It_should_format_step_parameters_with_specified_formatter(string cultureInfo, double parameter, string expectedFormattedParameter) { var parameterInfo = ParameterInfoHelper.GetMethodParameter <double>(Step_with_parameter); var metadataProvider = new TestMetadataProvider(cfg => cfg.CultureInfoProviderConfiguration() .UpdateCultureInfoProvider(new TestCultureInfoProvider(new CultureInfo(cultureInfo)))); var formatter = metadataProvider.GetValueFormattingServiceFor(parameterInfo); Assert.That(formatter.FormatValue(parameter), Is.EqualTo(expectedFormattedParameter)); }
public void GetParameterFormatter_should_format_collection_honoring_null_values() { void Step(string[] collection) { } var parameter = ParameterInfoHelper.GetMethodParameter <string[]>(Step); var formatter = GetMetadataProvider().GetParameterFormatter(parameter); Assert.That(formatter(new[] { "abc", null, "def" }), Is.EqualTo("abc, <null>, def")); }
public void GetParameterFormatter_should_format_null() { void Step(string[] collection) { } var parameter = ParameterInfoHelper.GetMethodParameter <string[]>(Step); var formatter = GetMetadataProvider().GetParameterFormatter(parameter); Assert.That(formatter(null), Is.EqualTo("<null>")); }
public void GetStepName_should_capture_name_from_step_descriptor_but_leave_parameters_unknown() { var descriptor = new StepDescriptor( "given", nameof(Feature_type.Some_step_with_argument), (o, a) => Task.FromResult(0), ParameterDescriptor.FromConstant(ParameterInfoHelper.GetMethodParameter <int>(new Feature_type().Some_step_with_argument), 5)); var stepName = _metadataProvider.GetStepName(descriptor, null); Assert.That(stepName.StepTypeName.ToString(), Is.EqualTo("GIVEN")); Assert.That(stepName.NameFormat, Is.EqualTo("Some step with argument \"{0}\"")); Assert.That(stepName.ToString(), Is.EqualTo("GIVEN Some step with argument \"<?>\"")); }
public void GetParameterFormatter_should_format_dictionaries_honoring_null_values() { void Step(Dictionary <string, string> collection) { } var parameter = ParameterInfoHelper.GetMethodParameter <Dictionary <string, string> >(Step); var formatter = GetMetadataProvider().GetParameterFormatter(parameter); var dict = new Dictionary <string, string> { { "0", null }, { "abc", null }, { "def", "value" } }; Assert.That(formatter(dict), Is.EqualTo("0: <null>, abc: <null>, def: value")); }