diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 0f59aeb..fa95a35 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -470,9 +470,6 @@
             case SkPath::kQuad_Verb:
                 REPORTER_ASSERT(reporter, !"unexpected quad verb");
                 break;
-            case SkPath::kConic_Verb:
-                REPORTER_ASSERT(reporter, !"unexpected conic verb");
-                break;
             case SkPath::kCubic_Verb:
                 REPORTER_ASSERT(reporter, !"unexpected cubic verb");
                 break;
@@ -1972,19 +1969,6 @@
                     numPoints += 2;
                     lastWasClose = false;
                     break;
-                case SkPath::kConic_Verb:
-                    if (!haveMoveTo) {
-                        expectedPts[numPoints++] = lastMoveToPt;
-                        expectedVerbs[numIterVerbs++] = SkPath::kMove_Verb;
-                        haveMoveTo = true;
-                    }
-                    expectedPts[numPoints] = randomPts[(rand.nextU() >> 16) % 25];
-                    expectedPts[numPoints + 1] = randomPts[(rand.nextU() >> 16) % 25];
-                    p.conicTo(expectedPts[numPoints], expectedPts[numPoints + 1],
-                              rand.nextUScalar1() * 4);
-                    numPoints += 2;
-                    lastWasClose = false;
-                    break;
                 case SkPath::kCubic_Verb:
                     if (!haveMoveTo) {
                         expectedPts[numPoints++] = lastMoveToPt;
@@ -2004,8 +1988,7 @@
                     haveMoveTo = false;
                     lastWasClose = true;
                     break;
-                default:
-                    SkASSERT(!"unexpected verb");
+                default:;
             }
             expectedVerbs[numIterVerbs++] = nextVerb;
         }
@@ -2036,7 +2019,6 @@
                     numIterPts += 1;
                     break;
                 case SkPath::kQuad_Verb:
-                case SkPath::kConic_Verb:
                     REPORTER_ASSERT(reporter, numIterPts < numPoints + 2);
                     REPORTER_ASSERT(reporter, pts[0] == lastPt);
                     REPORTER_ASSERT(reporter, pts[1] == expectedPts[numIterPts]);
@@ -2057,8 +2039,7 @@
                     REPORTER_ASSERT(reporter, pts[0] == lastMoveTo);
                     lastPt = lastMoveTo;
                     break;
-                default:
-                    SkASSERT(!"unexpected verb");
+                default:;
             }
         }
         REPORTER_ASSERT(reporter, numIterPts == numPoints);
