コード例 #1
0
        public void GetProperty_InvalidStringValue_ReturnsInvalid(EnumMapper item, string stringValue)
        {
            object value = 1;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Invalid, result);
            Assert.Equal(1, value);
        }
コード例 #2
0
        public void GetProperty_ValidStringValue_ReturnsSuccess(EnumMapper item, string stringValue, Enum expected)
        {
            object value = null;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal(expected, value);
        }
コード例 #3
0
        public void GetProperty_InvalidStringValue_ReturnsInvalid(string stringValue)
        {
            var item = new UriMapper();

            object value = 1;
            PropertyMapperResultType result = item.GetProperty(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Invalid, result);
            Assert.Equal(1, value);
        }
コード例 #4
0
        public void GetProperty_ValidStringValue_ReturnsSuccess(string stringValue, Uri expected)
        {
            var item = new UriMapper();

            object value = null;
            PropertyMapperResultType result = item.GetProperty(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal(expected, value);
        }
コード例 #5
0
        public void GetProperty_InvalidStringValue_ReturnsInvalid(Type type, string stringValue)
        {
            var item = new ChangeTypeMapper(type);

            object value = 1;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Invalid, result);
            Assert.Equal(1, value);
        }
コード例 #6
0
        public void GetProperty_ValidStringValue_ReturnsSuccess(Type type, string stringValue, object expected)
        {
            var item = new ChangeTypeMapper(type);

            object value = 0;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal(expected, value);
        }
コード例 #7
0
        public void GetProperty_Invoke_ReturnsBegan(string stringValue)
        {
            var item = new StringMapper();

            object value = 1;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.SuccessIfNoOtherSuccess, result);
            Assert.Same(stringValue, value);
        }
コード例 #8
0
        public void GetProperty_ValidStringValue_ReturnsSuccess(string stringValue, string[] formats, DateTimeStyles style, DateTime expected)
        {
            var item = new DateTimeMapper
            {
                Formats = formats,
                Style   = style
            };

            object value = null;
            PropertyMapperResultType result = item.MapCellValue(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal(expected, value);
        }
コード例 #9
0
        public void GetProperty_ValidStringValue_ReturnsSuccess(string stringValue, PropertyMapperResultType expectedType, object expectedValue)
        {
            var mapping = new Dictionary <string, object> {
                { "key", "value" }, { "KEY2", 10 }
            };
            var comparer = StringComparer.OrdinalIgnoreCase;
            var item     = new DictionaryMapper <object>(mapping, comparer);

            object value = null;
            PropertyMapperResultType result = item.GetProperty(new ReadCellValueResult(-1, stringValue), ref value);

            Assert.Equal(expectedType, result);
            Assert.Equal(expectedValue, value);
        }
コード例 #10
0
        public void GetProperty_ValidStringValue_ReturnsSuccess()
        {
            ConvertUsingMapperDelegate converter = (ReadCellValueResult readResult, ref object readValue) =>
            {
                Assert.Equal(-1, readResult.ColumnIndex);
                Assert.Equal("string", readResult.StringValue);

                readValue = 10;
                return(PropertyMapperResultType.Success);
            };
            var item = new ConvertUsingMapper(converter);

            object value = null;
            PropertyMapperResultType result = item.GetProperty(new ReadCellValueResult(-1, "string"), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal(10, value);
        }
コード例 #11
0
        public void WithConverter_InvalidConverter_ReturnsExpected()
        {
            ConvertUsingSimpleMapperDelegate <string> converter = stringValue =>
            {
                Assert.Equal("stringValue", stringValue);
                throw new NotSupportedException();
            };

            SingleExcelPropertyMap <string> propertyMap = Map(t => t.Value);

            Assert.Same(propertyMap, propertyMap.WithConverter(converter));
            ConvertUsingMapper item = propertyMap.CellValueMappers.OfType <ConvertUsingMapper>().Single();

            object value = 1;
            PropertyMapperResultType result = item.Converter(new ReadCellValueResult(-1, "stringValue"), ref value);

            Assert.Equal(PropertyMapperResultType.Invalid, result);
            Assert.Equal(1, value);
        }
コード例 #12
0
        public void WithConverter_SuccessConverter_ReturnsExpected()
        {
            ConvertUsingSimpleMapperDelegate <string> converter = stringValue =>
            {
                Assert.Equal("stringValue", stringValue);
                return("abc");
            };

            SingleExcelPropertyMap <string> propertyMap = Map(t => t.Value);

            Assert.Same(propertyMap, propertyMap.WithConverter(converter));
            ConvertUsingMapper item = propertyMap.CellValueMappers.OfType <ConvertUsingMapper>().Single();

            object value = null;
            PropertyMapperResultType result = item.Converter(new ReadCellValueResult(-1, "stringValue"), ref value);

            Assert.Equal(PropertyMapperResultType.Success, result);
            Assert.Equal("abc", value);
        }
コード例 #13
0
        internal static object GetPropertyValue(IValuePipeline pipeline, ExcelSheet sheet, int rowIndex, IExcelDataReader reader, ReadCellValueResult readResult, MemberInfo member)
        {
            foreach (ICellValueTransformer transformer in pipeline.CellValueTransformers)
            {
                readResult = new ReadCellValueResult(readResult.ColumnIndex, transformer.TransformStringValue(sheet, rowIndex, readResult));
            }

            if (string.IsNullOrEmpty(readResult.StringValue) && pipeline.EmptyFallback != null)
            {
                return(pipeline.EmptyFallback.PerformFallback(sheet, rowIndex, readResult, member));
            }

            PropertyMapperResultType resultType = PropertyMapperResultType.Success;
            object value = null;

            foreach (ICellValueMapper mappingItem in pipeline.CellValueMappers)
            {
                PropertyMapperResultType newResultType = mappingItem.MapCellValue(readResult, ref value);
                if (newResultType == PropertyMapperResultType.Success)
                {
                    return(value);
                }

                if (newResultType != PropertyMapperResultType.Continue)
                {
                    resultType = newResultType;
                }
            }

            if (resultType != PropertyMapperResultType.Success && resultType != PropertyMapperResultType.SuccessIfNoOtherSuccess && pipeline.InvalidFallback != null)
            {
                return(pipeline.InvalidFallback.PerformFallback(sheet, rowIndex, readResult, member));
            }

            return(value);
        }