コード例 #1
0
        public void AutoMapWithExistingMapTest()
        {
            var config      = new CsvHelper.Configuration.Configuration();
            var existingMap = new SimpleMap();

            config.Maps.Add(existingMap);
            var data = new
            {
                Simple = new Simple
                {
                    Id   = 1,
                    Name = "one"
                }
            };
            var map = config.AutoMap(data.GetType());

            Assert.IsNotNull(map);
            Assert.AreEqual(0, map.MemberMaps.Count);
            Assert.AreEqual(1, map.ReferenceMaps.Count);

            // Since Simple is a reference on the anonymous object, the type won't
            // be re-used. Types which are created from automapping aren't added
            // to the list of registered maps either.
            Assert.IsNotInstanceOfType(map.ReferenceMaps[0].Data.Mapping, typeof(SimpleMap));
        }
コード例 #2
0
        public void ChangeMemberMapTest()
        {
            var config = new CsvHelper.Configuration.Configuration();
            var map    = config.AutoMap <A>();

            map.Map(m => m.B.C.P3).Index(3);
        }
コード例 #3
0
        public void CircularDependencyWithMultiplePropertiesTest()
        {
            var config = new CsvHelper.Configuration.Configuration();
            var map    = config.AutoMap <A>();

            Assert.AreEqual(1, map.MemberMaps.Count);
            Assert.AreEqual(3, map.ReferenceMaps.Count);
        }
コード例 #4
0
        public void AutoMapWithDefaultConstructor()
        {
            var      config = new CsvHelper.Configuration.Configuration();
            ClassMap map    = config.AutoMap <SimpleReferenceHasNoDefaultConstructor>();

            Assert.AreEqual("Id", map.MemberMaps[0].Data.Names[0]);
            Assert.AreEqual("Name", map.ReferenceMaps[0].Data.Mapping.MemberMaps[0].Data.Names[0]);
            Assert.AreEqual("name", map.ReferenceMaps[0].Data.Mapping.ParameterMaps[0].Data.Name);
        }
コード例 #5
0
        public void AutoMapEnumerableTest()
        {
            var config = new CsvHelper.Configuration.Configuration();

            try
            {
                config.AutoMap(typeof(List <string>));
                Assert.Fail();
            }
            catch (ConfigurationException) {}
        }
コード例 #6
0
        public void CircularDependencyTest()
        {
            var config = new CsvHelper.Configuration.Configuration();
            var map    = config.AutoMap <ACircular>();

            Assert.IsNotNull(map);
            Assert.AreEqual(1, map.MemberMaps.Count);
            Assert.AreEqual(1, map.ReferenceMaps.Count);
            Assert.AreEqual(1, map.ReferenceMaps[0].Data.Mapping.MemberMaps.Count);
            Assert.AreEqual(0, map.ReferenceMaps[0].Data.Mapping.ReferenceMaps.Count);
        }
コード例 #7
0
        public virtual IEnumerable <T> GetData(string FilePath, Func <CsvReader, bool> filter)
        {
            IEnumerable <T> info = (IEnumerable <T>)null;
            //ExceptionList errors = new ExceptionList();

            List <T> quotes = new List <T>();

            try
            {
                _syncLock.EnterReadLock();

                _config.ReadingExceptionOccurred = (ex) => HandleError(ex);
                //_config.BadDataCallback = (ex, row) => HandleError(ex, ref errors);

                if (_map != null)
                {
                    _config.RegisterClassMap(_map);
                }
                else
                {
                    _config.AutoMap <T>();
                }

                using (TextReader textReader = File.OpenText(FilePath))
                    using (CsvReader reader = new CsvReader(textReader, _config))
                    {
                        if (filter is null)
                        {
                            quotes.AddRange(reader.GetRecords <T>().ToList());
                        }
                        else
                        {
                            while (reader.Read())
                            {
                                if (filter(reader))
                                {
                                    quotes.Add(reader.GetRecord <T>());
                                }
                            }
                        }
                    }
            }
            catch (Exception ex)
            {
                throw ex;
                //errors.AddOperationException($"CSV could get get info from {FilePath}.", FilePath, ex);
            }
            finally { _syncLock.ExitReadLock(); }

            //info = await Task.FromResult(quotes);
            //errors = await Task.FromResult(errors);

            return(quotes.AsEnumerable <T>());
        }
コード例 #8
0
        public void AutoMapWithNestedHeaders()
        {
            var config = new CsvHelper.Configuration.Configuration
            {
                PrefixReferenceHeaders = true,
            };
            var map = config.AutoMap <Nested>();

            Assert.AreEqual("Simple1.Id", map.ReferenceMaps[0].Data.Mapping.MemberMaps[0].Data.Names[0]);
            Assert.AreEqual("Simple1.Name", map.ReferenceMaps[0].Data.Mapping.MemberMaps[1].Data.Names[0]);
            Assert.AreEqual("Simple2.Id", map.ReferenceMaps[1].Data.Mapping.MemberMaps[0].Data.Names[0]);
            Assert.AreEqual("Simple2.Name", map.ReferenceMaps[1].Data.Mapping.MemberMaps[1].Data.Names[0]);
        }
コード例 #9
0
 public void SelfCircularDependencyTest()
 {
     var config = new CsvHelper.Configuration.Configuration();
     var map    = config.AutoMap <SelfCircularA>();
 }