Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing File Tests / Minor Tweaks #404

Merged
merged 4 commits into from
Feb 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions MBBSEmu.Tests/ExportedModules/Majorbbs/FileTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ public class FileTestBase : ExportedModuleTestBase, IDisposable
protected const int CLOSE_ORDINAL = 110;
protected const int FILELENGTH_ORDINAL = 211;

protected const int FPUTC_ORDINAL = 227;
protected const int FGETC_ORDINAL = 19;
protected const int UNGETC_ORDINAL = 615;
protected const int FSEEK_ORDINAL = 266;
protected const int FPUTS_ORDINAL = 1125;
protected const int FGETS_ORDINAL = 210;

protected FileTestBase() : base(Path.Join(Path.GetTempPath(), $"mbbsemu{RANDOM.Next()}"))
{
Directory.CreateDirectory(mbbsModule.ModulePath);
Expand Down Expand Up @@ -154,6 +161,81 @@ protected int filelength(ushort fd)
return mbbsEmuCpuRegisters.GetLong();
}

protected ushort fgetc(FarPtr srcPtr)
{
ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, FGETC_ORDINAL, new List<FarPtr>
{
srcPtr
});

return mbbsEmuCpuRegisters.AX;
}

protected ushort ungetc(ushort ungetChar, FarPtr srcPtr)
{
ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, UNGETC_ORDINAL, new List<ushort>
{
ungetChar,
srcPtr.Offset,
srcPtr.Segment
});

return mbbsEmuCpuRegisters.AX;
}

protected ushort fputc(ushort putChar, FarPtr srcPtr)
{
ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, FPUTC_ORDINAL, new List<ushort>
{
putChar,
srcPtr.Offset,
srcPtr.Segment
});

return mbbsEmuCpuRegisters.AX;
}

protected FarPtr fgets(FarPtr putStringPtr, ushort numChars, FarPtr srcPtr)
{
ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, FGETS_ORDINAL, new List<ushort>
{
putStringPtr.Offset,
putStringPtr.Segment,
numChars,
srcPtr.Offset,
srcPtr.Segment
});

return mbbsEmuCpuRegisters.GetPointer();
}

protected ushort fputs(FarPtr putStringPtr, FarPtr srcPtr)
{
ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, FPUTS_ORDINAL, new List<FarPtr>
{
putStringPtr,
srcPtr
});

return mbbsEmuCpuRegisters.AX;
}

protected ushort fseek(FarPtr srcPtr, int offset, ushort origin)
{


ExecuteApiTest(HostProcess.ExportedModules.Majorbbs.Segment, FSEEK_ORDINAL, new List<ushort>
{
srcPtr.Offset,
srcPtr.Segment,
(ushort)offset,
(ushort)(offset >> 16),
origin
});

return mbbsEmuCpuRegisters.AX;
}

protected string CreateTextFile(string filename, string contents)
{
var filePath = Path.Join(mbbsModule.ModulePath, filename);
Expand Down
Loading