Пример #1
0
 /// <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());
 }
Пример #2
0
            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);
            }
Пример #3
0
            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);
            }
Пример #4
0
 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)));
 }
Пример #5
0
        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)));
        }
Пример #6
0
        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()));
        }