From bbff1d507aa3f470139e2df409e94074a2f9425f Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Fri, 5 Jun 2009 16:21:03 +0000 Subject: add SkParsePath to go to/from SVG strings (e.g. "M0,0 L10,20") git-svn-id: http://skia.googlecode.com/svn/trunk@203 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/ParsePathTest.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tests/ParsePathTest.cpp (limited to 'tests/ParsePathTest.cpp') diff --git a/tests/ParsePathTest.cpp b/tests/ParsePathTest.cpp new file mode 100644 index 0000000000..917b0cb538 --- /dev/null +++ b/tests/ParsePathTest.cpp @@ -0,0 +1,58 @@ +#include "Test.h" +#include "SkParsePath.h" + +static void test_to_from(skiatest::Reporter* reporter, const SkPath& path) { + SkString str, str2; + SkParsePath::ToSVGString(path, &str); + + SkPath path2; + bool success = SkParsePath::FromSVGString(str.c_str(), &path2); + REPORTER_ASSERT(reporter, success); + + SkParsePath::ToSVGString(path2, &str2); + REPORTER_ASSERT(reporter, str == str2); +#if 0 // closed paths are not equal, the iter explicitly gives the closing + // edge, even if it is not in the path. + REPORTER_ASSERT(reporter, path == path2); + if (path != path2) { + SkDebugf("str1=%s\nstr2=%s\n", str.c_str(), str2.c_str()); + } +#endif +} + +static void TestParsePath(skiatest::Reporter* reporter) { + static const struct { + const char* fStr; + SkRect fBounds; + } gRec[] = { + { "", { 0, 0, 0, 0 } }, + { "M0,0L10,10", { 0, 0, SkIntToScalar(10), SkIntToScalar(10) } }, + { "M-5.5,-0.5 Q 0 0 6,6.50", + { SkFloatToScalar(-5.5f), SkFloatToScalar(-0.5f), + SkFloatToScalar(6), SkFloatToScalar(6.5f) } } + }; + + for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) { + SkPath path; + bool success = SkParsePath::FromSVGString(gRec[i].fStr, &path); + REPORTER_ASSERT(reporter, success); + const SkRect& expectedBounds = gRec[i].fBounds; + const SkRect& pathBounds = path.getBounds(); + REPORTER_ASSERT(reporter, expectedBounds == pathBounds); + + test_to_from(reporter, path); + } + + SkRect r; + r.set(0, 0, SkFloatToScalar(10), SkFloatToScalar(10.5)); + SkPath p; + p.addRect(r); + test_to_from(reporter, p); + p.addOval(r); + test_to_from(reporter, p); + p.addRoundRect(r, SkFloatToScalar(4), SkFloatToScalar(4.5)); + test_to_from(reporter, p); +} + +#include "TestClassDef.h" +DEFINE_TESTCLASS("ParsePath", ParsePathClass, TestParsePath) -- cgit v1.2.3