public void Ctor_Default()
        {
            var pipeline = new ValuePipeline();

            Assert.Empty(pipeline.CellValueMappers);
            Assert.Empty(pipeline.CellValueTransformers);
        }
        public void Ctor_NullCellValuesReader_ThrowsArgumentNullException()
        {
            var elementPipeline = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;

            Assert.Throws <ArgumentNullException>("cellValuesReader", () => new ManyToOneEnumerableMap <string>(null, elementPipeline, createElementsFactory));
        }
        public void Ctor_NullCreateElementsFactory_ThrowsArgumentNullException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();

            Assert.Throws <ArgumentNullException>("createElementsFactory", () => new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, null));
        }
Example #4
0
        public void Ctor_NullCellValuesReader_ThrowsArgumentNullException()
        {
            var valuePipeline = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();

            Assert.Throws <ArgumentNullException>("cellValuesReader", () => new ManyToOneDictionaryMap <string>(null, valuePipeline, createDictionaryFactory));
        }
Example #5
0
        public static void SetValue(object instance, MutableMember member, object value)
        {
            var perspexProperty = FindPerspexProperty(instance, member);

            if (value is IBinding)
            {
                SetBinding(instance, member, perspexProperty, (IBinding)value);
            }
            else if (perspexProperty != null)
            {
                ((PerspexObject)instance).SetValue(perspexProperty, value);
            }
            else if (instance is Setter && member.Name == "Value")
            {
                // TODO: Make this more generic somehow.
                var setter        = (Setter)instance;
                var targetType    = setter.Property.PropertyType;
                var valuePipeline = new ValuePipeline(member.TypeRepository, null);
                var xamlType      = member.TypeRepository.GetByType(targetType);
                SetClrProperty(instance, member, valuePipeline.ConvertValueIfNecessary(value, xamlType));
            }
            else
            {
                SetClrProperty(instance, member, value);
            }
        }
Example #6
0
        public void WithValueMap_MapReturnsNull_ThrowsArgumentNullException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var valuePipeline    = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();
            var propertyMap = new ManyToOneDictionaryMap <string>(cellValuesReader, valuePipeline, createDictionaryFactory);

            Assert.Throws <ArgumentNullException>("valueMap", () => propertyMap.WithValueMap(e => null));
        }
Example #7
0
        public void Ctor_MemberInfo_IMultipleCellValuesReader_IValuePipeline_CreateDictionaryFactory()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var valuePipeline    = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();
            var propertyMap = new ManyToOneDictionaryMap <string>(cellValuesReader, valuePipeline, createDictionaryFactory);

            Assert.NotNull(propertyMap.ValuePipeline);
        }
        public void RemoveCellValueMapper_Index_Success()
        {
            var pipeline = new ValuePipeline();

            pipeline.AddCellValueMapper(new BoolMapper());

            pipeline.RemoveCellValueMapper(0);
            Assert.Empty(pipeline.CellValueMappers);
        }
        public void CellValuesReader_SetNull_ThrowsArgumentNullException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Throws <ArgumentNullException>("value", () => propertyMap.CellValuesReader = null);
        }
        public void WithColumnIndex_NegativeColumnIndex_ThrowsArgumentOutOfRangeException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Throws <ArgumentOutOfRangeException>("columnIndex", () => propertyMap.WithColumnIndex(-1));
        }
        public void AddCellValueTransformer_ValidTransformer_Success()
        {
            var pipeline     = new ValuePipeline();
            var transformer1 = new TrimCellValueTransformer();
            var transformer2 = new TrimCellValueTransformer();

            pipeline.AddCellValueTransformer(transformer1);
            pipeline.AddCellValueTransformer(transformer2);
            Assert.Equal(new ICellValueTransformer[] { transformer1, transformer2 }, pipeline.CellValueTransformers);
        }
        public void AddCellValueMapper_ValidItem_Success()
        {
            var pipeline = new ValuePipeline();
            var item1    = new BoolMapper();
            var item2    = new BoolMapper();

            pipeline.AddCellValueMapper(item1);
            pipeline.AddCellValueMapper(item2);
            Assert.Equal(new ICellValueMapper[] { item1, item2 }, pipeline.CellValueMappers);
        }
        public void Ctor_IMultipleCellValuesReader_IValuePipeline_CreateElementsFactory()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.False(propertyMap.Optional);
            Assert.NotNull(propertyMap.ElementPipeline);
        }
        public void WithColumnIndices_EmptyColumnIndices_ThrowsArgumentException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory).WithColumnNames("ColumnNames");

            Assert.Throws <ArgumentException>("columnIndices", () => propertyMap.WithColumnIndices(new int[0]));
            Assert.Throws <ArgumentException>("columnIndices", () => propertyMap.WithColumnIndices(new List <int>()));
        }
Example #15
0
        public void WithColumnNames_EmptyColumnNames_ThrowsArgumentException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var valuePipeline    = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();
            var propertyMap = new ManyToOneDictionaryMap <string>(cellValuesReader, valuePipeline, createDictionaryFactory).WithColumnNames("ColumnNames");

            Assert.Throws <ArgumentException>("columnNames", () => propertyMap.WithColumnNames(new string[0]));
            Assert.Throws <ArgumentException>("columnNames", () => propertyMap.WithColumnNames(new List <string>()));
        }
        public void WithSeparators_EmptySeparators_ThrowsArgumentException()
        {
            var cellValuesReader = new StringSplitCellValueReader(new ColumnNameValueReader("Column"));
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Throws <ArgumentException>("value", () => propertyMap.WithSeparators(new char[0]));
            Assert.Throws <ArgumentException>("value", () => propertyMap.WithSeparators(new List <char>()));
            Assert.Throws <ArgumentException>("value", () => propertyMap.WithSeparators(new string[0]));
            Assert.Throws <ArgumentException>("value", () => propertyMap.WithSeparators(new List <string>()));
        }
        public void InvalidFallback_Set_GetReturnsExpected()
        {
            var pipeline = new ValuePipeline();

            var fallback = new FixedValueFallback(10);

            pipeline.InvalidFallback = fallback;
            Assert.Same(fallback, pipeline.InvalidFallback);

            pipeline.InvalidFallback = null;
            Assert.Null(pipeline.InvalidFallback);
        }
        public void MakeOptional_HasMapper_ReturnsExpected()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.False(propertyMap.Optional);
            Assert.Same(propertyMap, propertyMap.MakeOptional());
            Assert.True(propertyMap.Optional);
            Assert.Same(cellValuesReader, propertyMap.CellValuesReader);
        }
        public void WithSeperators_MultiMap_ThrowsExcelMappingException()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory).WithColumnNames("ColumnNames");

            Assert.Throws <ExcelMappingException>(() => propertyMap.WithSeparators(new char[0]));
            Assert.Throws <ExcelMappingException>(() => propertyMap.WithSeparators(new List <char>()));
            Assert.Throws <ExcelMappingException>(() => propertyMap.WithSeparators(new string[0]));
            Assert.Throws <ExcelMappingException>(() => propertyMap.WithSeparators(new List <string>()));
        }
        public void WithSeparators_IEnumerableString_Success(IEnumerable <string> separators)
        {
            var cellValuesReader = new StringSplitCellValueReader(new ColumnNameValueReader("Column"));
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Same(propertyMap, propertyMap.WithSeparators(separators));

            StringSplitCellValueReader valueReader = Assert.IsType <StringSplitCellValueReader>(propertyMap.CellValuesReader);

            Assert.Equal(separators, valueReader.Separators);
        }
        public void WithColumnIndex_MultiColumnIndex_Success(int columnIndex)
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory).WithColumnNames("ColumnName");

            Assert.Same(propertyMap, propertyMap.WithColumnIndex(columnIndex));

            CharSplitCellValueReader valueReader = Assert.IsType <CharSplitCellValueReader>(propertyMap.CellValuesReader);
            ColumnIndexValueReader   innerReader = Assert.IsType <ColumnIndexValueReader>(valueReader.CellReader);

            Assert.Equal(columnIndex, innerReader.ColumnIndex);
        }
Example #22
0
        internal static bool TryCreatePrimitivePipeline <T>(FallbackStrategy emptyValueStrategy, out ValuePipeline <T> pipeline)
        {
            if (!TryGetWellKnownMap(typeof(T), emptyValueStrategy, out ICellValueMapper mapper, out IFallbackItem emptyFallback, out IFallbackItem invalidFallback))
            {
                pipeline = null;
                return(false);
            }

            pipeline = new ValuePipeline <T>();
            pipeline.AddCellValueMapper(mapper);
            pipeline.EmptyFallback   = emptyFallback;
            pipeline.InvalidFallback = invalidFallback;
            return(true);
        }
Example #23
0
        public void WithColumnNames_ParamsString_Success()
        {
            var columnNames      = new string[] { "ColumnName1", "ColumnName2" };
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var valuePipeline    = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();
            var propertyMap = new ManyToOneDictionaryMap <string>(cellValuesReader, valuePipeline, createDictionaryFactory).WithColumnNames("ColumnNames");

            Assert.Same(propertyMap, propertyMap.WithColumnNames(columnNames));

            MultipleColumnNamesValueReader valueReader = Assert.IsType <MultipleColumnNamesValueReader>(propertyMap.CellValuesReader);

            Assert.Same(columnNames, valueReader.ColumnNames);
        }
        public void WithColumnName_SplitValidColumnName_Success()
        {
            var cellValuesReader = new CharSplitCellValueReader(new ColumnNameValueReader("Column"));
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Same(propertyMap, propertyMap.WithColumnName("ColumnName"));

            CharSplitCellValueReader valueReader = Assert.IsType <CharSplitCellValueReader>(propertyMap.CellValuesReader);
            ColumnNameValueReader    innerReader = Assert.IsType <ColumnNameValueReader>(valueReader.CellReader);

            Assert.Equal("ColumnName", innerReader.ColumnName);
        }
        public void WithColumnIndices_ParamsInt_Success()
        {
            var columnIndices    = new int[] { 0, 1 };
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory).WithColumnNames("ColumnNames");

            Assert.Same(propertyMap, propertyMap.WithColumnIndices(columnIndices));

            MultipleColumnIndicesValueReader reader = Assert.IsType <MultipleColumnIndicesValueReader>(propertyMap.CellValuesReader);

            Assert.Same(columnIndices, reader.ColumnIndices);
        }
        public void WithSeparators_ParamsChar_Success(IEnumerable <char> separators)
        {
            char[] separatorsArray = separators.ToArray();

            var cellValuesReader = new StringSplitCellValueReader(new ColumnNameValueReader("Column"));
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            Assert.Same(propertyMap, propertyMap.WithSeparators(separatorsArray));

            CharSplitCellValueReader valueReader = Assert.IsType <CharSplitCellValueReader>(propertyMap.CellValuesReader);

            Assert.Same(separatorsArray, valueReader.Separators);
        }
        public void WithElementMap_ValidMap_Success()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory);

            var newElementPipeline = new ValuePipeline <string>();

            Assert.Same(propertyMap, propertyMap.WithElementMap(e =>
            {
                Assert.Same(e, propertyMap.ElementPipeline);
                return(newElementPipeline);
            }));
            Assert.Same(newElementPipeline, propertyMap.ElementPipeline);
        }
Example #28
0
        public void WithValueMap_ValidMap_Success()
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var valuePipeline    = new ValuePipeline <string>();
            CreateDictionaryFactory <string> createDictionaryFactory = elements => new Dictionary <string, string>();
            var propertyMap = new ManyToOneDictionaryMap <string>(cellValuesReader, valuePipeline, createDictionaryFactory);

            var newValuePipeline = new ValuePipeline <string>();

            Assert.Same(propertyMap, propertyMap.WithValueMap(e =>
            {
                Assert.Same(e, propertyMap.ValuePipeline);
                return(newValuePipeline);
            }));
            Assert.Same(newValuePipeline, propertyMap.ValuePipeline);
        }
        public void CellValuesReader_SetValid_GetReturnsExpected(IMultipleCellValuesReader value)
        {
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory)
            {
                CellValuesReader = value
            };

            Assert.Same(value, propertyMap.CellValuesReader);

            // Set same.
            propertyMap.CellValuesReader = value;
            Assert.Same(value, propertyMap.CellValuesReader);
        }
        public void WithColumnNames_IEnumerableString_Success()
        {
            var columnNames = new List <string> {
                "ColumnName1", "ColumnName2"
            };
            var cellValuesReader = new MultipleColumnNamesValueReader("Column");
            var elementPipeline  = new ValuePipeline <string>();
            CreateElementsFactory <string> createElementsFactory = elements => elements;
            var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory).WithColumnNames("ColumnNames");

            Assert.Same(propertyMap, propertyMap.WithColumnNames((IEnumerable <string>)columnNames));

            MultipleColumnNamesValueReader valueReader = Assert.IsType <MultipleColumnNamesValueReader>(propertyMap.CellValuesReader);

            Assert.Equal(columnNames, valueReader.ColumnNames);
        }
Example #31
0
 public ValueCommand(SuperObjectAssembler superObjectAssembler, string value)
     : base(superObjectAssembler)
 {
     this.value = value;
     ValuePipeLine = new ValuePipeline(superObjectAssembler.WiringContext);
 }
Example #32
0
 public ValueCommand(ObjectAssembler objectAssembler, ITopDownValueContext topDownValueContext, string value)
     : base(objectAssembler)
 {
     this.value = value;
     ValuePipeLine = new ValuePipeline(objectAssembler.WiringContext.TypeContext, topDownValueContext);
 }
Example #33
0
 public ValueCommand(StateCommuter stateCommuter, ITypeRepository typeSource, ITopDownValueContext topDownValueContext, string value) : base(stateCommuter)
 {
     this.value = value;
     ValuePipeLine = new ValuePipeline(typeSource, topDownValueContext);
 }