#include #include #include #include #include "pixmap.h" #include "ascii_pixmap.h" #include "packed_pixmap.h" static void test_ascii_pixmap() { char ascii_buf[4000]; char ascii_buf2[4000]; struct pixmap * p; assert(p = ascii_pixmap_new(100, 40, ascii_buf)); assert(ascii_pixmap_get_foreground(p) == '*'); assert(ascii_pixmap_get_background(p) == ' '); ascii_pixmap_set_background(p, 'A'); assert(ascii_pixmap_get_background(p) == 'A'); ascii_pixmap_set_foreground(p, 'B'); assert(ascii_pixmap_get_foreground(p) == 'B'); ascii_pixmap_set_background(p, ' '); ascii_pixmap_set_foreground(p, '*'); assert(ascii_pixmap_get_background(p) == ' '); assert(ascii_pixmap_get_foreground(p) == '*'); assert(pixmap_get_width(p) == 100); assert(pixmap_get_height(p) == 40); assert(pixmap_get_memory_size(p) == 4000); memset(ascii_buf2, ' ', 4000); assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 0); assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); pixmap_set_pixel(p, 100, 0, 1); assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); pixmap_set_pixel(p, 0, 40, 1); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 1); for (int i = 0; i < 20; ++i) ascii_buf2[101*i] = '*'; assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); pixmap_clear(p); memset(ascii_buf2, ' ', 4000); assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); pixmap_destroy(p); memset(ascii_buf, ' ', 4000); assert(p = ascii_pixmap_new(10, 10, ascii_buf)); ascii_pixmap_set_background(p, 'Y'); ascii_pixmap_set_foreground(p, 'X'); pixmap_clear(p); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 1); memset(ascii_buf2, ' ', 4000); memset(ascii_buf2, 'Y', 100); for (int i = 0; i < 10; ++i) ascii_buf2[11*i] = 'X'; assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); pixmap_set_pixel(p, 2, 2, 0); ascii_buf2[22] = 'Y'; assert(memcmp(ascii_buf, ascii_buf2, 4000) == 0); } static void test_packed_pixmap() { uint8_t buf[4000]; uint8_t buf2[4000]; struct pixmap * p; memset(buf, 255, 4000); memset(buf2, 255, 4000); assert(p = packed_pixmap_new(100, 40, buf)); assert(pixmap_get_width(p) == 100); assert(pixmap_get_height(p) == 40); assert(pixmap_get_memory_size(p) == 520); memset(buf2, 0, 520); assert(memcmp(buf, buf2, 4000) == 0); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 0); assert(memcmp(buf, buf2, 4000) == 0); pixmap_set_pixel(p, 100, 0, 1); assert(memcmp(buf, buf2, 4000) == 0); pixmap_set_pixel(p, 0, 40, 1); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 1); for (int i = 0; i < 20; ++i) { buf2[13*i + i/8] = 1; buf2[13*i + i/8] <<= i % 8; } assert(memcmp(buf, buf2, 4000) == 0); pixmap_clear(p); memset(buf2, 0, 520); assert(memcmp(buf, buf2, 4000) == 0); pixmap_destroy(p); memset(buf, 255, 4000); memset(buf2, 255, 4000); assert(p = packed_pixmap_new(10, 10, buf)); pixmap_clear(p); memset(buf2, 0, 20); for (int i = 0; i < 20; ++i) pixmap_set_pixel(p, i, i, 1); for (int i = 0; i < 10; ++i) { buf2[2*i + i/8] = 1; buf2[2*i + i/8] <<= i % 8; } assert(memcmp(buf, buf2, 4000) == 0); pixmap_set_pixel(p, 3, 2, 1); pixmap_set_pixel(p, 2, 2, 0); buf2[4] = 8; assert(memcmp(buf, buf2, 4000) == 0); } int main() { test_ascii_pixmap(); test_packed_pixmap(); printf("TESTS PASSED.\n"); }