Skip to content

Commit 014f990

Browse files
committed
Fix vgaconsole tests.
The buffer is now made of u32s.
1 parent baa0c34 commit 014f990

File tree

1 file changed

+35
-28
lines changed

1 file changed

+35
-28
lines changed

src/vgaconsole.rs

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -811,13 +811,20 @@ mod tests {
811811
///
812812
/// Each glyph and attribute is printed like "xx yy", separated by "|" for
813813
/// each column, and "\n" for each row.
814-
fn print_buffer(buffer: &[u8]) -> String {
814+
fn print_buffer(buffer: &[u32]) -> String {
815815
use std::fmt::Write;
816816
let mut output = String::new();
817817
let mut pos = 0;
818+
let base_ptr = buffer.as_ptr() as *const u8;
818819
for _r in 0..HEIGHT {
819820
for _c in 0..WIDTH {
820-
write!(output, "{:02x} {:02x}|", buffer[pos], buffer[pos + 1]).unwrap();
821+
write!(
822+
output,
823+
"{:02x} {:02x}|",
824+
unsafe { *base_ptr.add(pos) },
825+
unsafe { *base_ptr.add(pos + 1) }
826+
)
827+
.unwrap();
821828
pos += 2;
822829
}
823830
writeln!(output).unwrap();
@@ -827,7 +834,7 @@ mod tests {
827834

828835
#[test]
829836
fn basic_print() {
830-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
837+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
831838
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
832839
console.write_bstr(b"Hello\n");
833840
assert_eq!(
@@ -847,7 +854,7 @@ mod tests {
847854

848855
#[test]
849856
fn cr_overprint() {
850-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
857+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
851858
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
852859
console.write_bstr(b"0\r1\n");
853860
// Second row
@@ -872,7 +879,7 @@ mod tests {
872879

873880
#[test]
874881
fn scroll() {
875-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
882+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
876883
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
877884
console.write_bstr(b"0\n");
878885
console.write_bstr(b"1\n");
@@ -898,7 +905,7 @@ mod tests {
898905

899906
#[test]
900907
fn home1() {
901-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
908+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
902909
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
903910
// Print 0 and replace it with a 1
904911
console.write_bstr(b"0\n\x1b[0;0H1\n");
@@ -921,7 +928,7 @@ mod tests {
921928

922929
#[test]
923930
fn home2() {
924-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
931+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
925932
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
926933
// Print 0 and replace it with a 1
927934
console.write_bstr(b"0\n\x1b[1;1H1\n");
@@ -941,7 +948,7 @@ mod tests {
941948

942949
#[test]
943950
fn home3() {
944-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
951+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
945952
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
946953
// Print 0 and replace it with a 1
947954
console.write_bstr(b"0\n\x1b[H1\n");
@@ -964,7 +971,7 @@ mod tests {
964971

965972
#[test]
966973
fn movecursor() {
967-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
974+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
968975
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
969976
// Print 0 and replace it with a 1
970977
console.write_bstr(b"\x1b[2;2H1");
@@ -986,7 +993,7 @@ mod tests {
986993

987994
#[test]
988995
fn sgr_reset() {
989-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
996+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
990997
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
991998
console.write_bstr(b"\x1b[0m1");
992999
assert_eq!(
@@ -1006,7 +1013,7 @@ mod tests {
10061013

10071014
#[test]
10081015
fn sgr_backgrounds() {
1009-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1016+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
10101017
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
10111018
// +-------+-----+-----+-----+-----+-----+-----+-----+
10121019
// + BLINK | BG2 | BG1 | BG0 | FG3 | FG2 | FG1 | FG0 |
@@ -1043,7 +1050,7 @@ mod tests {
10431050

10441051
#[test]
10451052
fn sgr_foregrounds() {
1046-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1053+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
10471054
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
10481055
// +-------+-----+-----+-----+-----+-----+-----+-----+
10491056
// + BLINK | BG2 | BG1 | BG0 | FG3 | FG2 | FG1 | FG0 |
@@ -1080,7 +1087,7 @@ mod tests {
10801087

10811088
#[test]
10821089
fn sgr_bold() {
1083-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1090+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
10841091
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
10851092
// +-------+-----+-----+-----+-----+-----+-----+-----+
10861093
// + BLINK | BG2 | BG1 | BG0 | FG3 | FG2 | FG1 | FG0 |
@@ -1119,7 +1126,7 @@ mod tests {
11191126

11201127
#[test]
11211128
fn sgr_all_three() {
1122-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1129+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
11231130
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
11241131
// +-------+-----+-----+-----+-----+-----+-----+-----+
11251132
// + BLINK | BG2 | BG1 | BG0 | FG3 | FG2 | FG1 | FG0 |
@@ -1151,7 +1158,7 @@ mod tests {
11511158

11521159
#[test]
11531160
fn cursor_up() {
1154-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1161+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
11551162
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
11561163
// Go home, print 0\n then go up a line and replace the 0 with a 1
11571164
console.write_bstr(b"\x1b[H0\n\x1b[A1");
@@ -1217,7 +1224,7 @@ mod tests {
12171224

12181225
#[test]
12191226
fn cursor_down() {
1220-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1227+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
12211228
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
12221229
// Go home, go down 1 line, and print 0
12231230
console.write_bstr(b"\x1b[H\x1b[B0");
@@ -1283,7 +1290,7 @@ mod tests {
12831290

12841291
#[test]
12851292
fn cursor_forward() {
1286-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1293+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
12871294
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
12881295
// Print .0.1.2..3
12891296
console.write_bstr(b"\x1b[C0");
@@ -1305,7 +1312,7 @@ mod tests {
13051312

13061313
#[test]
13071314
fn cursor_backwards() {
1308-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1315+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
13091316
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
13101317
// Print 123 then replace the 3 with a 4
13111318
console.write_bstr(b"123\x1b[D4");
@@ -1363,7 +1370,7 @@ mod tests {
13631370

13641371
#[test]
13651372
fn cursor_next_line() {
1366-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1373+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
13671374
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
13681375
// Go home, print xxx, go down 1 line, and print 0
13691376
console.write_bstr(b"\x1b[Hxxx\x1b[E0");
@@ -1430,7 +1437,7 @@ mod tests {
14301437

14311438
#[test]
14321439
fn cursor_previous_line() {
1433-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1440+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
14341441
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
14351442
// Print xx, xx, 11, 22, 33, 456 on the first five lines
14361443
// Then go back and replace 4 with 7, 3 with 8, 2 with 9 and the first x with 0
@@ -1453,7 +1460,7 @@ mod tests {
14531460

14541461
#[test]
14551462
fn cursor_horizontal_absolute() {
1456-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1463+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
14571464
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
14581465
// Print 12345 the replace the 3 with a 9
14591466
console.write_bstr(b"12345\x1b[3G9");
@@ -1474,7 +1481,7 @@ mod tests {
14741481

14751482
#[test]
14761483
fn cursor_position() {
1477-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1484+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
14781485
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
14791486
// In row;col form.
14801487
console.write_bstr(b"xxx\x1b[H0\x1b[;3H1\x1b[2;H2\x1b[3;4H3");
@@ -1498,7 +1505,7 @@ mod tests {
14981505

14991506
#[test]
15001507
fn erase_in_display_cursor_to_end() {
1501-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1508+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
15021509
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
15031510
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
15041511
assert_eq!(console.inner.row, 1);
@@ -1521,7 +1528,7 @@ mod tests {
15211528

15221529
#[test]
15231530
fn erase_in_display_start_to_cursor() {
1524-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1531+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
15251532
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
15261533
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
15271534
assert_eq!(console.inner.row, 1);
@@ -1544,7 +1551,7 @@ mod tests {
15441551

15451552
#[test]
15461553
fn erase_in_display_entire_screen() {
1547-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1554+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
15481555
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
15491556
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
15501557
assert_eq!(console.inner.row, 1);
@@ -1567,7 +1574,7 @@ mod tests {
15671574

15681575
#[test]
15691576
fn erase_in_line_cursor_to_end() {
1570-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1577+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
15711578
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
15721579
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
15731580
assert_eq!(console.inner.row, 1);
@@ -1590,7 +1597,7 @@ mod tests {
15901597

15911598
#[test]
15921599
fn erase_in_line_start_to_cursor() {
1593-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1600+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
15941601
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
15951602
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
15961603
assert_eq!(console.inner.row, 1);
@@ -1613,7 +1620,7 @@ mod tests {
16131620

16141621
#[test]
16151622
fn erase_in_line_entire_line() {
1616-
let mut buffer = [0u8; WIDTH * HEIGHT * 2];
1623+
let mut buffer = [0u32; WIDTH * HEIGHT / 2];
16171624
let mut console = VgaConsole::new(buffer.as_mut_ptr(), WIDTH as isize, HEIGHT as isize);
16181625
console.write_bstr(b"xxx\nxxx\n\x1b[2;2H");
16191626
assert_eq!(console.inner.row, 1);

0 commit comments

Comments
 (0)