public void CreateSimpleValueCalculatorTest()
        {
            // Arrange.
            const string FieldName = "TestField";
            const string TypeName = "TestType";

            var typeResolver = new Mock<ITypeResolver>();
            typeResolver.Setup(x => x.FindType(TypeName)).Returns(typeof(string));

            var typeConverter = Mock.Create<ITypeConverter>(Behavior.Loose);

            var mappingDefinition = new WebMethodParameterMappingDefinition { Name = FieldName, TypeName = TypeName };
            var factory = new WebMethodParameterCalculatorFactory { TypeResolver = typeResolver.Object, TypeConverter = typeConverter };

            // Act.
            var valueCalculator = factory.CreateValueCalculator(mappingDefinition);

            // Assert.
            Assert.IsTrue(valueCalculator is SimpleValueCalculator);
        }
        public void CreateDynamicLengthArrayValueCalculatorTest()
        {
            // Arrange.
            const string FieldName = "TestField";
            const string TypeName = "TestType";
            const string ElementTypeName = "TestElementType";

            var typeResolver = new Mock<ITypeResolver>();
            typeResolver.Setup(x => x.FindType(TypeName)).Returns(typeof(Employee[]));
            typeResolver.Setup(x => x.FindType(ElementTypeName)).Returns(typeof(Employee));

            var typeConverter = Mock.Create<ITypeConverter>(Behavior.Loose);

            var elementMappingDefinition = new WebMethodParameterMappingDefinition { Name = Constants.ArrayItemGenericFieldName, TypeName = ElementTypeName };
            var mappingDefinition = new WebMethodParameterMappingDefinition { Name = FieldName, TypeName = TypeName, Subfields = { elementMappingDefinition } };

            var factory = new WebMethodParameterCalculatorFactory { TypeResolver = typeResolver.Object, TypeConverter = typeConverter };

            // Act.
            var valueCalculator = factory.CreateValueCalculator(mappingDefinition);

            // Assert.
            Assert.IsTrue(valueCalculator is ArrayValueCalculator);
        }