diff options
author | Jonathon Jongsma <jjongsma@gnome.org> | 2007-07-10 23:32:47 -0500 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@gnome.org> | 2007-07-10 23:32:47 -0500 |
commit | 398fa3282b47612afa5a0ff558d60bd8a463f13c (patch) | |
tree | 4e79fac6709a91b4888f1d88d4d424f3818b5aed /tests | |
parent | a4ff528808c801398577f18a06cc01ccdbad7f60 (diff) |
Add ability to use dynamic casting with the return values from more functions,
including:
Context::get_target()
Context::get_target() const
Context::get_source()
Context::get_source() const
Context::get_group_target()
Context::get_group_target() const
Context::pop_group()
* tests/test-context.cc: a few additional tests to verify the const /
non-const versions both work with dynamic casting.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-context.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/test-context.cc b/tests/test-context.cc index 1583842..9cfaec2 100644 --- a/tests/test-context.cc +++ b/tests/test-context.cc @@ -97,6 +97,12 @@ test_source () BOOST_CHECK_EQUAL (1.0, r); BOOST_CHECK_EQUAL (0.5, g); BOOST_CHECK_EQUAL (0.25, b); + + // now try for const objects.. + Cairo::RefPtr<const Cairo::Context> cr2 = cr; + Cairo::RefPtr<const Cairo::SolidPattern> retrieved_solid2 = + Cairo::RefPtr<const Cairo::SolidPattern>::cast_dynamic(cr2->get_source ()); + BOOST_REQUIRE (retrieved_solid2); } cr->set_source (gradient_pattern); @@ -288,6 +294,31 @@ test_current_point () BOOST_CHECK (y == 3.0); } +void +test_target () +{ + Cairo::RefPtr<Cairo::Surface> surf = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, 10, 10); \ + Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(surf); + + Cairo::RefPtr<Cairo::ImageSurface> target_surface = + Cairo::RefPtr<Cairo::ImageSurface>::cast_dynamic(cr->get_target ()); + Cairo::RefPtr<Cairo::PdfSurface> bad_surface = + Cairo::RefPtr<Cairo::PdfSurface>::cast_dynamic(cr->get_target ()); + BOOST_CHECK (target_surface); + BOOST_CHECK (!bad_surface); + + // now check for const objects... + Cairo::RefPtr<const Cairo::Context> cr2 = Cairo::Context::create(surf); + + Cairo::RefPtr<const Cairo::ImageSurface> target_surface2 = + Cairo::RefPtr<const Cairo::ImageSurface>::cast_dynamic(cr2->get_target ()); + Cairo::RefPtr<const Cairo::PdfSurface> bad_surface2 = + Cairo::RefPtr<const Cairo::PdfSurface>::cast_dynamic(cr2->get_target ()); + BOOST_CHECK (target_surface2); + BOOST_CHECK (!bad_surface2); + +} + test_suite* init_unit_test_suite(int argc, char* argv[]) { @@ -312,6 +343,7 @@ init_unit_test_suite(int argc, char* argv[]) test->add (BOOST_TEST_CASE (&test_draw)); test->add (BOOST_TEST_CASE (&test_clip)); test->add (BOOST_TEST_CASE (&test_current_point)); + test->add (BOOST_TEST_CASE (&test_target)); return test; } |