Checking in blob routines.

Change-Id: I364331d6f9239763ccac492460ed752a0b16871f
diff --git a/aos/vision/blob/codec_test.cc b/aos/vision/blob/codec_test.cc
new file mode 100644
index 0000000..53dc3bb
--- /dev/null
+++ b/aos/vision/blob/codec_test.cc
@@ -0,0 +1,37 @@
+#include "aos/vision/blob/codec.h"
+
+#include <algorithm>
+#include "gtest/gtest.h"
+
+namespace aos {
+namespace vision {
+
+TEST(CodecTest, WriteRead) {
+  BlobList blobl;
+  {
+    std::vector<std::vector<ImageRange>> ranges;
+    ranges.emplace_back(std::vector<ImageRange>{{10, 11}});
+    ranges.emplace_back(std::vector<ImageRange>{{15, 17}});
+    ranges.emplace_back(std::vector<ImageRange>{{19, 30}});
+    blobl.emplace_back(RangeImage(10, std::move(ranges)));
+  }
+
+  {
+    std::vector<std::vector<ImageRange>> ranges;
+    ranges.emplace_back(std::vector<ImageRange>{{18, 19}});
+    ranges.emplace_back(std::vector<ImageRange>{{12, 13}});
+    ranges.emplace_back(std::vector<ImageRange>{{12, 17}});
+    blobl.emplace_back(RangeImage(13, std::move(ranges)));
+  }
+
+  std::string out;
+  SerializeBlobTo(blobl, &out);
+  BlobList blobl2;
+  size_t real_len = ParseBlobList(&blobl2, out.data()) - out.data();
+  EXPECT_EQ(ShortDebugPrint(blobl), ShortDebugPrint(blobl2));
+
+  EXPECT_EQ(real_len, CalculateSize(blobl));
+}
+
+}  // namespace vision
+}  // namespace aos