Beispiel #1
0
        public void ChildFileIterationPeek()
        {
            var table = new HierarchicalRomFileTable();

            var itemA = new RomFileInfo {
                Length = 1, Offset = 1
            };
            var itemB = new RomFileInfo {
                Length = 2, Offset = 2
            };

            table.AddFile("/a/a", ref itemA);
            table.AddFile("/a/b", ref itemB);

            table.TryOpenDirectory("/a", out FindPosition position);

            table.TryOpenFile(position.NextFile, out RomFileInfo peekItemA);
            Assert.Equal(itemA, peekItemA);

            table.FindNextFile(ref position, out RomFileInfo iterateItemA, out _);
            Assert.Equal(itemA, iterateItemA);

            table.TryOpenFile(position.NextFile, out RomFileInfo peekItemB);
            Assert.Equal(itemB, peekItemB);

            table.FindNextFile(ref position, out RomFileInfo iterateItemB, out _);
            Assert.Equal(itemB, iterateItemB);
        }
Beispiel #2
0
        public void ChildFileIteration()
        {
            const int fileCount = 10;
            var       table     = new HierarchicalRomFileTable();

            for (int i = 0; i < fileCount; i++)
            {
                var item = new RomFileInfo {
                    Length = i, Offset = i
                };
                table.AddFile($"/a/{i}", ref item);
            }

            bool openDirSuccess = table.TryOpenDirectory("/a", out FindPosition position);

            Assert.True(openDirSuccess, "Error opening directory");

            for (int i = 0; i < fileCount; i++)
            {
                var expectedItem = new RomFileInfo {
                    Length = i, Offset = i
                };
                string expectedName = i.ToString();

                bool success = table.FindNextFile(ref position, out RomFileInfo actualItem, out string actualName);

                Assert.True(success, $"Failed reading file {i}");
                Assert.Equal(expectedItem, actualItem);
                Assert.Equal(expectedName, actualName);
            }

            bool endOfFilesSuccess = table.FindNextFile(ref position, out _, out _);

            Assert.False(endOfFilesSuccess, "Table returned more files than it should");
        }
Beispiel #3
0
        public void OpeningNonexistentDirectoryFails()
        {
            var table = new HierarchicalRomFileTable();

            bool success = table.TryOpenDirectory("/foo", out _);

            Assert.False(success);
        }
Beispiel #4
0
        public void OpeningFileAsDirectoryFails()
        {
            var table    = new HierarchicalRomFileTable();
            var fileInfo = new RomFileInfo();

            table.AddFile("/file", ref fileInfo);

            bool success = table.TryOpenDirectory("/file", out _);

            Assert.False(success);
        }
Beispiel #5
0
        public void AddingDirectory()
        {
            var table            = new HierarchicalRomFileTable();
            var expectedPosition = new FindPosition {
                NextDirectory = -1, NextFile = -1
            };

            table.AddDirectory("/dir");
            bool success = table.TryOpenDirectory("/dir", out FindPosition position);

            Assert.True(success, "Opening directory failed");
            Assert.Equal(expectedPosition, position);
        }