Exemplo n.º 1
0
        public void ParameterlessConstructorShouldInitializeEmptyCollection()
        {
            var pairs = new PropertyOptionPairs();

            pairs.Count.Should().Be(0);
            pairs.Any().Should().BeFalse();
        }
        private static TElement CreateElement(ArgKeyValuePairs pairs, PropertyOptionPairs properties)
        {
            var element = new TElement();

            foreach (var pair in pairs)
            {
                if (!properties.TryFindByOption(pair.Key, out var property))
                {
                    throw new UnboundTokenException(pair.Key);
                }

                var parsedValue = pair.Value.Parse(property.PropertyType);
                property.SetValue(element, parsedValue);
            }

            return(element);
        }
Exemplo n.º 3
0
        public void MethodTryFindByOptionShouldReturnFalseAndOutputNullWhenKeyIsNotFound(string[] options, string searchTerm)
        {
            var propertyName = nameof(PropertyOptionPair.Option);
            var property     = typeof(PropertyOptionPair).GetProperty(propertyName);
            var collection   = new List <PropertyOptionPair>();

            foreach (var option in options)
            {
                collection.Add(new PropertyOptionPair(property, option));
            }

            var pairs = new PropertyOptionPairs(collection);

            pairs.Count.Should().Be(collection.Count);

            var found = pairs.TryFindByOption(searchTerm, out var output);

            found.Should().BeFalse();
            output.Should().BeNull();
        }
        private static PropertyOptionPairs GetPropertyOptionPairs()
        {
            var query =
                from property in typeof(TElement).GetProperties()
                from propertyAttribute in property.GetCustomAttributes()
                where propertyAttribute is IOptionAttribute
                let optionAttribute = propertyAttribute as IOptionAttribute
                                      let option = optionAttribute.GetValue()
                                                   select new PropertyOptionPair(property, option);

            var collection = new PropertyOptionPairs(query);

            var duplicated = collection.GetDuplicatedOptions();

            if (duplicated.Any())
            {
                throw new DuplicatedOptionsException(duplicated);
            }

            return(collection);
        }
Exemplo n.º 5
0
        public void CollectionConstructorShouldInitializeWithGivenCollection(params string[] options)
        {
            var propertyName = nameof(PropertyOptionPair.Option);
            var property     = typeof(PropertyOptionPair).GetProperty(propertyName);
            var collection   = new List <PropertyOptionPair>();

            foreach (var option in options)
            {
                collection.Add(new PropertyOptionPair(property, option));
            }

            var pairs = new PropertyOptionPairs(collection);

            pairs.Count.Should().Be(collection.Count);
            pairs.Any().Should().BeTrue();

            for (var i = 0; i < pairs.Count; i++)
            {
                var pair = pairs[i];
                pair.Option.Should().Be(options[i]);
                pair.Property.Should().BeSameAs(property);
                pair.Should().BeSameAs(collection[i]);
            }
        }