|
Packit Service |
e3b512 |
#include <fstream>
|
|
Packit Service |
e3b512 |
#include <boost/test/unit_test.hpp>
|
|
Packit Service |
e3b512 |
#include <boost/test/test_tools.hpp>
|
|
Packit Service |
e3b512 |
#include <boost/test/floating_point_comparison.hpp>
|
|
Packit Service |
e3b512 |
using namespace boost::unit_test;
|
|
Packit Service |
e3b512 |
#include <cairomm/surface.h>
|
|
Packit Service |
e3b512 |
using namespace Cairo;
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
static unsigned int test_slot_called = 0;
|
|
Packit Service |
e3b512 |
ErrorStatus test_slot(const unsigned char* /*data*/, unsigned int /*len*/)
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
test_slot_called++;
|
|
Packit Service |
e3b512 |
return CAIRO_STATUS_SUCCESS;
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_write_to_png_stream()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
auto surface = ImageSurface::create(FORMAT_ARGB32, 1, 1);
|
|
Packit Service |
e3b512 |
surface->write_to_png_stream(sigc::ptr_fun(test_slot));
|
|
Packit Service |
e3b512 |
BOOST_CHECK(test_slot_called > 0);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_pdf_constructor_slot()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
test_slot_called = nullptr;
|
|
Packit Service |
e3b512 |
auto pdf = PdfSurface::create_for_stream(sigc::ptr_fun(&test_slot), 1, 1);
|
|
Packit Service |
e3b512 |
pdf->show_page();
|
|
Packit Service |
e3b512 |
pdf->finish();
|
|
Packit Service |
e3b512 |
BOOST_CHECK(test_slot_called > 0);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_ps_constructor_slot()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
test_slot_called = 0;
|
|
Packit Service |
e3b512 |
auto ps = PsSurface::create_for_stream(sigc::ptr_fun(&test_slot), 1, 1);
|
|
Packit Service |
e3b512 |
ps->show_page();
|
|
Packit Service |
e3b512 |
ps->finish();
|
|
Packit Service |
e3b512 |
BOOST_CHECK(test_slot_called > 0);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_svg_constructor_slot()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
test_slot_called = 0;
|
|
Packit Service |
e3b512 |
auto svg = SvgSurface::create_for_stream(sigc::ptr_fun(&test_slot), 1, 1);
|
|
Packit Service |
e3b512 |
svg->show_page();
|
|
Packit Service |
e3b512 |
svg->finish();
|
|
Packit Service |
e3b512 |
BOOST_CHECK(test_slot_called > 0);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
static std::ifstream png_file;
|
|
Packit Service |
e3b512 |
unsigned int test_read_func_called = 0;
|
|
Packit Service |
e3b512 |
static ErrorStatus test_read_func(unsigned char* data, unsigned int len)
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
++test_read_func_called;
|
|
Packit Service |
e3b512 |
if (png_file.read(reinterpret_cast<char*>(data), len))
|
|
Packit Service |
e3b512 |
return CAIRO_STATUS_SUCCESS;
|
|
Packit Service |
e3b512 |
return CAIRO_STATUS_READ_ERROR;
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
unsigned int c_test_read_func_called = 0;
|
|
Packit Service |
e3b512 |
static cairo_status_t c_test_read_func(void* /*closure*/, unsigned char* data, unsigned int len)
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
++c_test_read_func_called;
|
|
Packit Service |
e3b512 |
if (png_file.read(reinterpret_cast<char*>(data), len))
|
|
Packit Service |
e3b512 |
return CAIRO_STATUS_SUCCESS;
|
|
Packit Service |
e3b512 |
return CAIRO_STATUS_READ_ERROR;
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_create_from_png()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
RefPtr<ImageSurface> surface;
|
|
Packit Service |
e3b512 |
// try the sigc::slot version
|
|
Packit Service |
e3b512 |
png_file.open(PNG_STREAM_FILE);
|
|
Packit Service |
e3b512 |
surface = ImageSurface::create_from_png_stream(sigc::ptr_fun(&test_read_func));
|
|
Packit Service |
e3b512 |
png_file.close();
|
|
Packit Service |
e3b512 |
BOOST_CHECK(test_read_func_called > 0);
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
// now try the raw C function (deprecated) version
|
|
Packit Service |
e3b512 |
png_file.open(PNG_STREAM_FILE);
|
|
Packit Service |
e3b512 |
surface = ImageSurface::create_from_png(&c_test_read_func, NULL);
|
|
Packit Service |
e3b512 |
png_file.close();
|
|
Packit Service |
e3b512 |
BOOST_CHECK(c_test_read_func_called > 0);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_ps_eps()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
auto ps = PsSurface::create("test.ps", 1, 1);
|
|
Packit Service |
e3b512 |
// check the initial value
|
|
Packit Service |
e3b512 |
bool result = ps->get_eps();
|
|
Packit Service |
e3b512 |
// set it to the opposite value
|
|
Packit Service |
e3b512 |
ps->set_eps(!result);
|
|
Packit Service |
e3b512 |
// verify
|
|
Packit Service |
e3b512 |
BOOST_CHECK_EQUAL(ps->get_eps(), !result);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_content()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
auto surface = ImageSurface::create(FORMAT_ARGB32, 1, 1);
|
|
Packit Service |
e3b512 |
BOOST_CHECK_EQUAL(surface->get_content(), CONTENT_COLOR_ALPHA);
|
|
Packit Service |
e3b512 |
auto similar = Surface::create(surface, CONTENT_ALPHA, 1, 1);
|
|
Packit Service |
e3b512 |
BOOST_REQUIRE(similar);
|
|
Packit Service |
e3b512 |
BOOST_CHECK_EQUAL(similar->get_content(), CONTENT_ALPHA);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_fallback_resolution()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
auto surface = ImageSurface::create(FORMAT_ARGB32, 1, 1);
|
|
Packit Service |
e3b512 |
double x, y;
|
|
Packit Service |
e3b512 |
surface->get_fallback_resolution(x, y);
|
|
Packit Service |
e3b512 |
const double new_x = 94, new_y = 123;
|
|
Packit Service |
e3b512 |
surface->set_fallback_resolution(new_x, new_y);
|
|
Packit Service |
e3b512 |
surface->get_fallback_resolution(x, y);
|
|
Packit Service |
e3b512 |
BOOST_CHECK_EQUAL(x, new_x);
|
|
Packit Service |
e3b512 |
BOOST_CHECK_EQUAL(y, new_y);
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
void test_show_text_glyphs()
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
// image surface doesn't support show_text_glyphs
|
|
Packit Service |
e3b512 |
auto surf = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, 10, 10); \
|
|
Packit Service |
e3b512 |
BOOST_CHECK(!surf->has_show_text_glyphs());
|
|
Packit Service |
e3b512 |
// but pdf surface should
|
|
Packit Service |
e3b512 |
surf = Cairo::PdfSurface::create("test.pdf", 10.0, 10.0);
|
|
Packit Service |
e3b512 |
BOOST_CHECK(surf->has_show_text_glyphs());
|
|
Packit Service |
e3b512 |
}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
test_suite*
|
|
Packit Service |
e3b512 |
init_unit_test_suite(int argc, char* argv[])
|
|
Packit Service |
e3b512 |
{
|
|
Packit Service |
e3b512 |
// compile even with -Werror
|
|
Packit Service |
e3b512 |
if (argc && argv) {}
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
test_suite* test= BOOST_TEST_SUITE( "Cairo::Surface Tests" );
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_write_to_png_stream));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_pdf_constructor_slot));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_ps_constructor_slot));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_svg_constructor_slot));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_create_from_png));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_ps_eps));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_content));
|
|
Packit Service |
e3b512 |
test->add (BOOST_TEST_CASE (&test_show_text_glyphs));
|
|
Packit Service |
e3b512 |
|
|
Packit Service |
e3b512 |
return test;
|
|
Packit Service |
e3b512 |
}
|