Example #1
0
        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);
                    }
                }
        }
Example #2
0
        public void ShouldFailToReadEncryptedFileWithoutPassword()
        {
            using (var fsEncrypted = new FileStream("Resources/encrypted-a.tps", FileMode.Open))
            {
                var encryptedFile = new RandomAccessTpsFile(fsEncrypted);

                Assert.Throws <NotATopSpeedFileException>(() => encryptedFile.GetHeader());
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
 /// <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));
 }
Example #6
0
 /// <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);
 }
Example #7
0
 /// <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));
 }
Example #8
0
 /// <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);
 }
Example #9
0
        public void ShouldNotParseHeaderIfNotTopSpeed()
        {
            var file = new RandomAccessTpsFile(new FileStream("Resources/bad-header.dat", FileMode.Open));

            Assert.Throws <NotATopSpeedFileException>(() => file.GetHeader());
        }