From 5b42fe6325bfd2158f8b49eb02f0c5e0fb52b04e Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Fri, 6 Jan 2017 16:23:44 +0100 Subject: [PATCH] tests: check cpml_arc_to_curves() with different n_curves --- src/cpml/tests/test-arc.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/cpml/tests/test-arc.c b/src/cpml/tests/test-arc.c index 962a97e0..2ae0b64c 100644 --- a/src/cpml/tests/test-arc.c +++ b/src/cpml/tests/test-arc.c @@ -113,6 +113,43 @@ _cpml_method_info(void) adg_assert_isapprox(end, -M_PI_2); } +static void +_cpml_method_to_curves(void) +{ + cairo_path_data_t data[4*2]; + CpmlSegment segment = { NULL, data, 0 }; + + /* Approximate with a single curve */ + cpml_arc_to_curves(&arc, &segment, 1); + + g_assert_cmpint(data[0].header.type, ==, CPML_CURVE); + adg_assert_isapprox(data[1].point.x, 4); + adg_assert_isapprox(data[1].point.y, 3); + adg_assert_isapprox(data[2].point.x, 4); + adg_assert_isapprox(data[2].point.y, -3); + adg_assert_isapprox(data[3].point.x, 0); + adg_assert_isapprox(data[3].point.y, -3); + + /* Approximate with two curves */ + cpml_arc_to_curves(&arc, &segment, 2); + + g_assert_cmpint(data[0].header.type, ==, CPML_CURVE); + adg_assert_isapprox(data[1].point.x, 1.65685425); + adg_assert_isapprox(data[1].point.y, 3); + adg_assert_isapprox(data[2].point.x, 3); + adg_assert_isapprox(data[2].point.y, 1.65685425); + adg_assert_isapprox(data[3].point.x, 3); + adg_assert_isapprox(data[3].point.y, 0); + + g_assert_cmpint(data[4].header.type, ==, CPML_CURVE); + adg_assert_isapprox(data[5].point.x, 3); + adg_assert_isapprox(data[5].point.y, -1.65685425); + adg_assert_isapprox(data[6].point.x, 1.65685425); + adg_assert_isapprox(data[6].point.y, -3); + adg_assert_isapprox(data[7].point.x, 0); + adg_assert_isapprox(data[7].point.y, -3); +} + int @@ -125,6 +162,7 @@ main(int argc, char *argv[]) adg_test_add_traps("/cpml/arc/sanity/to-curves", _cpml_sanity_to_curves, 3); g_test_add_func("/cpml/arc/method/info", _cpml_method_info); + g_test_add_func("/cpml/arc/method/to-curves", _cpml_method_to_curves); return g_test_run(); } -- 2.11.4.GIT