31 #include <google/protobuf/stubs/bytestream.h>
37 #include <google/protobuf/testing/googletest.h>
38 #include <gtest/gtest.h>
48 class MockByteSource :
public ByteSource {
50 MockByteSource(StringPiece
data,
int block_size)
53 size_t Available()
const {
return data_.size(); }
57 void Skip(
size_t n) {
data_.remove_prefix(n); }
64 TEST(ByteSourceTest, CopyTo) {
65 StringPiece
data(
"Hello world!");
66 MockByteSource source(
data, 3);
74 TEST(ByteSourceTest, CopySubstringTo) {
75 StringPiece
data(
"Hello world!");
76 MockByteSource source(
data, 3);
81 source.CopyTo(&
sink,
data.size() - 2);
86 TEST(ByteSourceTest, LimitByteSource) {
87 StringPiece
data(
"Hello world!");
88 MockByteSource source(
data, 3);
89 LimitByteSource limit_source(&source, 6);
97 limit_source.CopyTo(&
sink, limit_source.Available());
106 source.CopyTo(&
sink, source.Available());
112 TEST(ByteSourceTest, CopyToStringByteSink) {
113 StringPiece
data(
"Hello world!");
114 MockByteSource source(
data, 3);
122 class FlushingByteSink :
public StringByteSink {
125 virtual void Flush() {
Append(
"z", 1); }
131 void WriteAndFlush(ByteSink* s) {
136 TEST(ByteSinkTest, Flush) {
138 FlushingByteSink f_sink(&
str);
139 WriteAndFlush(&f_sink);