blob: c290124b430c995d4cfcc8c385be3d90156d21f0 [file] [log] [blame]
#include "http2/adapter/data_source.h"
#include "common/platform/api/quiche_test.h"
namespace http2 {
namespace adapter {
namespace test {
namespace {
TEST(StringDataSourceTest, EmptyString) {
StringDataSource source("");
EXPECT_EQ(source.state(), DataSource::DONE);
EXPECT_THAT(source.NextData(), testing::IsEmpty());
}
TEST(StringDataSourceTest, PartialConsume) {
StringDataSource source("I'm a HTTP message body. Really!");
EXPECT_EQ(source.state(), DataSource::READY);
EXPECT_THAT(source.NextData(), testing::Not(testing::IsEmpty()));
source.Consume(6);
EXPECT_EQ(source.state(), DataSource::READY);
EXPECT_THAT(source.NextData(), testing::StartsWith("HTTP"));
source.Consume(0);
EXPECT_EQ(source.state(), DataSource::READY);
EXPECT_THAT(source.NextData(), testing::StartsWith("HTTP"));
// Consumes more than the remaining bytes available.
source.Consume(50);
EXPECT_THAT(source.NextData(), testing::IsEmpty())
<< "next data: " << source.NextData();
EXPECT_EQ(source.state(), DataSource::DONE);
}
} // namespace
} // namespace test
} // namespace adapter
} // namespace http2