unbroke packet_finder_test and improved the coverage
diff --git a/bbb_cape/src/bbb/packet_finder.cc b/bbb_cape/src/bbb/packet_finder.cc
index aac6a0f..9e06b62 100644
--- a/bbb_cape/src/bbb/packet_finder.cc
+++ b/bbb_cape/src/bbb/packet_finder.cc
@@ -4,6 +4,7 @@
 #include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #include <algorithm>
 
@@ -44,7 +45,7 @@
             buf_ + already_read, packet_size_ - already_read, errno,
             strerror(errno));
       } else if (new_bytes == -2) {
-        LOG(WARNING, "timed out\n");
+        LOG(INFO, "timed out\n");
       } else {
         LOG(WARNING, "bad ByteReader %p returned %zd\n", reader_, new_bytes);
       }
@@ -52,14 +53,20 @@
     }
 
     if (!irq_priority_increased_) {
-      // TODO(brians): Do this cleanly.
-      int chrt_result = system("bash -c 'chrt -r -p 55"
-                               " $(top -n1 | fgrep irq/89 | cut -d\" \" -f2)'");
-      if (chrt_result == -1) {
-        LOG(FATAL, "system(chrt -r -p 55 the_irq) failed\n");
-      } else if (!WIFEXITED(chrt_result) || WEXITSTATUS(chrt_result) != 0) {
-        LOG(FATAL, "$(chrt -r -p 55 the_irq) failed, return value = %d\n",
-            WEXITSTATUS(chrt_result));
+      // Iff we're root.
+      if (getuid() == 0) {
+        // TODO(brians): Do this cleanly.
+        int chrt_result =
+            system("bash -c 'chrt -r -p 55"
+                   " $(top -n1 | fgrep irq/89 | cut -d\" \" -f2)'");
+        if (chrt_result == -1) {
+          LOG(FATAL, "system(chrt -r -p 55 the_irq) failed\n");
+        } else if (!WIFEXITED(chrt_result) || WEXITSTATUS(chrt_result) != 0) {
+          LOG(FATAL, "$(chrt -r -p 55 the_irq) failed, return value = %d\n",
+              WEXITSTATUS(chrt_result));
+        }
+      } else {
+        LOG(INFO, "not root, so not increasing priority of the IRQ\n");
       }
 
       irq_priority_increased_ = true;
@@ -95,7 +102,7 @@
       reinterpret_cast<uint32_t *>(buf_), packet_size_,
       reinterpret_cast<uint32_t *>(unstuffed_data_), packet_size_ - 4);
   if (unstuffed == 0) {
-    LOG(WARNING, "invalid packet\n");
+    LOG(INFO, "invalid packet\n");
     return false;
   } else if (unstuffed != (packet_size_ - 4) / 4) {
     LOG(WARNING, "packet is %" PRIu32 " words instead of %" PRIu32 "\n",
@@ -109,7 +116,7 @@
   uint32_t calculated_checksum = cape::CalculateChecksum(
       reinterpret_cast<uint8_t *>(unstuffed_data_), packet_size_ - 8);
   if (sent_checksum != calculated_checksum) {
-    LOG(WARNING, "sent checksum: %" PRIx32 " vs calculated: %" PRIx32"\n",
+    LOG(INFO, "sent checksum: %" PRIx32 " vs calculated: %" PRIx32"\n",
         sent_checksum, calculated_checksum);
     return false;
   }
diff --git a/bbb_cape/src/bbb/packet_finder_test.cc b/bbb_cape/src/bbb/packet_finder_test.cc
index b9dd97a..1b8c813 100644
--- a/bbb_cape/src/bbb/packet_finder_test.cc
+++ b/bbb_cape/src/bbb/packet_finder_test.cc
@@ -1,5 +1,8 @@
 #include "bbb/packet_finder.h"
 
+#include <array>
+#include <algorithm>
+
 #include "gtest/gtest.h"
 
 #include "aos/common/queue_testutils.h"
@@ -10,17 +13,12 @@
 namespace bbb {
 namespace testing {
 
-class PacketFinderTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    ::aos::common::testing::EnableTestLogging();
-  }
-};
-
 class TestByteReader : public ByteReaderInterface {
  public:
-  TestByteReader(const void *data, size_t data_size)
-      : data_(data), data_size_(data_size), bytes_left_(data_size) {}
+  // Holds a reference to data's element array.
+  template <size_t bytes>
+  TestByteReader(const ::std::array<uint8_t, bytes> &data)
+      : data_(&data.at(0)), data_size_(data.size()), bytes_left_(data.size()) {}
 
   virtual ssize_t ReadBytes(uint8_t *dest, size_t max_bytes,
                             const ::aos::time::Time &/*timeout_time*/)
@@ -29,6 +27,7 @@
     memcpy(dest, static_cast<const uint8_t *>(data_) + data_size_ - bytes_left_,
            to_transfer);
     bytes_left_ -= to_transfer;
+    if (to_transfer == 0) return -2;
     return to_transfer;
   }
 
@@ -38,87 +37,127 @@
   size_t bytes_left_;
 };
 
-TEST_F(PacketFinderTest, StupidZeros) {
-  static const uint8_t kTestData[] = {
-    0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x01, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0x69, 0x3D, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00,
-    0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x00,
-    0x2A, 0x00, 0x1B, 0x00, 0x4E, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20,
-    0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0x00, 0x38, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-    0x00, 0x10, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0xED, 0x00, 0xE0,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0xFF, 0x8E, 0xFE, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0xD0, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xA1, 0x79, 0xE0, 0x03,
-    0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x00,
-    0x00, 0x00, 0x10, 0x00, 0x29, 0x00, 0x1B, 0x00, 0x50, 0x01, 0x72, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF,
-    0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00,
-    0x05, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00,
-    0x00, 0xB0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-    0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x40, 0x00, 0x38, 0x00, 0x40,
-    0x82, 0x00, 0x00, 0x00, 0xE6, 0x6F, 0x7E, 0xC7, 0x00, 0x00, 0x00, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0xDA, 0xB5, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-    0x02, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x1B, 0x00,
-    0x50, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-    0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0,
-    0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40,
-    0x05, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-    0x06, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x40,
-    0x00, 0x38, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0xDD, 0xD1, 0x5D, 0x8E,
-    0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x01, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0x13, 0xF2, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00,
-    0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x10, 0x00,
-    0x29, 0x00, 0x1B, 0x00, 0x50, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20,
-    0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-    0x00, 0x38, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00,
-    0x00, 0x10, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xED, 0x00, 0xE0,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0x68, 0x26, 0xC4, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0x00, 0x08, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4B, 0x2E, 0xE1, 0x03,
-    0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x00,
-    0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x50, 0x01, 0x72, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF,
-    0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00,
-    0x05, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00,
-    0x00, 0xC0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-    0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x40, 0x00, 0x38, 0x00, 0x40,
-    0x00, 0x38, 0x00, 0x40, 0xAD, 0x8B, 0x6A, 0x10, 0x00, 0x00, 0x00, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0x10, 0x08, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
-    0x84, 0x6A, 0xE1, 0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-    0x02, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x29, 0x00, 0x1B, 0x00,
-    0x4E, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-    0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0,
-    0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40,
-    0x06, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-    0x39, 0x00, 0x00, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFC, 0x94, 0x39, 0xF5,
-    0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-  };
-  TestByteReader reader(kTestData, sizeof(kTestData));
-  PacketFinder packet_finder(&reader, 144);
-  EXPECT_TRUE(packet_finder.ReadPacket(::aos::time::Time(0, 0)));
+class PacketFinderTest : public ::testing::Test {
+ public:
+  void SetUp() override {
+    ::aos::common::testing::EnableTestLogging();
+  }
+
+  template <typename Data, size_t N = 0>
+  void ReceivePackets(const Data &data, int packets,
+                      ::std::array<int, N> expected_failures =
+                          ::std::array<int, 0>()) {
+    TestByteReader reader(data);
+    PacketFinder packet_finder(&reader, 144);
+    auto failure = expected_failures.begin();
+    for (int i = 1; i < packets; ++i) {
+      SCOPED_TRACE("packet " + ::std::to_string(i));
+      bool expect_failure = false;
+      if (failure != expected_failures.end() && *failure == i) {
+        expect_failure = true;
+        ++failure;
+      }
+      EXPECT_EQ(!expect_failure,
+                packet_finder.ReadPacket(::aos::time::Time(0, 0)));
+      if (expect_failure && i + 1 != *failure && i + 1 != packets) {
+        while (!packet_finder.ReadPacket(::aos::time::Time(0, 0))) {}
+        i += 1;
+      }
+    }
+    EXPECT_FALSE(packet_finder.ReadPacket(::aos::time::Time(0, 0)));
+  }
+};
+
+static constexpr ::std::array<uint8_t, 896> kTestData1{
+  {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x01, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x69, 0x3D, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E,
+   0x12, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x1B, 0x00, 0x4E, 0x01,
+   0x72, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF,
+   0xFF, 0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0xED,
+   0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+   0x00, 0xFF, 0x8E, 0xFE, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0xD0, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xA1, 0x79, 0xE0, 0x03, 0x02,
+   0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x29,
+   0x00, 0x1B, 0x00, 0x50, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
+   0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00,
+   0xE0, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40,
+   0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06,
+   0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x40, 0x00, 0x38,
+   0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0xE6, 0x6F, 0x7E, 0xC7, 0x00, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0xDA, 0xB5, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16, 0x01,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2B, 0x00,
+   0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x1B, 0x00, 0x50, 0x01, 0x72, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01,
+   0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
+   0x00, 0x00, 0x38, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00,
+   0x00, 0x10, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x00,
+   0x38, 0x00, 0x40, 0x00, 0x38, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0xDD, 0xD1,
+   0x5D, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x01,
+   0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0xF2, 0xE0, 0x03, 0x02, 0x00, 0x00, 0x00,
+   0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
+   0x00, 0x02, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x29, 0x00, 0x1B, 0x00,
+   0x50, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1,
+   0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
+   0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02,
+   0x00, 0x00, 0x00, 0x68, 0x26, 0xC4, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4B, 0x2E, 0xE1,
+   0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12, 0x16, 0x01, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+   0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10,
+   0x00, 0x2A, 0x00, 0x1C, 0x00, 0x50, 0x01, 0x72, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x90, 0x01, 0x00, 0x20, 0x00,
+   0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x38,
+   0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x10, 0x00,
+   0x00, 0x06, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x40,
+   0x00, 0x38, 0x00, 0x40, 0x00, 0x38, 0x00, 0x40, 0xAD, 0x8B, 0x6A, 0x10, 0x00,
+   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x08, 0x01, 0x00, 0x02, 0x00,
+   0x00, 0x00, 0x84, 0x6A, 0xE1, 0x03, 0x02, 0x00, 0x00, 0x00, 0x43, 0x5E, 0x12,
+   0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+   0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
+   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00,
+   0x2A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x29, 0x00, 0x1B, 0x00, 0x4E, 0x01, 0x72,
+   0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF,
+   0x90, 0x01, 0x00, 0x20, 0x00, 0xED, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0xE0,
+   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0xED, 0x00,
+   0xE0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+   0xFC, 0x94, 0x39, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}
+};
+
+// This data has some leading 0s in the data part of at least one of the packets
+// that used to confuse the code.
+TEST_F(PacketFinderTest, LeadingZeros) {
+  ReceivePackets(kTestData1, 7);
+}
+
+// Tests to make sure that dropping any byte will result in missing that packet
+// and no future ones.
+TEST_F(PacketFinderTest, DropAnyByte) {
+  static constexpr auto kTestData = kTestData1;
+  for (int i = 0; i < static_cast<int>(kTestData.size()); ++i) {
+    SCOPED_TRACE("dropping byte " + ::std::to_string(i));
+    ::std::array<uint8_t, kTestData.size() - 1> data;
+    ::std::copy(kTestData.begin(), kTestData.begin() + i, data.begin());
+    ::std::copy(kTestData.begin() + i + 1, kTestData.end(),
+                data.begin() + i);
+    ReceivePackets(data, 7, ::std::array<int, 1>{{i / 148 + 1}});
+  }
 }
 
 }  // namespace testing