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 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 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>())); }
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 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 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 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 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); }
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); }
public void Optional_Set_GetReturnsExpected(bool value) { var cellValuesReader = new MultipleColumnNamesValueReader("Column"); var elementPipeline = new ValuePipeline <string>(); CreateElementsFactory <string> createElementsFactory = elements => elements; var propertyMap = new ManyToOneEnumerableMap <string>(cellValuesReader, elementPipeline, createElementsFactory) { Optional = value }; Assert.Equal(value, propertyMap.Optional); // Set same. propertyMap.Optional = value; Assert.Equal(value, propertyMap.Optional); // Set different. propertyMap.Optional = !value; Assert.Equal(!value, propertyMap.Optional); }
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); }