add initial unittests for Path
add operator== for paths
still need to implement isRect!
git-svn-id: http://skia.googlecode.com/svn/trunk@99 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
new file mode 100644
index 0000000..383ad03
--- /dev/null
+++ b/tests/PathTest.cpp
@@ -0,0 +1,61 @@
+#include "Test.h"
+#include "SkPath.h"
+
+static void TestPath(skiatest::Reporter* reporter) {
+ SkPath p, p2;
+ SkRect bounds, bounds2;
+
+ REPORTER_ASSERT(reporter, p.isEmpty());
+ REPORTER_ASSERT(reporter, p.getFillType() == SkPath::kWinding_FillType);
+ REPORTER_ASSERT(reporter, !p.isInverseFillType());
+ REPORTER_ASSERT(reporter, p == p2);
+ REPORTER_ASSERT(reporter, !(p != p2));
+
+ // initialize bounds to not-empty
+ bounds.set(0, 0, SK_Scalar1, SK_Scalar1);
+ p.computeBounds(&bounds, SkPath::kFast_BoundsType);
+ REPORTER_ASSERT(reporter, bounds.isEmpty());
+
+ bounds.set(0, 0, SK_Scalar1, SK_Scalar1);
+ p.addRect(bounds);
+ bounds2.setEmpty();
+ p.computeBounds(&bounds2, SkPath::kFast_BoundsType);
+ REPORTER_ASSERT(reporter, bounds == bounds2);
+
+ REPORTER_ASSERT(reporter, p != p2);
+ REPORTER_ASSERT(reporter, !(p == p2));
+
+ // does getPoints return the right result
+ REPORTER_ASSERT(reporter, p.getPoints(NULL, 5) == 4);
+ SkPoint pts[4];
+ int count = p.getPoints(pts, 4);
+ REPORTER_ASSERT(reporter, count == 4);
+ bounds2.set(pts, 4);
+ REPORTER_ASSERT(reporter, bounds == bounds2);
+
+ bounds.offset(SK_Scalar1*3, SK_Scalar1*4);
+ p.offset(SK_Scalar1*3, SK_Scalar1*4);
+ p.computeBounds(&bounds2, SkPath::kFast_BoundsType);
+ REPORTER_ASSERT(reporter, bounds == bounds2);
+
+#if 0 // isRect needs to be implemented
+ REPORTER_ASSERT(reporter, p.isRect(NULL));
+ bounds.setEmpty();
+ REPORTER_ASSERT(reporter, p.isRect(&bounds2));
+ REPORTER_ASSERT(reporter, bounds == bounds2);
+
+ // now force p to not be a rect
+ bounds.set(0, 0, SK_Scalar1/2, SK_Scalar1/2);
+ p.addRect(bounds);
+ REPORTER_ASSERT(reporter, !p.isRect(NULL));
+#endif
+
+ SkPoint pt;
+
+ p.moveTo(SK_Scalar1, 0);
+ p.getLastPt(&pt);
+ REPORTER_ASSERT(reporter, pt.fX == SK_Scalar1);
+}
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("Path", PathTestClass, TestPath)