/// <summary> /// Instantiates a new data record. /// </summary> /// <param name="tpsRecord">The underlying record that contains the low-level file information.</param> /// <param name="tableDefinition">The table definition for the table to which the record belongs.</param> public DataRecord(TpsRecord tpsRecord, ITableDefinitionRecord tableDefinition) { Record = tpsRecord ?? throw new ArgumentNullException(nameof(tpsRecord)); TableDefinition = tableDefinition ?? throw new ArgumentNullException(nameof(tableDefinition)); Header = (DataHeader)Record.Header; Values = TableDefinition.Parse(tpsRecord.Data.GetRemainder()); }
private static TpsFile BuildTpsFile( ITableDefinitionRecord tableDefinitionRecord, IEnumerable <IDataRecord> dataRecords, IEnumerable <IMemoRecord> memoRecords) { if (dataRecords is null) { throw new ArgumentNullException(nameof(dataRecords)); } if (memoRecords is null) { throw new ArgumentNullException(nameof(memoRecords)); } var mock = new Mock <TpsFile>(); mock.Setup(m => m.GetTableDefinitions(It.IsAny <bool>())) .Returns(new Dictionary <int, ITableDefinitionRecord>() { { 1, tableDefinitionRecord } }); mock.Setup(m => m.GetDataRecords(It.IsAny <int>(), It.IsAny <ITableDefinitionRecord>(), It.IsAny <bool>())) .Returns(dataRecords); mock.Setup(m => m.GetMemoRecords(It.IsAny <int>(), It.IsAny <bool>())) .Returns(memoRecords); return(mock.Object); }
private static IDataRecord BuildDataRecord(int recordNumber, ITableDefinitionRecord tableDefinitionRecord, IEnumerable <TpsObject> values) { var mock = new Mock <IDataRecord>(); mock.Setup(m => m.RecordNumber).Returns(recordNumber); mock.Setup(m => m.TableDefinition).Returns(tableDefinitionRecord); mock.Setup(m => m.Values).Returns(values.ToList()); return(mock.Object); }
public override IEnumerable <IDataRecord> GetDataRecords(int table, ITableDefinitionRecord tableDefinition, bool ignoreErrors) { return(VisitRecords(ignoreErrors) .Where(record => record.Header is DataHeader && record.Header.TableNumber == table) .Select(record => new DataRecord(record, tableDefinition))); }
private IReadOnlyDictionary <int, IReadOnlyDictionary <string, TpsObject> > GatherMemoRecords(int table, ITableDefinitionRecord tableDefinitionRecord, bool ignoreErrors) { return(Enumerable.Range(0, tableDefinitionRecord.Memos.Count()) .SelectMany(index => { var definition = tableDefinitionRecord.Memos[index]; var memoRecordsForIndex = TpsFile.GetMemoRecords(table, index, ignoreErrors); return memoRecordsForIndex.Select(record => (owner: record.Header.OwningRecord, name: definition.Name, value: record.GetValue(definition))); }) .GroupBy(pair => pair.owner, pair => (pair.name, pair.value)) .ToDictionary( groupedPair => groupedPair.Key, groupedPair => (IReadOnlyDictionary <string, TpsObject>)groupedPair .ToDictionary(pair => pair.name, pair => pair.value))); }
private IReadOnlyDictionary <int, IReadOnlyDictionary <string, TpsObject> > GatherDataRecords(int table, ITableDefinitionRecord tableDefinitionRecord, bool ignoreErrors) { var dataRecords = TpsFile.GetDataRecords(table, tableDefinitionRecord: tableDefinitionRecord, ignoreErrors); return(dataRecords.ToDictionary(r => r.RecordNumber, r => r.GetFieldValuePairs())); }