public void GivenEnumerableAsString_Set_SetsValueOnTargetObjectsProperIndex()
        {
            var targetObject = new TestTypeParent()
            {
                Tag57s = new string[3]
            };
            var uut              = new CompositePropertySetter();
            var firstValueToSet  = "12357";
            var secondValueToSet = "12358";
            var mappingDetails   = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag57s)), new StringSetter())
            {
                IsEnumerable       = true,
                RepeatingTagNumber = 56,
                InnerType          = typeof(string),
            };
            var messageContext = new FixMessageContext();

            // Setting the 1st element
            uut.Set(firstValueToSet.AsSpan(), mappingDetails, messageContext, targetObject);
            // Setting the 2nd element
            uut.Set(secondValueToSet.AsSpan(), mappingDetails, messageContext, targetObject);

            Assert.Equal(firstValueToSet, targetObject.Tag57s.First());
            Assert.Equal(secondValueToSet, targetObject.Tag57s.Skip(1).First());
        }
Beispiel #2
0
        public void ParserByNewParser()
        {
            byte[] message = new MessageBuilder().AddRaw("35=D|53=10|44=145|55=ABC|").Build();

            // Create a property mapper and map types to be parsed. SubPropertySetterFactory is responsible creating the actual property setters.
            var propertyMapper = new TagToPropertyMapper(new SubPropertySetterFactory());

            propertyMapper.Map <Order>();

            // Create the composite property setter. CompositePropertySetter is the delegator of the sub property setters.
            var compositeSetter = new CompositePropertySetter();

            // Create a validator collection to have all default validators
            var validators = new ValidatorCollection(IntegerToFixConverter.Instance);

            // Passing empty options
            var options = new MessageParserOptions();

            // Create MessageParser, passing dependencies
            var parser = new MessageParser(propertyMapper, compositeSetter, validators, options);

            Order order = parser.Parse <Order>(message);

            Console.WriteLine($"Order {order.Symbol} - Px {order.Price}, Qty {order.Quantity}");
        }
        public void GivenEnumeratedParents_SetTwice_ReturnsSecondElement()
        {
            var targetObject = new TestTypeParent()
            {
                Tag59s = new TestMany[3]
            };
            var uut            = new CompositePropertySetter();
            var valueToSet     = new byte[1].AsSpan();
            var mappingDetails = new TagMapLeaf(typeof(TestMany).GetProperty("Tag60"), new MockPropertySetter())
            {
                Parents = new List <TagMapParent>
                {
                    new TagMapParent(targetObject.GetType().GetProperty(nameof(targetObject.Tag59s)), new ParentPropertySetter())
                    {
                        IsEnumerable = true,
                        InnerType    = typeof(TestMany),
                    }
                }
            };
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet, mappingDetails, messageContext, targetObject);
            var result = uut.Set(valueToSet, mappingDetails, messageContext, targetObject);

            Assert.NotNull(targetObject.Tag59s.First());
            Assert.Equal(result, targetObject.Tag59s.Skip(1).First());
        }
        public void GivenRepeatingGroup_Set_CallsRepeatingSetter()
        {
            var testValue  = new byte[0];
            var mockSetter = new MockPropertySetter();

            var uut = new CompositePropertySetter();

            uut.Set(testValue, TagMapLeaf.CreateRepeatingTag(null, null, mockSetter), new FixMessageContext(), new object());

            Assert.True(mockSetter.IsVerified);
        }
        public void GivenSimpleValue_Set_CallsSimpleSetter()
        {
            var testValue            = new byte[0];
            var mockSimpleTypeSetter = new MockPropertySetter();

            var uut = new CompositePropertySetter();

            uut.Set(testValue, new TagMapLeaf(MockPropertyInfo.Get, mockSimpleTypeSetter), new FixMessageContext(), new object());

            Assert.True(mockSimpleTypeSetter.IsVerified);
        }
        public void GivenBoolAsString_Set_SetsValueOnTargetObject()
        {
            var targetObject   = new TestTypeParent();
            var uut            = new CompositePropertySetter();
            var valueToSet     = "Y";
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag68)), new BooleanSetter());
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet.AsSpan(), mappingDetails, messageContext, targetObject);
            Assert.True(targetObject.Tag68);
        }
        public void GivenNullableDateTimeOffsetAsString_Set_SetsValueOnTargetObject()
        {
            var targetObject   = new TestTypeParent();
            var uut            = new CompositePropertySetter();
            var valueToSet     = "20181219-18:14:23";
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag71)), new NullableDateTimeOffsetSetter());
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet.AsSpan(), mappingDetails, messageContext, targetObject);
            Assert.Equal(new DateTimeOffset(2018, 12, 19, 18, 14, 23, 0, TimeSpan.Zero), targetObject.Tag71.Value);
        }
        public void GivenNullableIntegerAsString_Set_SetsValueOnTargetObject()
        {
            var targetObject = new TestTypeParent();
            var uut          = new CompositePropertySetter();
            ReadOnlySpan <char> valueToSet = "12357".AsSpan();
            var mappingDetails             = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag63)), new IntegerSetter());
            var messageContext             = new FixMessageContext();

            uut.Set(valueToSet, mappingDetails, messageContext, targetObject);

            Assert.Equal(12357, targetObject.Tag63);
        }
        public void GivenNullable_Set_SetsValueOnTargetObject()
        {
            var targetObject   = new TestTypeParent();
            var uut            = new CompositePropertySetter();
            var valueToSet     = Encoding.ASCII.GetBytes("12357").AsSpan();
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag63)), new IntegerSetter());
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet, mappingDetails, messageContext, targetObject);

            Assert.Equal(12357, targetObject.Tag63);
        }
Beispiel #10
0
        public void GivenMessage_Parse_ParsesObject()
        {
            var propertyMapper = new TagToPropertyMapper(new SubPropertySetterFactory());

            propertyMapper.Map <TestTypeParent>();
            var compositeSetter = new CompositePropertySetter();

            var uut    = new MessageParser(propertyMapper, compositeSetter, new MockValidator(), Mock.Of <MessageParserOptions>());
            var result = uut.Parse <TestTypeParent>(TestFixMessageBuilder.CreateDefaultMessage());

            Assert.NotNull(result);
        }
        public void GivenTypedSimpleValueAsString_SetTarget_CallsTypedSetter()
        {
            var testValue  = "test".AsSpan();
            var mockSetter = new MockPropertySetter();

            var uut          = new CompositePropertySetter();
            var targetObject = new object();

            uut.SetTarget(testValue, new TagMapLeaf(MockPropertyInfo.Get, mockSetter), new FixMessageContext(), ref targetObject);

            Assert.True(mockSetter.IsVerified);
        }
        public void GivenNullableBool_Set_SetsValueOnTargetObject()
        {
            var targetObject   = new TestTypeParent();
            var uut            = new CompositePropertySetter();
            var valueToSet     = Encoding.ASCII.GetBytes("Y").AsSpan();
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag69)), new NullableBooleanSetter());
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet, mappingDetails, messageContext, targetObject);
            Assert.True(targetObject.Tag69);
            Assert.False(targetObject.Tag68);
        }
        public void GivenTypeConvertedSetter_Set_CallsConvertingSetter()
        {
            var testValue  = new byte[0];
            var mockSetter = new MockPropertySetter();

            var uut = new CompositePropertySetter();

            uut.Set(testValue, new TagMapLeaf(MockPropertyInfo.Get, mockSetter)
            {
                TypeConverterName = "name"
            }, new FixMessageContext(), new object());

            Assert.True(mockSetter.IsVerified);
        }
        public void GivenParentsAsString_Set_CreatesParentTypes()
        {
            var targetObject   = new TestTypeParent();
            var uut            = new CompositePropertySetter();
            var valueToSet     = "test";
            var mappingDetails = new TagMapLeaf(MockPropertyInfo.Get, new MockPropertySetter())
            {
                Parents = new List <TagMapParent>
                {
                    new TagMapParent(targetObject.GetType().GetProperty(nameof(targetObject.CustomType)), new ParentPropertySetter())
                }
            };
            var messageContext = new FixMessageContext();
            var result         = uut.Set(valueToSet.AsSpan(), mappingDetails, messageContext, targetObject);

            Assert.NotNull(targetObject.CustomType);
            Assert.Equal(result, targetObject.CustomType);
        }
        public void GivenParentAsString_Set_CallsParentsSetter()
        {
            var testValue            = "test".AsSpan();
            var mockParentSetter     = new MockPropertySetter();
            var mockSimpleTypeSetter = new MockPropertySetter();

            var uut = new CompositePropertySetter();

            uut.Set(testValue, new TagMapLeaf(MockPropertyInfo.Get, mockSimpleTypeSetter)
            {
                Parents = new List <TagMapParent>()
                {
                    new TagMapParent(MockPropertyInfo.Get, mockParentSetter)
                }
            }, new FixMessageContext(), new object());

            Assert.True(mockParentSetter.IsVerified);
            Assert.True(mockSimpleTypeSetter.IsVerified);
        }
        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 GivenEnumerableValue_Set_SetsValueOnTargetObjectsProperIndex()
        {
            var targetObject = new TestTypeParent()
            {
                Tag57s = new string[3]
            };
            var uut            = new CompositePropertySetter();
            var valueToSet     = Encoding.ASCII.GetBytes("12357").AsSpan();
            var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag57s)), new StringSetter())
            {
                IsEnumerable       = true,
                RepeatingTagNumber = 56,
                InnerType          = typeof(string),
            };
            var messageContext = new FixMessageContext();

            uut.Set(valueToSet, mappingDetails, messageContext, targetObject);

            Assert.Equal("12357", targetObject.Tag57s.First());
        }
        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());
        }
 public SetSinglePropertyTestsFixture()
 {
     PropertyMapper = new TagToPropertyMapper(new SubPropertySetterFactory());
     PropertyMapper.Map <TestTypeParent>();
     CompositeSetter = new CompositePropertySetter();
 }