示例#1
0
        public void AddingSiblingFiles()
        {
            var table = new HierarchicalRomFileTable();

            var itemC1 = new RomFileInfo {
                Length = 1, Offset = 1
            };
            var itemC2 = new RomFileInfo {
                Length = 2, Offset = 2
            };
            var itemC3 = new RomFileInfo {
                Length = 3, Offset = 3
            };

            table.AddFile("/a/b/c1", ref itemC1);
            table.AddFile("/a/b/c2", ref itemC2);
            table.AddFile("/a/b/c3", ref itemC3);

            table.TryOpenFile("/a/b/c1", out RomFileInfo actualItemC1);
            table.TryOpenFile("/a/b/c2", out RomFileInfo actualItemC2);
            table.TryOpenFile("/a/b/c3", out RomFileInfo actualItemC3);

            Assert.Equal(itemC1, actualItemC1);
            Assert.Equal(itemC2, actualItemC2);
            Assert.Equal(itemC3, actualItemC3);
        }
示例#2
0
        public void AddingCousinFiles()
        {
            var table = new HierarchicalRomFileTable();

            var itemB1 = new RomFileInfo {
                Length = 1, Offset = 1
            };
            var itemB2 = new RomFileInfo {
                Length = 2, Offset = 2
            };
            var itemB3 = new RomFileInfo {
                Length = 3, Offset = 3
            };

            table.AddFile("/a/b1/c", ref itemB1);
            table.AddFile("/a/b2/c", ref itemB2);
            table.AddFile("/a/b3/c", ref itemB3);

            table.TryOpenFile("/a/b1/c", out RomFileInfo actualItemB1);
            table.TryOpenFile("/a/b2/c", out RomFileInfo actualItemB2);
            table.TryOpenFile("/a/b3/c", out RomFileInfo actualItemB3);

            Assert.Equal(itemB1, actualItemB1);
            Assert.Equal(itemB2, actualItemB2);
            Assert.Equal(itemB3, actualItemB3);
        }
示例#3
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);
        }
示例#4
0
        public void OpeningNonexistentFileFails()
        {
            var table = new HierarchicalRomFileTable();

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

            Assert.False(success);
        }
示例#5
0
        public void OpeningDirectoryAsFileFails()
        {
            var table = new HierarchicalRomFileTable();

            table.AddDirectory("/dir");

            bool success = table.TryOpenFile("/dir", out _);

            Assert.False(success);
        }
示例#6
0
        public void SimpleAddAndRead()
        {
            const string path = "/a/b";

            var table = new HierarchicalRomFileTable();
            var item  = new RomFileInfo {
                Length = 1, Offset = 1
            };

            table.AddFile(path, ref item);
            bool success = table.TryOpenFile(path, out RomFileInfo readItem);

            Assert.True(success, "Table read failed");
            Assert.Equal(item, readItem);
        }
示例#7
0
        public void UpdateExistingFile()
        {
            const string path = "/a/b";

            var table        = new HierarchicalRomFileTable();
            var originalItem = new RomFileInfo {
                Length = 1, Offset = 1
            };
            var newItem = new RomFileInfo {
                Length = 1, Offset = 1
            };

            table.AddFile(path, ref originalItem);
            table.AddFile(path, ref newItem);

            bool success = table.TryOpenFile(path, out RomFileInfo readItem);

            Assert.True(success, "Table read failed");
            Assert.Equal(newItem, readItem);
        }