public void Options_Set_GetReturnsExpected(StringSplitOptions options)
        {
            var reader = new CharSplitCellValueReader(new ColumnNameValueReader("ColumnName"))
            {
                Options = options
            };

            Assert.Equal(options, reader.Options);
        }
        public void Separators_SetValid_GetReturnsExpected(char[] separators)
        {
            var reader = new CharSplitCellValueReader(new ColumnNameValueReader("ColumnName"))
            {
                Separators = separators
            };

            Assert.Same(separators, reader.Separators);
        }
        public void Ctor_CellReader()
        {
            var innerReader = new ColumnNameValueReader("ColumnName");
            var reader      = new CharSplitCellValueReader(innerReader);

            Assert.Same(innerReader, reader.CellReader);

            Assert.Equal(StringSplitOptions.None, reader.Options);
            Assert.Equal(new char[] { ',' }, reader.Separators);
        }
        public void WithSeparators_IEnumerableChar_Success(IEnumerable <char> 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));

            CharSplitCellValueReader valueReader = Assert.IsType <CharSplitCellValueReader>(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);
        }
        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);
        }
Пример #7
0
        internal static bool TryCreateGenericEnumerableMap <TElement>(MemberInfo member, FallbackStrategy emptyValueStrategy, out ManyToOneEnumerableMap <TElement> map)
        {
            // First, get the pipeline for the element. This is used to convert individual values
            // to be added to/included in the collection.
            if (!TryCreatePrimitivePipeline <TElement>(emptyValueStrategy, out ValuePipeline <TElement> elementMapping))
            {
                map = null;
                return(false);
            }

            // Secondly, find the right way of adding the converted value to the collection.
            if (!TryGetCreateElementsFactory <TElement>(member.MemberType(), out CreateElementsFactory <TElement> factory))
            {
                map = null;
                return(false);
            }

            // Default to splitting.
            var defaultNameReader = GetDefaultSingleCellValueReader(member);
            var defaultReader     = new CharSplitCellValueReader(defaultNameReader);

            map = new ManyToOneEnumerableMap <TElement>(defaultReader, elementMapping, factory);
            return(true);
        }
        public void Separators_SetEmpty_ThrowsArgumentException()
        {
            var reader = new CharSplitCellValueReader(new ColumnNameValueReader("ColumnName"));

            Assert.Throws <ArgumentException>("value", () => reader.Separators = new char[0]);
        }