public void ShouldDecryptFile() { using (var fsEncrypted = new FileStream("Resources/encrypted-a.tps", FileMode.Open)) using (var fsUnencrypted = new FileStream("Resources/not-encrypted.tps", FileMode.Open)) { var encryptedFile = new RandomAccessTpsFile(fsEncrypted, new Key("a")); var decryptedFile = new RandomAccessTpsFile(fsUnencrypted); var encryptedDefinitions = encryptedFile.GetTableDefinitions(ignoreErrors: false); var decryptedDefinitions = decryptedFile.GetTableDefinitions(ignoreErrors: false); Assert.AreEqual(decryptedDefinitions.Count, encryptedDefinitions.Count); // Note that record IDs may differ. var encryptedRecords = encryptedFile.GetDataRecords(table: 2, tableDefinition: encryptedDefinitions[2], ignoreErrors: false); var decryptedRecords = decryptedFile.GetDataRecords(table: 1, tableDefinition: decryptedDefinitions[1], ignoreErrors: false); Assert.AreEqual(decryptedRecords.Count(), encryptedRecords.Count()); var zip = decryptedRecords.Zip(encryptedRecords, (d, e) => (dec: d, enc: e)); foreach (var(dec, enc) in zip) { CollectionAssert.AreEqual(dec.Values, enc.Values); } } }
public void ShouldFailToReadEncryptedFileWithoutPassword() { using (var fsEncrypted = new FileStream("Resources/encrypted-a.tps", FileMode.Open)) { var encryptedFile = new RandomAccessTpsFile(fsEncrypted); Assert.Throws <NotATopSpeedFileException>(() => encryptedFile.GetHeader()); } }
public void ShouldParseHeader() { var file = new RandomAccessTpsFile(new FileStream("Resources/header.dat", FileMode.Open)); var header = file.GetHeader(); Assert.IsTrue(header.IsTopSpeedFile); Assert.AreEqual(383744, header.FileLength1); Assert.AreEqual(5048, header.LastIssuedRow); Assert.AreEqual(15651, header.Changes); Assert.AreEqual(60, header.PageStart.Count); Assert.AreEqual(60, header.PageEnd.Count); }
public void ShouldReadFromFile() { using (var stream = new FileStream("Resources/table-with-time.tps", FileMode.Open)) { var file = new RandomAccessTpsFile(stream); var tableDef = file.GetTableDefinitions(false).First().Value; var record = file.GetDataRecords(1, tableDef, false).First(); var valuePairs = record.GetFieldValuePairs(); Assert.AreEqual(new TimeSpan(0, 6, 23, 15, 0), valuePairs["ClockIn"].Value); Assert.AreEqual(new TimeSpan(0, 12, 59, 59, 0), valuePairs["ClockOut"].Value); } }
/// <summary> /// Instantiates a new parser. /// </summary> /// <param name="filename">The filename of the TopSpeed file.</param> /// <param name="password">The password or "owner" to use to decrypt the file.</param> public TpsParser(string filename, string password) : this() { Stream = new FileStream(filename, FileMode.Open); TpsFile = new RandomAccessTpsFile(Stream, new Key(password)); }
/// <summary> /// Instantiates a new parser. /// </summary> /// <param name="filename">The filename of the TopSpeed file.</param> public TpsParser(string filename) : this() { Stream = new FileStream(filename, FileMode.Open); TpsFile = new RandomAccessTpsFile(Stream); }
/// <summary> /// Instantiates a new parser. /// </summary> /// <param name="stream">The stream from which to read the TopSpeed file.</param> /// <param name="password">The password or "owner" to use to decrypt the file.</param> public TpsParser(Stream stream, string password) : this() { Stream = stream ?? throw new ArgumentNullException(nameof(stream)); TpsFile = new RandomAccessTpsFile(Stream, new Key(password)); }
/// <summary> /// Instantiates a new parser. /// </summary> /// <param name="stream">The stream from which to read the TopSpeed file.</param> public TpsParser(Stream stream) : this() { Stream = stream ?? throw new ArgumentNullException(nameof(stream)); TpsFile = new RandomAccessTpsFile(Stream); }
public void ShouldNotParseHeaderIfNotTopSpeed() { var file = new RandomAccessTpsFile(new FileStream("Resources/bad-header.dat", FileMode.Open)); Assert.Throws <NotATopSpeedFileException>(() => file.GetHeader()); }