public void DefaultFieldDelimiterIsComma() { Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); }; CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false); Assert.AreEqual(',', dataSet.FieldDelimiter); }
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); } } }
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; }
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); }
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")); }
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); }
public void DefaultCommentPrefixIsPound() { Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); }; CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false); Assert.AreEqual('#', dataSet.CommentPrefix); }
public void DefaultHasHeaderIsFalse() { Gallio.Common.GallioFunc <TextReader> documentReaderProvider = delegate { return(new StringReader("")); }; CsvDataSet dataSet = new CsvDataSet(documentReaderProvider, false); Assert.IsFalse(dataSet.HasHeader); }
/// <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); }
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(); }
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; }
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(); }
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; }
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()); }
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")); }
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); } } }
private CsvVariableScalar(CsvDataSet dataSet, int id, MetadataDictionary metadata, ArrayWrapper data, string[] dims) : base(dataSet, id, metadata, dims) { this.data = data; Initialize(); }
/// <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; }