Adding vectorbuf tests for seekg

This commit is contained in:
Dan Paulat 2021-06-18 22:11:44 -05:00
parent 3ae8eb24ab
commit a4c67accf3

View file

@ -7,30 +7,76 @@ namespace scwx
namespace util namespace util
{ {
TEST(vectorbuf, smiles) class vectorbuf_test : public ::testing::Test
{ {
std::vector<char> v; protected:
vectorbuf vb(v); vectorbuf_test() : v_(), vb_(v_), is_(&vb_), Test() {}
std::istream is(&vb); ~vectorbuf_test() = default;
v.reserve(7); void SetUp() override
memcpy(v.data(), "smiles", 7); {
vb.update_read_pointers(7); v_.reserve(7);
memcpy(v_.data(), "smiles", 7);
vb_.update_read_pointers(7);
}
EXPECT_EQ(is.eof(), false); std::vector<char> v_;
EXPECT_EQ(is.fail(), false); vectorbuf vb_;
std::istream is_;
};
TEST_F(vectorbuf_test, smiles)
{
EXPECT_EQ(is_.eof(), false);
EXPECT_EQ(is_.fail(), false);
char data[7]; char data[7];
is.read(data, 7); is_.read(data, 7);
EXPECT_EQ(std::string(data), std::string("smiles")); EXPECT_EQ(std::string(data), std::string("smiles"));
EXPECT_EQ(is.eof(), false); EXPECT_EQ(is_.eof(), false);
EXPECT_EQ(is.fail(), false); EXPECT_EQ(is_.fail(), false);
is.read(data, 1); is_.read(data, 1);
EXPECT_EQ(is.eof(), true); EXPECT_EQ(is_.eof(), true);
EXPECT_EQ(is.fail(), true); EXPECT_EQ(is_.fail(), true);
}
TEST_F(vectorbuf_test, seekg_begin)
{
is_.seekg(1, std::ios_base::beg);
char data[7] = {0};
is_.read(data, 6);
EXPECT_EQ(std::string(data), std::string("miles"));
EXPECT_EQ(is_.eof(), false);
EXPECT_EQ(is_.fail(), false);
}
TEST_F(vectorbuf_test, seekg_cur)
{
char data[4] = {0};
is_.read(data, 1);
is_.seekg(2, std::ios_base::cur);
is_.read(data, 3);
EXPECT_EQ(std::string(data), std::string("les"));
EXPECT_EQ(is_.eof(), false);
EXPECT_EQ(is_.fail(), false);
}
TEST_F(vectorbuf_test, seekg_end)
{
is_.seekg(-4, std::ios_base::end);
char data[4] = {0};
is_.read(data, 3);
EXPECT_EQ(std::string(data), std::string("les"));
EXPECT_EQ(is_.eof(), false);
EXPECT_EQ(is_.fail(), false);
} }
} // namespace util } // namespace util