コード例 #1
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void DefaultFieldDelimiterIsComma()
        {
            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false);

            Assert.AreEqual(',', dataSet.FieldDelimiter);
        }
コード例 #2
0
ファイル: ExportController.cs プロジェクト: njs/FetchClimate
        private string MergeCSV(Tuple <string, string[]>[] requests)
        {
            string tempFile = Path.GetTempFileName();

            try
            {
                using (CsvDataSet result = new CsvDataSet(new CsvUri()
                {
                    FileName = tempFile,
                    Encoding = Encoding.UTF8,
                    OpenMode = ResourceOpenMode.Create,
                    Separator = Delimiter.Comma,
                    AppendMetadata = false,
                    NoHeader = false
                }.ToString()))
                {
                    result.IsAutocommitEnabled = false;
                    MergeCSV(result, requests);
                }
                return(File.ReadAllText(tempFile));
            }
            finally
            {
                try
                {
                    File.Delete(tempFile);
                }
                catch (Exception exc)
                {
                    WebRole.TraceInfo("Error deleting temporary file: " + exc.Message);
                }
            }
        }
コード例 #3
0
        public CsvColumn(int index, int id, string header)
        {
            this.Header         = header;
            this.index          = index;
            Rank                = 1;
            Dims                = new string[] { string.Format("csv_{0}", index) };
            TypeUpdated         = false;
            ContainsData        = false;
            Shape               = null;
            DescribedInMetadata = false;
            InferredType        = InferredType.Unknown;
            FlatVarBaseIndex    = -1;
            ID = id;

            columnName = CsvDataSet.GetNameByIndex(index);
            if (!String.IsNullOrEmpty(header))
            {
                VariableName = header;
            }
            else
            {
                VariableName = columnName;
            }

            EndsWithEmptyLines = false;
        }
コード例 #4
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void GetItemsReturnsNothingIfIsDynamicAndNotIncludingDynamicRows()
        {
            CsvDataSet       dataSet = new CsvDataSet(delegate { return(new StringReader("")); }, true);
            List <IDataItem> items   = new List <IDataItem>(dataSet.GetItems(EmptyArray <DataBinding> .Instance, false));

            Assert.Count(0, items);
        }
コード例 #5
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void ProducesMetadata()
        {
            string document = "value,[Metadata]\n123,abc\n456,def";

            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader(document)); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false);

            dataSet.HasHeader        = true;
            dataSet.DataLocationName = "<inline>";
            Assert.AreEqual("<inline>", dataSet.DataLocationName);

            DataBinding      binding = new DataBinding(0, null);
            List <IDataItem> items   = new List <IDataItem>(dataSet.GetItems(new DataBinding[] { binding }, true));

            Assert.AreEqual("123", items[0].GetValue(binding));
            PropertyBag map = DataItemUtils.GetMetadata(items[0]);

            Assert.AreEqual("<inline>(2)", map.GetValue(MetadataKeys.DataLocation));
            Assert.AreEqual("abc", map.GetValue("Metadata"));

            Assert.AreEqual("456", items[1].GetValue(binding));
            map = new PropertyBag();
            items[1].PopulateMetadata(map);
            Assert.AreEqual("<inline>(3)", map.GetValue(MetadataKeys.DataLocation));
            Assert.AreEqual("def", map.GetValue("Metadata"));
        }
コード例 #6
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void BindValues(string document, char fieldDelimiter, char commentPrefix, bool hasHeader,
                               int?bindingIndex, string bindingPath, string[] expectedValues)
        {
            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader(document)); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false);

            dataSet.FieldDelimiter = fieldDelimiter;
            Assert.AreEqual(fieldDelimiter, dataSet.FieldDelimiter);

            dataSet.CommentPrefix = commentPrefix;
            Assert.AreEqual(commentPrefix, dataSet.CommentPrefix);

            dataSet.HasHeader = hasHeader;
            Assert.AreEqual(hasHeader, dataSet.HasHeader);

            DataBinding      binding = new DataBinding(bindingIndex, bindingPath);
            List <IDataItem> items   = new List <IDataItem>(dataSet.GetItems(new DataBinding[] { binding }, true));

            string[] actualValues = GenericCollectionUtils.ConvertAllToArray <IDataItem, string>(items, delegate(IDataItem item)
            {
                return((string)item.GetValue(binding));
            });

            Assert.AreEqual(expectedValues, actualValues);
        }
コード例 #7
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void DefaultCommentPrefixIsPound()
        {
            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false);

            Assert.AreEqual('#', dataSet.CommentPrefix);
        }
コード例 #8
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void DefaultHasHeaderIsFalse()
        {
            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false);

            Assert.IsFalse(dataSet.HasHeader);
        }
コード例 #9
0
        /// <inheritdoc />
        protected override void PopulateDataSource(IPatternScope scope, DataSource dataSource, ICodeElementInfo codeElement)
        {
            var dataSet = new CsvDataSet(() => OpenTextReader(codeElement), IsDynamic);

            dataSet.DataLocationName = GetDataLocationName();
            dataSet.FieldDelimiter   = FieldDelimiter;
            dataSet.CommentPrefix    = CommentPrefix;
            dataSet.HasHeader        = HasHeader;
            dataSource.AddDataSet(dataSet);
        }
コード例 #10
0
        internal CsvVariableScalar(CsvDataSet dataSet, CsvColumn column)
            : base(dataSet, column)
        {
            if (column.Rank != 0)
            {
                throw new Exception("This is a scalar variable and is being created with different rank.");
            }

            data = new ArrayWrapper(0, typeof(DataType));            //new OrderedArray1d(typeof(DataType), false);

            Initialize();
        }
コード例 #11
0
        internal CsvVariable(CsvDataSet dataSet, CsvColumn column)
            : base(dataSet, column.VariableName, column.Dims)
        {
            DisplayName  = column.Header;
            MissingValue = column.MissingValue;
            if (column.ID > 0)
            {
                this.ID = column.ID;
            }

            Metadata[CsvDataSet.CsvColumnKeyName] = column.Index;
        }
コード例 #12
0
        internal CsvVariableMd(CsvDataSet dataSet, CsvColumn column)
            : base(dataSet, column)
        {
            if (column.Rank <= 2)
            {
                throw new Exception("This is multidimensional variable and is being created with different rank.");
            }

            data = new ArrayWrapper(column.Rank, typeof(DataType));

            Initialize();
        }
コード例 #13
0
        internal CsvVariable(CsvDataSet dataSet, CsvColumn column)
            : base(dataSet, column.VariableName, column.Dims)
        {
            DisplayName = String.IsNullOrEmpty(column.Header) ? column.VariableName : column.Header;
            if (column.MissingValue != null || !column.Type.IsValueType)
            {
                MissingValue = column.MissingValue;
            }
            if (column.ID > 0)
            {
                this.ID = column.ID;
            }

            Metadata[CsvDataSet.CsvColumnKeyName] = column.Index;
        }
コード例 #14
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void CanGetDescriptiveDataBindingsFromItem()
        {
            CsvDataSet dataSet = new CsvDataSet(delegate { return(new StringReader("Fruit,[Metadata]\nApples, x, 2\n")); }, false);

            dataSet.HasHeader = true;

            List <IDataItem> items = new List <IDataItem>(dataSet.GetItems(EmptyArray <DataBinding> .Instance, false));

            Assert.AreElementsEqual(new[]
            {
                new DataBinding(0, "Fruit"),
                new DataBinding(1, "[Metadata]"),
                new DataBinding(2, null)
            }, items[0].GetBindingsForInformalDescription());
        }
コード例 #15
0
ファイル: CsvDataSetTest.cs プロジェクト: soelske/mbunit-v3
        public void IgnoresMissingMetadataColumns()
        {
            string document = "value,[Metadata]\n123";

            Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader(document)); };
            CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false)
            {
                HasHeader = true
            };

            DataBinding      binding = new DataBinding(0, null);
            List <IDataItem> items   = new List <IDataItem>(dataSet.GetItems(new DataBinding[] { binding }, true));

            Assert.AreEqual("123", items[0].GetValue(binding));
            PropertyBag map = DataItemUtils.GetMetadata(items[0]);

            Assert.IsFalse(map.ContainsKey("Metadata"));
        }
コード例 #16
0
ファイル: MergeController.cs プロジェクト: njs/FetchClimate
        private async Task MergeCSV(Stream output, string[] hashes)
        {
            string tempFile = Path.GetTempFileName();

            try
            {
                using (CsvDataSet result = new CsvDataSet(new CsvUri()
                {
                    FileName = tempFile,
                    Encoding = Encoding.UTF8,
                    OpenMode = ResourceOpenMode.Create,
                    Separator = Delimiter.Comma
                }.ToString()))
                {
                    result.IsAutocommitEnabled = false;
                    MergeCSV(result, hashes);
                }
                const int BufferSize = 4096;
                byte[]    buffer     = new byte[BufferSize];
                using (var input = File.OpenRead(tempFile))
                {
                    int count = input.Read(buffer, 0, BufferSize);
                    while (count > 0)
                    {
                        await output.WriteAsync(buffer, 0, count);

                        count = input.Read(buffer, 0, BufferSize);
                    }
                }
            }
            finally
            {
                try
                {
                    File.Delete(tempFile);
                }
                catch (Exception exc)
                {
                    WebRole.TraceInfo("Error deleting temporary file: " + exc.Message);
                }
            }
        }
コード例 #17
0
 private CsvVariableScalar(CsvDataSet dataSet, int id, MetadataDictionary metadata, ArrayWrapper data, string[] dims)
     : base(dataSet, id, metadata, dims)
 {
     this.data = data;
     Initialize();
 }
コード例 #18
0
 /// <summary>Initialized a new instance of CSV variable</summary>
 /// <param name="dataSet">Owner CSV DataSet</param>
 /// <param name="id">ID of variable</param>
 /// <param name="metadata">Metadata dictionary to be copied into this variable</param>
 /// <param name="dims">Array of dimension names</param>
 protected CsvVariable(CsvDataSet dataSet, int id, MetadataDictionary metadata, string[] dims)
     : base(dataSet, GetName(metadata), dims)
 {
     metadata.ForEach(e => Metadata[e.Key] = e.Value, SchemaVersion.Recent);
     this.ID = id;
 }