This repository has been archived by the owner on Jun 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Console.Print, PrintLine and Clear methods (#18)
- Loading branch information
1 parent
96ea751
commit f878abf
Showing
4 changed files
with
280 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,228 @@ | ||
using Xunit; | ||
|
||
namespace PatienceOS.Kernel.Tests | ||
{ | ||
unsafe public class ConsoleTests | ||
{ | ||
[Fact] | ||
public void Console_Should_Write_Hello() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("Hello"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', frameBuffer.Fetch(0)); | ||
Assert.Equal((byte)'e', frameBuffer.Fetch(2)); | ||
Assert.Equal((byte)'l', frameBuffer.Fetch(4)); | ||
Assert.Equal((byte)'l', frameBuffer.Fetch(6)); | ||
Assert.Equal((byte)'o', frameBuffer.Fetch(8)); | ||
} | ||
} | ||
} | ||
using Xunit; | ||
|
||
namespace PatienceOS.Kernel.Tests | ||
{ | ||
unsafe public class ConsoleTests | ||
{ | ||
[Fact] | ||
public void Should_Write_AB() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("AB"); | ||
|
||
// Then | ||
Assert.Equal((byte)'A', buffer[0]); | ||
Assert.Equal((byte)'B', buffer[2]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Clear_AB() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("AB"); | ||
console.Clear(); | ||
|
||
// Then | ||
Assert.Equal((byte)' ', buffer[0]); | ||
Assert.Equal((byte)' ', buffer[2]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Write_A_EOL_B() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("A\nB"); | ||
|
||
// Then | ||
Assert.Equal((byte)'A', buffer[0]); | ||
Assert.Equal((byte)'B', buffer[80 * 2 + 0]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Clear_A_EOL_B() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("A\nB"); | ||
console.Clear(); | ||
|
||
// Then | ||
Assert.Equal((byte)' ', buffer[0]); | ||
Assert.Equal((byte)' ', buffer[80 * 2 + 0]); | ||
} | ||
|
||
unsafe public class ThreeXThree | ||
{ | ||
[Fact] | ||
public void Should_Write_ABC_EOL_DEF_EOL_GHI() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[3 * 3 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(3, 3, frameBuffer); | ||
|
||
// When | ||
console.Print("ABCDEFGHI"); | ||
|
||
// Then | ||
Assert.Equal((byte)'A', buffer[0]); | ||
Assert.Equal((byte)'B', buffer[2]); | ||
Assert.Equal((byte)'C', buffer[4]); | ||
Assert.Equal((byte)'D', buffer[6]); | ||
Assert.Equal((byte)'E', buffer[8]); | ||
Assert.Equal((byte)'F', buffer[10]); | ||
Assert.Equal((byte)'G', buffer[12]); | ||
Assert.Equal((byte)'H', buffer[14]); | ||
Assert.Equal((byte)'I', buffer[16]); | ||
} | ||
} | ||
|
||
unsafe public class HelloWorld | ||
{ | ||
[Fact] | ||
public void Should_Write_Hello_Space_World_With_Print_Statement() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("Hello World"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', buffer[0]); | ||
Assert.Equal((byte)'e', buffer[2]); | ||
Assert.Equal((byte)'l', buffer[4]); | ||
Assert.Equal((byte)'l', buffer[6]); | ||
Assert.Equal((byte)'o', buffer[8]); | ||
Assert.Equal((byte)' ', buffer[10]); | ||
Assert.Equal((byte)'W', buffer[12]); | ||
Assert.Equal((byte)'o', buffer[14]); | ||
Assert.Equal((byte)'r', buffer[16]); | ||
Assert.Equal((byte)'l', buffer[18]); | ||
Assert.Equal((byte)'d', buffer[20]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Write_Hello_Space_World_With_Print_Statements() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("Hello"); | ||
console.Print(" "); | ||
console.Print("World"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', buffer[0]); | ||
Assert.Equal((byte)'e', buffer[2]); | ||
Assert.Equal((byte)'l', buffer[4]); | ||
Assert.Equal((byte)'l', buffer[6]); | ||
Assert.Equal((byte)'o', buffer[8]); | ||
Assert.Equal((byte)' ', buffer[10]); | ||
Assert.Equal((byte)'W', buffer[12]); | ||
Assert.Equal((byte)'o', buffer[14]); | ||
Assert.Equal((byte)'r', buffer[16]); | ||
Assert.Equal((byte)'l', buffer[18]); | ||
Assert.Equal((byte)'d', buffer[20]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Write_Hello_EOL_World_EOL_With_Print_Statement() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("Hello\nWorld\n"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', buffer[0]); | ||
Assert.Equal((byte)'e', buffer[2]); | ||
Assert.Equal((byte)'l', buffer[4]); | ||
Assert.Equal((byte)'l', buffer[6]); | ||
Assert.Equal((byte)'o', buffer[8]); | ||
Assert.Equal((byte)'W', buffer[80 * 2 + 0]); | ||
Assert.Equal((byte)'o', buffer[80 * 2 + 2]); | ||
Assert.Equal((byte)'r', buffer[80 * 2 + 4]); | ||
Assert.Equal((byte)'l', buffer[80 * 2 + 6]); | ||
Assert.Equal((byte)'d', buffer[80 * 2 + 8]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Write_Hello_EOL_World_EOL_With_Print_Statements() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.Print("Hello\n"); | ||
console.Print("World\n"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', buffer[0]); | ||
Assert.Equal((byte)'e', buffer[2]); | ||
Assert.Equal((byte)'l', buffer[4]); | ||
Assert.Equal((byte)'l', buffer[6]); | ||
Assert.Equal((byte)'o', buffer[8]); | ||
Assert.Equal((byte)'W', buffer[80 * 2 + 0]); | ||
Assert.Equal((byte)'o', buffer[80 * 2 + 2]); | ||
Assert.Equal((byte)'r', buffer[80 * 2 + 4]); | ||
Assert.Equal((byte)'l', buffer[80 * 2 + 6]); | ||
Assert.Equal((byte)'d', buffer[80 * 2 + 8]); | ||
} | ||
|
||
[Fact] | ||
public void Should_Write_Hello_EOL_World_EOL_With_PrintLine_Statements() | ||
{ | ||
// Given | ||
byte* buffer = stackalloc byte[80 * 25 * 2]; | ||
var frameBuffer = new FrameBuffer(buffer); | ||
var console = new Console(80, 25, frameBuffer); | ||
|
||
// When | ||
console.PrintLine("Hello"); | ||
console.PrintLine("World"); | ||
|
||
// Then | ||
Assert.Equal((byte)'H', buffer[0]); | ||
Assert.Equal((byte)'e', buffer[2]); | ||
Assert.Equal((byte)'l', buffer[4]); | ||
Assert.Equal((byte)'l', buffer[6]); | ||
Assert.Equal((byte)'o', buffer[8]); | ||
Assert.Equal((byte)'W', buffer[80 * 2 + 0]); | ||
Assert.Equal((byte)'o', buffer[80 * 2 + 2]); | ||
Assert.Equal((byte)'r', buffer[80 * 2 + 4]); | ||
Assert.Equal((byte)'l', buffer[80 * 2 + 6]); | ||
Assert.Equal((byte)'d', buffer[80 * 2 + 8]); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters