public void Verify_SkipChildren_WorksForRootDirectories()
        {
            var reader = new LocateDBReader(testStream1, true);

            DBEntry entry;

            do
            {
                entry = reader.Read();

                if (entry is DBRootDirectoryEntry rootDirEntry)
                {
                    if (rootDirEntry.FullName == @"I:\")
                    {
                        reader.SkipChildren();
                    }
                    else
                    {
                        Assert.That(rootDirEntry.FullName, Does.Not.StartsWith(@"I:\"));
                    }
                }
                else if (entry is DBDirectoryEntry dirEntry)
                {
                    Assert.That(dirEntry.FullName, Does.Not.StartsWith(@"I:\"));
                }
                else if (entry is DBFileEntry fileEntry)
                {
                    Assert.That(fileEntry.FullName, Does.Not.StartsWith(@"I:\"));
                }
            } while (entry != null);
        }
        public void Verify_FileEntries2_ShouldNotContainDoubleBackSlashes()
        {
            var reader = new LocateDBReader(testStream1, true);

            DBEntry entry;

            do
            {
                entry = reader.Read();

                if (entry is DBFileEntry fileEntry)
                {
                    Console.WriteLine(fileEntry.FullName);
                    Assert.That(fileEntry.FullName, Does.Not.Contain("\\\\"));
                }
                else if (entry is DBDirectoryEntry dirEntry)
                {
                    if (dirEntry.FullName == @"I:\RootFolder1")
                    {
                        reader.SkipChildren();
                    }
                }
                else if (entry is DBRootDirectoryEntry rootDirEntry)
                {
                    if (rootDirEntry.FullName == @"I:\")
                    {
                        reader.SkipChildren();
                    }
                }
            } while (entry != null);
        }
        public void Verify_FirstEntry_IsHeader()
        {
            var reader = new LocateDBReader(testStream1, true);

            var firstEntry = reader.Read();

            Assert.That(firstEntry, Is.TypeOf <DBHeader>());
        }
        public void Verify_FileEntries_ShouldNotContainDoubleBackSlashes()
        {
            var reader = new LocateDBReader(testStream1, true);

            DBEntry entry;

            do
            {
                entry = reader.Read();

                if (entry is DBFileEntry fileEntry)
                {
                    Assert.That(fileEntry.FullName, Does.Not.Contain("\\\\"));
                }
            } while (entry != null);
        }
        public void Verify_SecondEntry_IsValidRootDirectory()
        {
            var reader = new LocateDBReader(testStream1, true);

            reader.Read();

            var secondEntry = reader.Read();

            Assert.That(secondEntry, Is.TypeOf <DBRootDirectoryEntry>());
            Assert.That(secondEntry is DBRootDirectoryEntry, Is.True);
            Assert.That(((DBRootDirectoryEntry)secondEntry).DataLength, Is.EqualTo(986));
            Assert.That(((DBRootDirectoryEntry)secondEntry).RootType, Is.EqualTo(DBRootType.Removable));
            Assert.That(((DBRootDirectoryEntry)secondEntry).VolumeName, Is.EqualTo("LOCATE32_NTFS"));
            Assert.That(((DBRootDirectoryEntry)secondEntry).VolumeSerial, Is.EqualTo(3838827262));
            Assert.That(((DBRootDirectoryEntry)secondEntry).FileSystem, Is.EqualTo("NTFS"));
            Assert.That(((DBRootDirectoryEntry)secondEntry).NumberOfFiles, Is.EqualTo(10));
            Assert.That(((DBRootDirectoryEntry)secondEntry).NumberOfDirectories, Is.EqualTo(7));
        }
        public void Verify_Header_IsValid()
        {
            var reader = new LocateDBReader(testStream1, true);

            var header = reader.Read() as DBHeader;

            Assert.That(header, Is.Not.Null);
            Assert.That(header.Creator, Is.EqualTo("Creator goes here"));
            Assert.That(header.Description, Is.EqualTo("Description goes here"));
            Assert.That(header.Marker, Is.EqualTo("LOCATEDB"));
            Assert.That(header.Version, Is.EqualTo("20"));
            Assert.That(header.Flags.HasFlag(DBArchiveAttributes.LongFileName), Is.True);
            Assert.That(header.Flags.HasFlag(DBArchiveAttributes.UnicodeCharset), Is.True);
            Assert.That(header.Flags.HasFlag(DBArchiveAttributes.AnsiCharset), Is.False);
            Assert.That(header.NumberOfFiles, Is.EqualTo(10));
            Assert.That(header.NumberOfDirectories, Is.EqualTo(7));
            Assert.That(header.CreationTime, Is.EqualTo(new DBFileTime(2020, 4, 15, 13, 45, 12)));
            Assert.That(header.RemainingExtraBytes, Is.EqualTo(336));
        }