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); }
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"); }
public void OpeningNonexistentDirectoryFails() { var table = new HierarchicalRomFileTable(); bool success = table.TryOpenDirectory("/foo", out _); Assert.False(success); }
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); }
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); }