diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
index 4a13533..45362db 100644
--- a/tests/CodecTest.cpp
+++ b/tests/CodecTest.cpp
@@ -20,6 +20,7 @@
 #include "SkImageEncoderPriv.h"
 #include "SkMD5.h"
 #include "SkOSPath.h"
+#include "SkJpegEncoder.h"
 #include "SkPngChunkReader.h"
 #include "SkRandom.h"
 #include "SkStream.h"
@@ -1530,7 +1531,7 @@
             SkEncodeImageAsPNG(stream, pixmap, opts);
             break;
         case SkEncodedImageFormat::kJPEG:
-            SkEncodeImageAsJPEG(stream, pixmap, opts);
+            SkJpegEncoder::Encode(stream, pixmap, SkJpegEncoder::Options());
             break;
         case SkEncodedImageFormat::kWEBP:
             SkEncodeImageAsWEBP(stream, pixmap, opts);
diff --git a/tests/EncodeTest.cpp b/tests/EncodeTest.cpp
new file mode 100644
index 0000000..9db5039
--- /dev/null
+++ b/tests/EncodeTest.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Resources.h"
+#include "Test.h"
+
+#include "SkBitmap.h"
+#include "SkJpegEncoder.h"
+#include "SkStream.h"
+
+DEF_TEST(Encode_Jpeg, r) {
+    SkBitmap bitmap;
+    bool success = GetResourceAsBitmap("mandrill_128.png", &bitmap);
+    if (!success) {
+        return;
+    }
+
+    SkPixmap src;
+    success = bitmap.peekPixels(&src);
+    REPORTER_ASSERT(r, success);
+    if (!success) {
+        return;
+    }
+
+    SkDynamicMemoryWStream dst0, dst1, dst2, dst3;
+    success = SkJpegEncoder::Encode(&dst0, src, SkJpegEncoder::Options());
+    REPORTER_ASSERT(r, success);
+
+    auto encoder1 = SkJpegEncoder::Make(&dst1, src, SkJpegEncoder::Options());
+    for (int i = 0; i < src.height(); i++) {
+        success = encoder1->encodeRows(1);
+        REPORTER_ASSERT(r, success);
+    }
+
+    auto encoder2 = SkJpegEncoder::Make(&dst2, src, SkJpegEncoder::Options());
+    for (int i = 0; i < src.height(); i+=3) {
+        success = encoder2->encodeRows(3);
+        REPORTER_ASSERT(r, success);
+    }
+
+    auto encoder3 = SkJpegEncoder::Make(&dst3, src, SkJpegEncoder::Options());
+    success = encoder3->encodeRows(200);
+    REPORTER_ASSERT(r, success);
+
+    sk_sp<SkData> data0 = dst0.detachAsData();
+    sk_sp<SkData> data1 = dst1.detachAsData();
+    sk_sp<SkData> data2 = dst2.detachAsData();
+    sk_sp<SkData> data3 = dst3.detachAsData();
+    REPORTER_ASSERT(r, data0->equals(data1.get()));
+    REPORTER_ASSERT(r, data0->equals(data2.get()));
+    REPORTER_ASSERT(r, data0->equals(data3.get()));
+}
diff --git a/tests/ReadPixelsTest.cpp b/tests/ReadPixelsTest.cpp
index 9cb9200..9363e71 100644
--- a/tests/ReadPixelsTest.cpp
+++ b/tests/ReadPixelsTest.cpp
@@ -530,7 +530,7 @@
 
 static void test_conversion(skiatest::Reporter* r, const SkImageInfo& dstInfo,
                             const SkImageInfo& srcInfo) {
-    if (!SkImageInfoIsValid(srcInfo)) {
+    if (!SkImageInfoIsValidRenderingCS(srcInfo)) {
         return;
     }
 
