public void open_read_and_actually_read_and_close_bytes(EnumOpenFlags mode, ushort bufSize) { Reset(); var filePath = CreateTextFile("file.txt", LOREM_IPSUM); new FileInfo(filePath).Length.Should().Be(LOREM_IPSUM.Length); var fd = open("file.txt", mode); fd.Should().NotBe(0xFFFF); var memoryStream = new MemoryStream(); var dstBuf = mbbsEmuMemoryCore.AllocateVariable(null, 4096); while (memoryStream.Length < LOREM_IPSUM.Length) { var elementsRead = read(fd, dstBuf, bufSize); if (elementsRead == 0) { break; } elementsRead.Should().BeLessOrEqualTo(bufSize); memoryStream.Write(mbbsEmuMemoryCore.GetArray(dstBuf, elementsRead)); } Encoding.ASCII.GetString(memoryStream.ToArray()).Should().Be(LOREM_IPSUM); close(fd).Should().Be(0); close(fd).Should().Be(0xFFFF); }
public void open_write_new_file(EnumOpenFlags mode, ushort elementSize) { Reset(); var fd = open("FILE.TXT", mode); fd.Should().NotBe(0xFFFF); var buffer = mbbsEmuMemoryCore.AllocateVariable(null, LOREM_IPSUM_LENGTH); mbbsEmuMemoryCore.SetArray(buffer, Encoding.ASCII.GetBytes(LOREM_IPSUM)); var written = 0; while (written < LOREM_IPSUM.Length) { var bytesWritten = write(fd, buffer + written, (ushort)Math.Min(LOREM_IPSUM.Length - written, elementSize)); bytesWritten.Should().BeLessThan(0xFFFF); written += bytesWritten; } close(fd).Should().Be(0); new FileInfo(Path.Join(mbbsModule.ModulePath, "FILE.TXT")).Length.Should().Be(LOREM_IPSUM.Length); }
public void open_read_doesntExist(EnumOpenFlags mode) { Reset(); var fd = open("NOEXIST.TXT", mode); fd.Should().Be(0xFFFF); }
public void open_write_implicitCreate(EnumOpenFlags mode) { Reset(); var fd = open("NOWEXIST.TXT", mode); fd.Should().NotBe(0xFFFF); File.Exists(Path.Combine(mbbsModule.ModulePath, "NOWEXIST.TXT")).Should().BeTrue(); close(fd).Should().Be(0); }
public void open_read_and_close(EnumOpenFlags mode) { Reset(); var filePath = CreateTextFile("file.txt", LOREM_IPSUM); new FileInfo(filePath).Length.Should().Be(LOREM_IPSUM.Length); var fd = open("file.txt", mode); fd.Should().NotBe(0xFFFF); close(fd).Should().Be(0); }
protected ushort open(string filename, EnumOpenFlags mode) { var filenamePointer = mbbsEmuMemoryCore.AllocateVariable(null, (ushort)(filename.Length + 1)); mbbsEmuMemoryCore.SetArray(filenamePointer, Encoding.ASCII.GetBytes(filename)); ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, OPEN_ORDINAL, new List <ushort> { filenamePointer.Offset, filenamePointer.Segment, (ushort)mode }); return(mbbsEmuCpuRegisters.AX); }
public void open_write_truncate_preexisting_file(EnumOpenFlags mode) { Reset(); var contents = "This is really cool!\r\n"; var filePath = CreateTextFile("file.txt", contents); new FileInfo(filePath).Length.Should().Be(contents.Length); var fd = open("file.txt", mode); fd.Should().NotBe(0xFFFF); close(fd).Should().Be(0); new FileInfo(filePath).Length.Should().Be(0); }
public void open_initial_read(EnumOpenFlags mode, ushort bytes, string expectedString, ushort expectedFileLength) { Reset(); var filePath = CreateTextFile("file.txt", LOREM_IPSUM); new FileInfo(filePath).Length.Should().Be(LOREM_IPSUM.Length); var fd = open("file.txt", mode); fd.Should().NotBe(0xFFFF); var dstBuf = mbbsEmuMemoryCore.AllocateVariable(null, 4096); var bytesRead = read(fd, dstBuf, bytes); if ((short)bytesRead > 0) { Encoding.ASCII.GetString(mbbsEmuMemoryCore.GetArray(dstBuf, bytesRead)).Should().Be(expectedString); } close(fd).Should().Be(0); new FileInfo(filePath).Length.Should().Be(expectedFileLength); }