Merge pull request #8440 from opentx/raphaelcoeffic/gtests-asan
2.4: gtests asan + re-addded LCD tests
@@ -47,7 +47,7 @@ before_install:
|
|||||||
- sudo ln -sf /usr/bin/python3 /usr/bin/python
|
- sudo ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
- python3 -m pip install pip==20.3.3
|
- python3 -m pip install pip==20.3.3
|
||||||
- sudo apt-get install python3-setuptools
|
- sudo apt-get install python3-setuptools
|
||||||
- python3 -m pip install pillow clang
|
- python3 -m pip install pillow==7.2.0 clang
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./tools/commit-tests.sh
|
- ./tools/commit-tests.sh
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) OpenTX
|
||||||
|
*
|
||||||
|
* Based on code named
|
||||||
|
* th9x - http://code.google.com/p/th9x
|
||||||
|
* er9x - http://code.google.com/p/er9x
|
||||||
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||||
|
*
|
||||||
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
void loadFonts();
|
||||||
@@ -9,8 +9,8 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND)
|
|||||||
set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
configure_file(${RADIO_SRC_DIR}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY)
|
configure_file(${RADIO_SRC_DIR}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY)
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0 -fsanitize=address")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS} -fsanitize=address")
|
||||||
use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1
|
use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1
|
||||||
|
|
||||||
if(PCB STREQUAL X12S OR PCB STREQUAL X10)
|
if(PCB STREQUAL X12S OR PCB STREQUAL X10)
|
||||||
|
|||||||
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,252 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) OpenTX
|
||||||
|
*
|
||||||
|
* Based on code named
|
||||||
|
* th9x - http://code.google.com/p/th9x
|
||||||
|
* er9x - http://code.google.com/p/er9x
|
||||||
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||||
|
*
|
||||||
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#define SWAP_DEFINED
|
||||||
|
#include "opentx.h"
|
||||||
|
#include "location.h"
|
||||||
|
|
||||||
|
#if defined(COLORLCD)
|
||||||
|
|
||||||
|
#include "gui/colorlcd/fonts.h"
|
||||||
|
|
||||||
|
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
||||||
|
#include "stb_image_write.h"
|
||||||
|
|
||||||
|
void convert_RGB565_to_RGB888(uint8_t * dst, const uint16_t * src, unsigned pixels)
|
||||||
|
{
|
||||||
|
while(pixels--) {
|
||||||
|
RGB_SPLIT(*src, r, g, b); src++;
|
||||||
|
*(dst++) = (uint8_t)(r << 3);
|
||||||
|
*(dst++) = (uint8_t)(g << 2);
|
||||||
|
*(dst++) = (uint8_t)(b << 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dumpImage(const std::string& filename, const BitmapBuffer* dc)
|
||||||
|
{
|
||||||
|
std::string fullpath = TESTS_PATH "/failed_" + filename;
|
||||||
|
|
||||||
|
TRACE("dumping image '%s'", fullpath.c_str());
|
||||||
|
|
||||||
|
// allocate enough for 3 channels
|
||||||
|
auto pixels = dc->width() * dc->height();
|
||||||
|
auto stride = dc->width() * 3;
|
||||||
|
uint8_t * img = (uint8_t *)malloc(pixels * 3);
|
||||||
|
convert_RGB565_to_RGB888(img, dc->getPixelPtr(0,0), pixels);
|
||||||
|
stbi_write_png(fullpath.c_str(), dc->width(), dc->height(), 3, img, stride);
|
||||||
|
free(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkScreenshot_colorlcd(const BitmapBuffer* dc, const char* test)
|
||||||
|
{
|
||||||
|
if (dc->width() != LCD_W || dc->height() != LCD_H) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string filename = std::string(test);
|
||||||
|
filename += '_' + std::to_string(LCD_W);
|
||||||
|
filename += 'x' + std::to_string(LCD_H);
|
||||||
|
filename += ".png";
|
||||||
|
|
||||||
|
std::string fullpath = TESTS_PATH "/" + filename;
|
||||||
|
|
||||||
|
std::unique_ptr<BitmapBuffer> testPict(BitmapBuffer::loadBitmap(fullpath.c_str()));
|
||||||
|
if (!testPict || testPict->width() != LCD_W || testPict->height() != LCD_H) {
|
||||||
|
dumpImage(filename, dc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto testPtr = testPict->getPixelPtr(0,0);
|
||||||
|
auto dcPtr = dc->getPixelPtr(0,0);
|
||||||
|
|
||||||
|
for (int i=0; i<LCD_W*LCD_H; i++) {
|
||||||
|
if (testPtr[i] != dcPtr[i]) {
|
||||||
|
dumpImage(filename, dc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST(Lcd_colorlcd, vline)
|
||||||
|
{
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
for (int x=0; x<100; x+=2) {
|
||||||
|
dc.drawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
|
||||||
|
}
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "vline"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Lcd_colorlcd, primitives)
|
||||||
|
{
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
|
||||||
|
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
|
||||||
|
|
||||||
|
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
|
||||||
|
|
||||||
|
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
|
||||||
|
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
|
||||||
|
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
|
||||||
|
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
|
||||||
|
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
|
||||||
|
|
||||||
|
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "primitives_" TRANSLATIONS));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Lcd_colorlcd, transparency)
|
||||||
|
{
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
|
||||||
|
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
|
||||||
|
|
||||||
|
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
||||||
|
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR|OPACITY(10));
|
||||||
|
|
||||||
|
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
||||||
|
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
||||||
|
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
||||||
|
|
||||||
|
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2));
|
||||||
|
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6));
|
||||||
|
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10));
|
||||||
|
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX));
|
||||||
|
|
||||||
|
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR|OPACITY(2));
|
||||||
|
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
|
||||||
|
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
|
||||||
|
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR|OPACITY(OPACITY_MAX));
|
||||||
|
|
||||||
|
|
||||||
|
for(int n=0; n<10; n++) {
|
||||||
|
int x = 120 + n * 20;
|
||||||
|
int y = 80 + n * 10;
|
||||||
|
int color = COLOR(n/2 + 5);
|
||||||
|
int size = 100;
|
||||||
|
dc.drawFilledRect(x, y, size, size, SOLID, color|OPACITY(8));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "transparency_" TRANSLATIONS));
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fonts test are disabled, as they cause
|
||||||
|
// too much trouble (font are generated and never
|
||||||
|
// really the same based on which software / radio
|
||||||
|
// combination.
|
||||||
|
//
|
||||||
|
#if 0
|
||||||
|
TEST(Lcd_colorlcd, fonts)
|
||||||
|
{
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
|
||||||
|
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
|
||||||
|
|
||||||
|
dc.drawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
|
||||||
|
dc.drawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
|
||||||
|
|
||||||
|
dc.drawText(50, 25, "The quick", DEFAULT_COLOR | FONT(XXS));
|
||||||
|
dc.drawText(50, 40, "The quick", DEFAULT_COLOR | FONT(XS));
|
||||||
|
dc.drawText(50, 55, "The quick", DEFAULT_COLOR | FONT(L));
|
||||||
|
dc.drawText(50, 80, "The quick", DEFAULT_COLOR | FONT(XL));
|
||||||
|
dc.drawText(50, 120, "The quick", DEFAULT_COLOR | FONT(XXL));
|
||||||
|
|
||||||
|
dc.drawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4));
|
||||||
|
dc.drawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12));
|
||||||
|
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "fonts_" TRANSLATIONS));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
TEST(Lcd_colorlcd, clipping)
|
||||||
|
{
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawSolidVerticalLine(100, 0, LCD_H, DEFAULT_COLOR);
|
||||||
|
dc.drawSolidVerticalLine(400, 0, LCD_H, DEFAULT_COLOR);
|
||||||
|
|
||||||
|
dc.drawSolidHorizontalLine(0, 50, LCD_W, DEFAULT_COLOR);
|
||||||
|
dc.drawSolidHorizontalLine(0, 200, LCD_W, DEFAULT_COLOR);
|
||||||
|
|
||||||
|
dc.setClippingRect(100, 400, 50, 200);
|
||||||
|
|
||||||
|
dc.drawSolidHorizontalLine(0, 80, LCD_W, TITLE_BGCOLOR);
|
||||||
|
dc.drawHorizontalLine( 0, 81, LCD_W, SOLID, TITLE_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawSolidVerticalLine(150, 0, LCD_H, TITLE_BGCOLOR);
|
||||||
|
dc.drawVerticalLine( 151, 0, LCD_H, SOLID, TITLE_BGCOLOR);
|
||||||
|
|
||||||
|
dc.drawSolidRect(70, 20, 50, 50, 2, TITLE_BGCOLOR);
|
||||||
|
dc.drawRect( 380, 20, 50, 50, 2, SOLID, TITLE_BGCOLOR);
|
||||||
|
|
||||||
|
dc.clearClippingRect();
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "clipping"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Lcd_colorlcd, bitmap)
|
||||||
|
{
|
||||||
|
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
|
||||||
|
dc.clear(DEFAULT_BGCOLOR);
|
||||||
|
|
||||||
|
dc.setClippingRect(100, 400, 50, 200);
|
||||||
|
std::unique_ptr<BitmapBuffer> bmp(BitmapBuffer::loadBitmap(TESTS_PATH "/opentx.png"));
|
||||||
|
dc.drawBitmap( 0, 0, bmp.get());
|
||||||
|
dc.drawBitmap(320, 0, bmp.get());
|
||||||
|
dc.drawBitmap( 0, 150, bmp.get());
|
||||||
|
|
||||||
|
dc.clearClippingRect();
|
||||||
|
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "bitmap"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) OpenTX
|
|
||||||
*
|
|
||||||
* Based on code named
|
|
||||||
* th9x - http://code.google.com/p/th9x
|
|
||||||
* er9x - http://code.google.com/p/er9x
|
|
||||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
|
||||||
*
|
|
||||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
|
||||||
* published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <QtCore/QDir>
|
|
||||||
#include <QtCore/QDebug>
|
|
||||||
#include <QApplication>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <math.h>
|
|
||||||
#include <gtest/gtest.h>
|
|
||||||
|
|
||||||
#define SWAP_DEFINED
|
|
||||||
#include "opentx.h"
|
|
||||||
#include "location.h"
|
|
||||||
#include "targets/simu/simulcd.h"
|
|
||||||
|
|
||||||
#if defined(COLORLCD)
|
|
||||||
|
|
||||||
void doPaint_colorlcd(QPainter & p)
|
|
||||||
{
|
|
||||||
QRgb rgb = qRgb(0, 0, 0);
|
|
||||||
p.setBackground(QBrush(rgb));
|
|
||||||
p.eraseRect(0, 0, LCD_W, LCD_H);
|
|
||||||
|
|
||||||
uint16_t previousColor = 0xFF;
|
|
||||||
for (int y=0; y<LCD_H; y++) {
|
|
||||||
for (int x=0; x<LCD_W; x++) {
|
|
||||||
#if defined(LCD_VERTICAL_INVERT)
|
|
||||||
uint16_t color = simuLcdBuf[(LCD_W-1-x)+LCD_W*(LCD_H-1-y)]; // color in RGB565
|
|
||||||
#else
|
|
||||||
uint16_t color = simuLcdBuf[x+LCD_W*y]; // color in RGB565
|
|
||||||
#endif
|
|
||||||
if (color) {
|
|
||||||
if (color != previousColor) {
|
|
||||||
previousColor = color;
|
|
||||||
RGB_SPLIT(color, r, g, b);
|
|
||||||
rgb = qRgb(r<<3, g<<2, b<<3);
|
|
||||||
p.setPen(rgb);
|
|
||||||
p.setBrush(QBrush(rgb));
|
|
||||||
}
|
|
||||||
p.drawPoint(x, y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool checkScreenshot_colorlcd(const QString & test)
|
|
||||||
{
|
|
||||||
lcdRefresh();
|
|
||||||
QImage buffer(LCD_W, LCD_H, QImage::Format_RGB32);
|
|
||||||
QPainter p(&buffer);
|
|
||||||
doPaint_colorlcd(p);
|
|
||||||
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
|
|
||||||
QImage reference(TESTS_PATH "/" + filename);
|
|
||||||
|
|
||||||
if (buffer == reference) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
|
|
||||||
buffer.save("/tmp/" + filename);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TEST(Lcd_colorlcd, vline)
|
|
||||||
{
|
|
||||||
loadFonts();
|
|
||||||
lcd->clear(DEFAULT_BGCOLOR);
|
|
||||||
for (int x=0; x<100; x+=2) {
|
|
||||||
lcdDrawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
|
|
||||||
}
|
|
||||||
EXPECT_TRUE(checkScreenshot_colorlcd("vline"));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Lcd_colorlcd, primitives)
|
|
||||||
{
|
|
||||||
loadFonts();
|
|
||||||
lcd->clear(DEFAULT_BGCOLOR);
|
|
||||||
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
|
|
||||||
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
|
|
||||||
|
|
||||||
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
|
|
||||||
lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR);
|
|
||||||
lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
|
|
||||||
|
|
||||||
lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
|
|
||||||
lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
|
|
||||||
|
|
||||||
lcdDrawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
|
|
||||||
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
|
|
||||||
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
|
|
||||||
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
|
|
||||||
|
|
||||||
|
|
||||||
EXPECT_TRUE(checkScreenshot_colorlcd("primitives"));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Lcd_colorlcd, transparency)
|
|
||||||
{
|
|
||||||
loadFonts();
|
|
||||||
lcd->clear(DEFAULT_BGCOLOR);
|
|
||||||
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
|
|
||||||
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
|
|
||||||
|
|
||||||
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
|
||||||
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR|OPACITY(10));
|
|
||||||
lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR|OPACITY(12));
|
|
||||||
lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
|
||||||
lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
|
||||||
lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8));
|
|
||||||
|
|
||||||
lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2));
|
|
||||||
lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6));
|
|
||||||
lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10));
|
|
||||||
lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX));
|
|
||||||
|
|
||||||
lcdDrawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR|OPACITY(2));
|
|
||||||
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
|
|
||||||
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
|
|
||||||
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR|OPACITY(OPACITY_MAX));
|
|
||||||
|
|
||||||
|
|
||||||
for(int n=0; n<10; n++) {
|
|
||||||
int x = 120 + n * 20;
|
|
||||||
int y = 80 + n * 10;
|
|
||||||
int color = COLOR(n/2 + 5);
|
|
||||||
int size = 100;
|
|
||||||
lcdDrawFilledRect(x, y, size, size, SOLID, color|OPACITY(8));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPECT_TRUE(checkScreenshot_colorlcd("transparency"));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Lcd_colorlcd, fonts)
|
|
||||||
{
|
|
||||||
loadFonts();
|
|
||||||
lcd->clear(DEFAULT_BGCOLOR);
|
|
||||||
|
|
||||||
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
|
|
||||||
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
|
|
||||||
|
|
||||||
lcdDrawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
|
|
||||||
lcdDrawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
|
|
||||||
// lcdDrawText(50, 200, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|VERTICAL);
|
|
||||||
|
|
||||||
lcdDrawText(50, 25, "The quick", TEXT_COLOR|TINSIZE);
|
|
||||||
lcdDrawText(50, 40, "The quick", TEXT_COLOR|SMLSIZE);
|
|
||||||
lcdDrawText(50, 55, "The quick", TEXT_COLOR|MIDSIZE);
|
|
||||||
lcdDrawText(50, 80, "The quick", TEXT_COLOR|DBLSIZE);
|
|
||||||
lcdDrawText(50, 120, "The quick", TEXT_COLOR|XXLSIZE);
|
|
||||||
|
|
||||||
lcdDrawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4));
|
|
||||||
lcdDrawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12));
|
|
||||||
|
|
||||||
EXPECT_TRUE(checkScreenshot_colorlcd("fonts"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 8.7 KiB |