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));
        }
Ejemplo n.º 6
0
        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"));
        }