diff --git a/Core/Src/SSD1306_oled.c b/Core/Src/SSD1306_oled.c index 1e12e27..4c53eca 100644 --- a/Core/Src/SSD1306_oled.c +++ b/Core/Src/SSD1306_oled.c @@ -150,7 +150,7 @@ void ssd1306_set_pixel(uint8_t x, uint8_t y, uint8_t bw) void ssd1306_write_to_buffer(const uint8_t* data, uint8_t width, uint8_t height, int8_t pos_x, int8_t pos_y) { - int8_t max_x, max_y; + int16_t max_x, max_y; uint8_t shift_x = 0, temp, row = 0; uint16_t buf_idx = 0, index = 0; diff --git a/test/support/buffer_oled_expect.c b/test/support/buffer_oled_expect.c index 5b0a262..21d5941 100644 --- a/test/support/buffer_oled_expect.c +++ b/test/support/buffer_oled_expect.c @@ -1,3 +1,5 @@ +#include "buffer_oled_expect.h" + const uint8_t picture_8pt[] = { // res: 128x8 - 128 bytes diff --git a/test/support/buffer_oled_expect.h b/test/support/buffer_oled_expect.h index 16bb1e6..35b1a03 100644 --- a/test/support/buffer_oled_expect.h +++ b/test/support/buffer_oled_expect.h @@ -1,24 +1,26 @@ #ifndef INC_BUFFER_OLED_EXPECT_H_ #define INC_BUFFER_OLED_EXPECT_H_ -const uint8_t picture_8pt[]; -const uint8_t posX_0_posY_0_8pt[]; -const uint8_t posX_0_posY_1_8pt[]; -const uint8_t posX_0_posY_2_8pt[]; -const uint8_t posX_0_posY_7_8pt[]; +#include "main.h" -const uint8_t picture_16pt[]; -const uint8_t posX_0_posY_0_16pt[]; -const uint8_t posX_0_posY_1_16pt[]; -const uint8_t posX_0_posY_4_16pt[]; -const uint8_t posX_0_posY_7_16pt[]; +const uint8_t picture_8pt[128]; +const uint8_t posX_0_posY_0_8pt[1024]; +const uint8_t posX_0_posY_1_8pt[1024]; +const uint8_t posX_0_posY_2_8pt[1024]; +const uint8_t posX_0_posY_7_8pt[1024]; -const uint8_t picture_12pt[]; -const uint8_t posX_0_posY_0_12pt[]; -const uint8_t posX_0_posY_1_12pt[]; -const uint8_t posX_0_posY_2_12pt[]; -const uint8_t posX_0_posY_4_12pt[]; -const uint8_t posX_0_posY_5_12pt[]; -const uint8_t posX_0_posY_7_12pt[]; +const uint8_t picture_16pt[256]; +const uint8_t posX_0_posY_0_16pt[1024]; +const uint8_t posX_0_posY_1_16pt[1024]; +const uint8_t posX_0_posY_4_16pt[1024]; +const uint8_t posX_0_posY_7_16pt[1024]; + +const uint8_t picture_12pt[256]; +const uint8_t posX_0_posY_0_12pt[1024]; +const uint8_t posX_0_posY_1_12pt[1024]; +const uint8_t posX_0_posY_2_12pt[1024]; +const uint8_t posX_0_posY_4_12pt[1024]; +const uint8_t posX_0_posY_5_12pt[1024]; +const uint8_t posX_0_posY_7_12pt[1024]; #endif diff --git a/test/test_SSD1306_oled.c b/test/test_SSD1306_oled.c index 4f4ac91..722a21a 100644 --- a/test/test_SSD1306_oled.c +++ b/test/test_SSD1306_oled.c @@ -1,14 +1,9 @@ #include "unity.h" - - -// #include "main.h" -// #include "cmsis_gcc.h" -// #include "dma_type.h" -// #include "stm32f3xx_hal_dma.h" -// #include "my_types.h" #include "mock_stm32f3xx_hal_i2c.h" #include "SSD1306_oled.h" +#include "buffer_oled_expect.h" +#include "string.h" // DMA_InitTypeDef * mydef; void setUp(void) @@ -21,40 +16,84 @@ void tearDown(void) { } -void test_tempSensor_NeedToImplement(void) + +void test_wrtie_to_buffer_at_pos_0_0_height_8pt(void) { - // TEST_IGNORE_MESSAGE("Need to Implement tempSensor"); - // TEST_ASSERT_TRUE(1); - // buffer_oled[0] = 0xFF; - TEST_ASSERT_EQUAL_HEX(0xFF, buffer_oled[0]); - // TEST_ASSERT_NOT_NULL(mydef); + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_8pt, SSD1306_LCDWIDTH, 8, 0, 0); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_0_8pt, buffer_oled, SSD1306_BUF_SIZE); + // TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); } -void test_wrtie_to_buffer_at_pos_0_0(void) +void test_wrtie_to_buffer_at_pos_1_0_height_8pt(void) { - uint8_t data[8] = {}; - ssd1306_write_to_buffer(data, 8, 8, 0, 0); + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_8pt, SSD1306_LCDWIDTH, 8, 0, 1); - TEST_ASSERT_EACH_EQUAL_UINT8(0, buffer_oled, 8); - TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_1_8pt, buffer_oled, SSD1306_BUF_SIZE); } -void test_wrtie_to_buffer_at_pos_1_0(void) +void test_wrtie_to_buffer_at_pos_7_0_height_8pt(void) { - uint8_t data[8] = {}; - ssd1306_write_to_buffer(data, 8, 8, 0, 1); + ssd1306_write_to_buffer(picture_8pt, SSD1306_LCDWIDTH, 8, 0, 7); - TEST_ASSERT_EACH_EQUAL_UINT8(0x01, buffer_oled, 8); - TEST_ASSERT_EACH_EQUAL_UINT8(0xFE, buffer_oled+SSD1306_LCDWIDTH, 8); - TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_7_8pt, buffer_oled, SSD1306_BUF_SIZE); } -void test_wrtie_to_buffer_at_pos_7_0(void) +void test_wrtie_to_buffer_at_pos_0_0_height_16pt(void) { - uint8_t data[8] = {}; - ssd1306_write_to_buffer(data, 8, 8, 0, 7); + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_16pt, SSD1306_LCDWIDTH, 16, 0, 0); - TEST_ASSERT_EACH_EQUAL_UINT8(0x7F, buffer_oled, 8); - TEST_ASSERT_EACH_EQUAL_UINT8(0x80, buffer_oled+SSD1306_LCDWIDTH, 8); - TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_0_16pt, buffer_oled, SSD1306_BUF_SIZE); + // TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); } + +void test_wrtie_to_buffer_at_pos_1_0_height_16pt(void) +{ + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_16pt, SSD1306_LCDWIDTH, 16, 0, 1); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_1_16pt, buffer_oled, SSD1306_BUF_SIZE); +} + +void test_wrtie_to_buffer_at_pos_7_0_height_16pt(void) +{ + ssd1306_write_to_buffer(picture_16pt, SSD1306_LCDWIDTH, 16, 0, 7); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_7_16pt, buffer_oled, SSD1306_BUF_SIZE); +} + +void test_wrtie_to_buffer_at_pos_0_0_height_12pt(void) +{ + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_12pt, SSD1306_LCDWIDTH, 12, 0, 0); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_0_12pt, buffer_oled, SSD1306_BUF_SIZE); + // TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); +} + +void test_wrtie_to_buffer_at_pos_1_0_height_12pt(void) +{ + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_12pt, SSD1306_LCDWIDTH, 12, 0, 1); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_1_12pt, buffer_oled, SSD1306_BUF_SIZE); +} + +void test_wrtie_to_buffer_at_pos_0_4_height_12pt(void) +{ + // uint8_t data[8] = {}; + ssd1306_write_to_buffer(picture_12pt, SSD1306_LCDWIDTH, 12, 0, 4); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_4_12pt, buffer_oled, SSD1306_BUF_SIZE); + // TEST_ASSERT_EQUAL_UINT8(0xFF, buffer_oled[8]); +} + +void test_wrtie_to_buffer_at_pos_7_0_height_12pt(void) +{ + ssd1306_write_to_buffer(picture_12pt, SSD1306_LCDWIDTH, 12, 0, 7); + + TEST_ASSERT_EQUAL_UINT8_ARRAY(posX_0_posY_7_12pt, buffer_oled, SSD1306_BUF_SIZE); +} \ No newline at end of file