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); }
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]); }