public void convert_executes_steps_in_order()
        {
            var converter      = new MultiConverterGroup();
            var values         = new object[] { "abc", 123 };
            var targetType     = typeof(int);
            var parameter      = "parameter";
            var cultureInfo    = new CultureInfo("de-DE");
            var converterMock1 = new Mock <IMultiValueConverter>();

            converterMock1.Setup(x => x.Convert(values, targetType, parameter, cultureInfo)).Returns("converted value1");
            var converterMock2 = new Mock <IMultiValueConverter>();

            converterMock2.Setup(x => x.Convert(values, targetType, parameter, cultureInfo)).Returns("converted value2");
            var converterMock3 = new Mock <IMultiValueConverter>();

            converterMock3.Setup(x => x.Convert(new object[] { "converted value1", "converted value2" }, targetType, parameter, cultureInfo)).Returns("final converted value");
            var step1 = new MultiConverterGroupStep();

            step1.Converters.Add(converterMock1.Object);
            step1.Converters.Add(converterMock2.Object);
            var step2 = new MultiConverterGroupStep();

            step2.Converters.Add(converterMock3.Object);
            converter.Steps.Add(step1);
            converter.Steps.Add(step2);

            Assert.Equal("final converted value", converter.Convert(values, targetType, parameter, cultureInfo));
        }
        public void convert_throws_if_last_step_has_more_than_one_converter_in_it()
        {
            var converter = new MultiConverterGroup();
            var step1 = new MultiConverterGroupStep();
            var step2 = new MultiConverterGroupStep();
            step1.Converters.Add(new Mock<IMultiValueConverter>().Object);
            step1.Converters.Add(new Mock<IMultiValueConverter>().Object);
            step2.Converters.Add(new Mock<IMultiValueConverter>().Object);
            step2.Converters.Add(new Mock<IMultiValueConverter>().Object);
            converter.Steps.Add(step1);
            converter.Steps.Add(step2);

            var ex = Assert.Throws<InvalidOperationException>(() => converter.Convert(new object[] { }, null, null, null));
            Assert.Equal("The final step in a MultiConverterGroup must have a single converter added to it.", ex.Message);
        }
        public void convert_throws_if_last_step_has_more_than_one_converter_in_it()
        {
            var converter = new MultiConverterGroup();
            var step1     = new MultiConverterGroupStep();
            var step2     = new MultiConverterGroupStep();

            step1.Converters.Add(new Mock <IMultiValueConverter>().Object);
            step1.Converters.Add(new Mock <IMultiValueConverter>().Object);
            step2.Converters.Add(new Mock <IMultiValueConverter>().Object);
            step2.Converters.Add(new Mock <IMultiValueConverter>().Object);
            converter.Steps.Add(step1);
            converter.Steps.Add(step2);

            var ex = Assert.Throws <InvalidOperationException>(() => converter.Convert(new object[] { }, null, null, null));

            Assert.Equal("The final step in a MultiConverterGroup must have a single converter added to it.", ex.Message);
        }
        public void convert_executes_steps_in_order()
        {
            var converter = new MultiConverterGroup();
            var values = new object[] { "abc", 123 };
            var targetType = typeof(int);
            var parameter = "parameter";
            var cultureInfo = new CultureInfo("de-DE");
            var converterMock1 = new Mock<IMultiValueConverter>();
            converterMock1.Setup(x => x.Convert(values, targetType, parameter, cultureInfo)).Returns("converted value1");
            var converterMock2 = new Mock<IMultiValueConverter>();
            converterMock2.Setup(x => x.Convert(values, targetType, parameter, cultureInfo)).Returns("converted value2");
            var converterMock3 = new Mock<IMultiValueConverter>();
            converterMock3.Setup(x => x.Convert(new object[] { "converted value1", "converted value2" }, targetType, parameter, cultureInfo)).Returns("final converted value");
            var step1 = new MultiConverterGroupStep();
            step1.Converters.Add(converterMock1.Object);
            step1.Converters.Add(converterMock2.Object);
            var step2 = new MultiConverterGroupStep();
            step2.Converters.Add(converterMock3.Object);
            converter.Steps.Add(step1);
            converter.Steps.Add(step2);

            Assert.Equal("final converted value", converter.Convert(values, targetType, parameter, cultureInfo));
        }
 public void convert_returns_unset_value_if_there_are_no_steps()
 {
     var converter = new MultiConverterGroup();
     Assert.Equal(DependencyProperty.UnsetValue, converter.Convert(new object[] { }, null, null, null));
 }
        public void convert_returns_unset_value_if_there_are_no_steps()
        {
            var converter = new MultiConverterGroup();

            Assert.Equal(DependencyProperty.UnsetValue, converter.Convert(new object[] { }, null, null, null));
        }