Require Sk4f::toBytes() clamps

BUG=skia:4117

CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;client.skia.android:Test-Android-GCC-Nexus9-CPU-Denver-Arm64-Release-Trybot

Review URL: https://codereview.chromium.org/1312053004
diff --git a/tests/SkNxTest.cpp b/tests/SkNxTest.cpp
index 4005d25..185940f 100644
--- a/tests/SkNxTest.cpp
+++ b/tests/SkNxTest.cpp
@@ -208,3 +208,18 @@
          wideLoHiAlt = wideLo + wideHi;
     REPORTER_ASSERT(r, 0 == memcmp(&wideLoHi, &wideLoHiAlt, sizeof(wideLoHi)));
 }
+
+DEF_TEST(Sk4f_toBytes, r) {
+    uint8_t bytes[4];
+
+    // toBytes truncates, not rounds.
+    Sk4f(0.7f).toBytes(bytes);
+    REPORTER_ASSERT(r, bytes[0] == 0);
+
+    // Clamping edge cases.
+    Sk4f(-2.0f, -0.7f, 255.9f, 256.0f).toBytes(bytes);
+    REPORTER_ASSERT(r, bytes[0] == 0);
+    REPORTER_ASSERT(r, bytes[1] == 0);
+    REPORTER_ASSERT(r, bytes[2] == 255);
+    REPORTER_ASSERT(r, bytes[3] == 255);
+}