KiCad PCB EDA Suite
test_bitmap_base.cpp File Reference

Test suite for BITMAP_BASE. More...

#include <qa_utils/wx_utils/unit_test_utils.h>
#include <bitmap_base.h>
#include "wximage_test_utils.h"
#include <wx/mstream.h>

Go to the source code of this file.

Classes

class  TEST_BITMAP_BASE_FIXTURE
 
struct  TEST_PIXEL_CASE
 

Functions

 BOOST_AUTO_TEST_CASE (Empty)
 Declare the test suite. More...
 
 BOOST_AUTO_TEST_CASE (EmptyCopy)
 Check we can validly copy an empty bitmap. More...
 
 BOOST_AUTO_TEST_CASE (BasicProps)
 Check basic properties of the populated images. More...
 
 BOOST_AUTO_TEST_CASE (BasicImage)
 Check the image is right. More...
 
 BOOST_AUTO_TEST_CASE (RotateImage)
 Check the image is right after rotating. More...
 
 BOOST_AUTO_TEST_CASE (MirrorImage)
 Check the image is right after mirroring. More...
 

Variables

static const std::vector< unsigned char > png_data_4tile
 4tile is an 8x8 image More...
 
static const wxSize size_4tile { 8, 8 }
 
static const KIGFX::COLOR4D col_red { 1.0, 0.0, 0.0, 1.0 }
 
static const KIGFX::COLOR4D col_green { 0.0, 1.0, 0.0, 1.0 }
 
static const KIGFX::COLOR4D col_blue { 0.0, 0.0, 1.0, 1.0 }
 
static const KIGFX::COLOR4D col_black { 0.0, 0.0, 0.0, 1.0 }
 

Detailed Description

Test suite for BITMAP_BASE.

Definition in file test_bitmap_base.cpp.

Function Documentation

◆ BOOST_AUTO_TEST_CASE() [1/6]

BOOST_AUTO_TEST_CASE ( Empty  )

Declare the test suite.

Check basic properties of a populated image

Definition at line 103 of file test_bitmap_base.cpp.

104 {
106  // Const to test we can get this data from a const object
107  const BITMAP_BASE& cempty = empty;
108 
109  BOOST_CHECK_EQUAL( cempty.GetImageData(), nullptr );
110  BOOST_CHECK_EQUAL( cempty.GetPPI(), 300 );
111  BOOST_CHECK_EQUAL( cempty.GetScale(), 1.0 );
112  BOOST_CHECK_EQUAL( cempty.GetPixelSizeIu(), 254000.0 / 300.0 );
113 
114  // can do this on an empty image
115  empty.Rotate( true );
116  empty.Mirror( true );
117 }
double GetScale() const
Definition: bitmap_base.h:79
wxImage * GetImageData()
Definition: bitmap_base.h:70
This class handle bitmap images in KiCad.
Definition: bitmap_base.h:51
double GetPixelSizeIu() const
Definition: bitmap_base.h:67
static bool empty(const wxTextEntryBase *aCtrl)
int GetPPI() const
Definition: bitmap_base.h:135

References empty(), BITMAP_BASE::GetImageData(), BITMAP_BASE::GetPixelSizeIu(), BITMAP_BASE::GetPPI(), and BITMAP_BASE::GetScale().

◆ BOOST_AUTO_TEST_CASE() [2/6]

BOOST_AUTO_TEST_CASE ( EmptyCopy  )

Check we can validly copy an empty bitmap.

Definition at line 123 of file test_bitmap_base.cpp.

124 {
126  BITMAP_BASE copied = empty;
127 
128  // should still have nothing in it
129  BOOST_CHECK_EQUAL( copied.GetImageData(), nullptr );
130 }
wxImage * GetImageData()
Definition: bitmap_base.h:70
This class handle bitmap images in KiCad.
Definition: bitmap_base.h:51
static bool empty(const wxTextEntryBase *aCtrl)

References empty(), and BITMAP_BASE::GetImageData().

◆ BOOST_AUTO_TEST_CASE() [3/6]

BOOST_AUTO_TEST_CASE ( BasicProps  )

Check basic properties of the populated images.

Definition at line 144 of file test_bitmap_base.cpp.

145 {
146  // make sure we can do all this to a const img
147  const BITMAP_BASE& img = m_4tile;
148 
149  // have "some" image data
150  BOOST_REQUIRE_NE( img.GetImageData(), nullptr );
151 
152  // still default props here
153  BOOST_CHECK_EQUAL( img.GetPPI(), 300 );
154  BOOST_CHECK_EQUAL( img.GetScale(), 5.0 );
155 
156  // we changed this, make sure it's right
157  BOOST_CHECK_EQUAL( img.GetPixelSizeIu(), 2.0 );
158 
160  BOOST_CHECK( img.GetSize() == size_4tile * 10 );
161 
162  const EDA_RECT bb = img.GetBoundingBox();
163  BOOST_CHECK( bb.GetPosition() == wxPoint( -40, -40 ) );
164  BOOST_CHECK( bb.GetEnd() == wxPoint( 40, 40 ) );
165 }
double GetScale() const
Definition: bitmap_base.h:79
wxImage * GetImageData()
Definition: bitmap_base.h:70
static const wxSize size_4tile
const EDA_RECT GetBoundingBox() const
Return the orthogonal, bounding box of this object for display purposes.
BOOST_CHECK(v2.Cross(v1)==1)
This class handle bitmap images in KiCad.
Definition: bitmap_base.h:51
wxSize GetSize() const
double GetPixelSizeIu() const
Definition: bitmap_base.h:67
Handle the component boundary box.
Definition: eda_rect.h:42
wxSize GetSizePixels() const
Definition: bitmap_base.h:124
int GetPPI() const
Definition: bitmap_base.h:135

References BOOST_CHECK(), BITMAP_BASE::GetBoundingBox(), BITMAP_BASE::GetImageData(), BITMAP_BASE::GetPixelSizeIu(), BITMAP_BASE::GetPPI(), BITMAP_BASE::GetScale(), BITMAP_BASE::GetSize(), BITMAP_BASE::GetSizePixels(), and size_4tile.

◆ BOOST_AUTO_TEST_CASE() [4/6]

BOOST_AUTO_TEST_CASE ( BasicImage  )

Check the image is right.

Definition at line 171 of file test_bitmap_base.cpp.

172 {
173  const wxImage* img_data = m_4tile.GetImageData();
174  BOOST_REQUIRE_NE( img_data, nullptr );
175 
176  // green, black,
177  // red, blue
178  const std::vector<TEST_PIXEL_CASE> exp_pixels = {
179  { 1, 1, col_green },
180  { 6, 1, col_black },
181  { 1, 6, col_red },
182  { 6, 6, col_blue },
183  };
184 
185  for( const auto& c : exp_pixels )
186  {
187  BOOST_CHECK_PREDICATE(
188  KI_TEST::IsImagePixelOfColor, ( *img_data )( c.m_x )( c.m_y )( c.m_color ) );
189  }
190 }
static const KIGFX::COLOR4D col_red
static const KIGFX::COLOR4D col_green
bool IsImagePixelOfColor(const wxImage &aImage, int aX, int aY, const KIGFX::COLOR4D &aColor)
Predicate to check an image pixel matches color and alpha.
static const KIGFX::COLOR4D col_blue
static const KIGFX::COLOR4D col_black

References col_black, col_blue, col_green, col_red, and KI_TEST::IsImagePixelOfColor().

◆ BOOST_AUTO_TEST_CASE() [5/6]

BOOST_AUTO_TEST_CASE ( RotateImage  )

Check the image is right after rotating.

Definition at line 195 of file test_bitmap_base.cpp.

196 {
197  // Note the parameter name is wrong here, true is clockwise
198  m_4tile.Rotate( false );
199 
200  const wxImage* img_data = m_4tile.GetImageData();
201  BOOST_REQUIRE_NE( img_data, nullptr );
202 
203  // black, blue,
204  // green, red
205  const std::vector<TEST_PIXEL_CASE> exp_pixels = {
206  { 1, 1, col_black },
207  { 6, 1, col_blue },
208  { 1, 6, col_green },
209  { 6, 6, col_red },
210  };
211 
212  for( const auto& c : exp_pixels )
213  {
214  BOOST_CHECK_PREDICATE(
215  KI_TEST::IsImagePixelOfColor, ( *img_data )( c.m_x )( c.m_y )( c.m_color ) );
216  }
217 }
static const KIGFX::COLOR4D col_red
static const KIGFX::COLOR4D col_green
bool IsImagePixelOfColor(const wxImage &aImage, int aX, int aY, const KIGFX::COLOR4D &aColor)
Predicate to check an image pixel matches color and alpha.
static const KIGFX::COLOR4D col_blue
static const KIGFX::COLOR4D col_black

References col_black, col_blue, col_green, col_red, and KI_TEST::IsImagePixelOfColor().

◆ BOOST_AUTO_TEST_CASE() [6/6]

BOOST_AUTO_TEST_CASE ( MirrorImage  )

Check the image is right after mirroring.

Definition at line 222 of file test_bitmap_base.cpp.

223 {
224  m_4tile.Mirror( true );
225 
226  const wxImage* img_data = m_4tile.GetImageData();
227  BOOST_REQUIRE_NE( img_data, nullptr );
228 
229  // red, blue
230  // green, black
231  const std::vector<TEST_PIXEL_CASE> exp_pixels = {
232  { 1, 1, col_red },
233  { 6, 1, col_blue },
234  { 1, 6, col_green },
235  { 6, 6, col_black },
236  };
237 
238  for( const auto& c : exp_pixels )
239  {
240  BOOST_CHECK_PREDICATE(
241  KI_TEST::IsImagePixelOfColor, ( *img_data )( c.m_x )( c.m_y )( c.m_color ) );
242  }
243 }
static const KIGFX::COLOR4D col_red
static const KIGFX::COLOR4D col_green
bool IsImagePixelOfColor(const wxImage &aImage, int aX, int aY, const KIGFX::COLOR4D &aColor)
Predicate to check an image pixel matches color and alpha.
static const KIGFX::COLOR4D col_blue
static const KIGFX::COLOR4D col_black

References col_black, col_blue, col_green, col_red, and KI_TEST::IsImagePixelOfColor().

Variable Documentation

◆ col_black

const KIGFX::COLOR4D col_black { 0.0, 0.0, 0.0, 1.0 }
static

Definition at line 66 of file test_bitmap_base.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

◆ col_blue

const KIGFX::COLOR4D col_blue { 0.0, 0.0, 1.0, 1.0 }
static

Definition at line 65 of file test_bitmap_base.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

◆ col_green

const KIGFX::COLOR4D col_green { 0.0, 1.0, 0.0, 1.0 }
static

Definition at line 64 of file test_bitmap_base.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

◆ col_red

const KIGFX::COLOR4D col_red { 1.0, 0.0, 0.0, 1.0 }
static

Definition at line 63 of file test_bitmap_base.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

◆ png_data_4tile

const std::vector<unsigned char> png_data_4tile
static
Initial value:
= {
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00, 0x00, 0xC4, 0x0F, 0xBE,
0x8B, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7C, 0x08, 0x64,
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0E, 0xC4, 0x00, 0x00, 0x0E,
0xC4, 0x01, 0x95, 0x2B, 0x0E, 0x1B, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6F,
0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63,
0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 0x1A, 0x00, 0x00, 0x00, 0x40, 0x49,
0x44, 0x41, 0x54, 0x18, 0x95, 0xA5, 0xCD, 0x4B, 0x0A, 0xC0, 0x20, 0x14, 0x43, 0xD1, 0x63, 0x77,
0xA7, 0xDD, 0xFF, 0x06, 0xD4, 0x7D, 0x3C, 0x07, 0x95, 0x42, 0x3F, 0xE0, 0xC0, 0x84, 0x0C, 0x02,
0xE1, 0x86, 0x78, 0x99, 0x13, 0x1D, 0x0D, 0xC5, 0xCF, 0xA0, 0x21, 0x66, 0xEA, 0x61, 0xA9, 0x2F,
0xA1, 0x4C, 0x4A, 0x45, 0x4E, 0x71, 0xA1, 0x6E, 0xA5, 0x67, 0xB5, 0xBC, 0xD8, 0x1F, 0x0C, 0xA7,
0xFD, 0x23, 0x67, 0x70, 0xDA, 0x89, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE,
0x42, 0x60, 0x82
}

4tile is an 8x8 image

Definition at line 44 of file test_bitmap_base.cpp.

Referenced by TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE().

◆ size_4tile

const wxSize size_4tile { 8, 8 }
static

Definition at line 61 of file test_bitmap_base.cpp.

Referenced by BOOST_AUTO_TEST_CASE().