@@ -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\r 1\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\n xxx\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\n xxx\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\n xxx\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\n xxx\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\n xxx\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\n xxx\n \x1b [2;2H" ) ;
16191626 assert_eq ! ( console. inner. row, 1 ) ;
0 commit comments