public void GivenStructAsSting_Set_SetsValueOnTargetObject()
        {
            var targetObject         = new TestTypeStruct();
            var uut                  = new CompositePropertySetter();
            var integerToSet         = "12357".AsSpan();
            var stringToSet          = "message".AsSpan();
            var doubleToSet          = "123.456".AsSpan();
            var mappingDetailsInt    = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag101)), new IntegerSetter());
            var mappingDetailsString = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag100)), new StringSetter());
            var mappingDetailsDouble = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag102)), new DoubleSetter());
            var messageContext       = new FixMessageContext();

            uut.SetTarget(integerToSet, mappingDetailsInt, messageContext, ref targetObject);
            uut.SetTarget(stringToSet, mappingDetailsString, messageContext, ref targetObject);
            uut.SetTarget(doubleToSet, mappingDetailsDouble, messageContext, ref targetObject);

            Assert.Equal(12357, targetObject.Tag101);
            Assert.Equal("message", targetObject.Tag100);
            Assert.Equal(123.456, targetObject.Tag102);
        }
        public void GivenStructAndEnumerableAsString_Set_SetsValueOnTargetObject()
        {
            var targetObject = new TestTypeStruct()
            {
                Tag104 = new string[2]
            };
            var uut            = new CompositePropertySetter();
            var valueToSet     = "message";
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag104)), new StringSetter())
            {
                IsEnumerable       = true,
                RepeatingTagNumber = 103,
                InnerType          = typeof(string)
            };
            var messageContext = new FixMessageContext();

            uut.SetTarget(valueToSet.AsSpan(), mappingDetails, messageContext, ref targetObject);
            uut.SetTarget(valueToSet.AsSpan(), mappingDetails, messageContext, ref targetObject);

            Assert.Equal(valueToSet, targetObject.Tag104.First());
            Assert.Equal(valueToSet, targetObject.Tag104.Last());
        }