vga_buffer_rs 0.1.2

A rust crate that allow easy Vga text buffer manipulation
use vga_buffer_rs::buffer::Buffer;
use vga_buffer_rs::draw::BoxShape;
use vga_buffer_rs::draw::SHAPE_SIDE;
use vga_buffer_rs::draw::SHAPE_UP;
use vga_buffer_rs::DrawTarget;
use vga_buffer_rs::BUFFER_HEIGHT;
use vga_buffer_rs::BUFFER_SIZE;
use vga_buffer_rs::BUFFER_WIDTH;

#[test]
fn test_draw_not_transparent() {
    let bo2 = BoxShape::new((0, 0), (20, 20), false);
    let bo = BoxShape::new((0, 0), BUFFER_SIZE, false);
    let mut b = Buffer::new();
    b.draw(&bo2);
    b.draw(&bo);

    for i in &b.buffer.chars {
        for j in i {
            print!("{}", j.ascii_char as char);
        }
        println!();
    }

    for i in 1..b.buffer.chars.len() - 1 {
        assert_eq!(b.buffer.chars[i][0].ascii_char, SHAPE_SIDE);
        for x in 1..BUFFER_WIDTH - 1 {
            assert_eq!(b.buffer.chars[i][x].ascii_char, b' ');
        }
        assert_eq!(b.buffer.chars[i][BUFFER_WIDTH - 1].ascii_char, SHAPE_SIDE);
    }
    assert_eq!(b.buffer.chars[0][0].ascii_char, SHAPE_SIDE);
    assert_eq!(b.buffer.chars[0][BUFFER_WIDTH - 1].ascii_char, SHAPE_SIDE);
    for i in 1..b.buffer.chars[0].len() - 1 {
        assert_eq!(b.buffer.chars[0][i].ascii_char, SHAPE_UP);
    }
    assert_eq!(b.buffer.chars[BUFFER_HEIGHT - 1][0].ascii_char, SHAPE_SIDE);
    assert_eq!(
        b.buffer.chars[BUFFER_HEIGHT - 1][BUFFER_WIDTH - 1].ascii_char,
        SHAPE_SIDE
    );
    for i in 1..b.buffer.chars[BUFFER_HEIGHT - 1].len() - 1 {
        assert_eq!(b.buffer.chars[0][i].ascii_char, SHAPE_UP);
    }
}

#[test]
fn test_draw_transparent() {
    let bo2 = BoxShape::new((0, 0), (20, 20), false);
    let bo = BoxShape::new((0, 0), BUFFER_SIZE, true);
    let mut b = Buffer::new();
    b.draw(&bo2);
    b.draw(&bo);

    for i in &b.buffer.chars {
        for j in i {
            print!("{}", j.ascii_char as char);
        }
        println!();
    }
    for i in 1..19 {
            assert_eq!(b.buffer.chars[i][19].ascii_char, SHAPE_SIDE);
    }
    for i in 1..b.buffer.chars.len() - 1 {
        assert_eq!(b.buffer.chars[i][0].ascii_char, SHAPE_SIDE);
        assert_eq!(b.buffer.chars[i][BUFFER_WIDTH - 1].ascii_char, SHAPE_SIDE);
    }
    assert_eq!(b.buffer.chars[0][0].ascii_char, SHAPE_SIDE);
    assert_eq!(b.buffer.chars[0][BUFFER_WIDTH - 1].ascii_char, SHAPE_SIDE);
    for i in 1..b.buffer.chars[0].len() - 1 {
        assert_eq!(b.buffer.chars[0][i].ascii_char, SHAPE_UP);
    }
    assert_eq!(b.buffer.chars[BUFFER_HEIGHT - 1][0].ascii_char, SHAPE_SIDE);
    assert_eq!(
        b.buffer.chars[BUFFER_HEIGHT - 1][BUFFER_WIDTH - 1].ascii_char,
        SHAPE_SIDE
    );
    for i in 1..b.buffer.chars[BUFFER_HEIGHT - 1].len() - 1 {
        assert_eq!(b.buffer.chars[0][i].ascii_char, SHAPE_UP);
    }
}