X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Ftest_prebufferedstreambuf.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Ftest_prebufferedstreambuf.cc;h=489a985d8b430e207e8440c0503008d9151e8ab1;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/test_prebufferedstreambuf.cc b/src/ceph/src/test/test_prebufferedstreambuf.cc new file mode 100644 index 0000000..489a985 --- /dev/null +++ b/src/ceph/src/test/test_prebufferedstreambuf.cc @@ -0,0 +1,95 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "common/PrebufferedStreambuf.h" +#include "gtest/gtest.h" + +TEST(PrebufferedStreambuf, Empty) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::istream is(&sb); + std::string out; + getline(is, out); + ASSERT_EQ("", out); +} + +TEST(PrebufferedStreambuf, Simple) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::ostream os(&sb); + os << "test"; + + std::istream is(&sb); + std::string out; + getline(is, out); + ASSERT_EQ("test", out); +} + +TEST(PrebufferedStreambuf, Multiline) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::ostream os(&sb); + const char *s = "this is a line\nanother line\nand a third\nwhee!\n"; + os << s; + + std::istream is(&sb); + std::string out; + getline(is, out, is.widen(0)); + ASSERT_EQ(s, out); +} + +TEST(PrebufferedStreambuf, Withnull) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::ostream os(&sb); + std::string s("null \0 and more", 15); + os << s; + + std::istream is(&sb); + std::string out; + getline(is, out); + ASSERT_EQ(s, out); +} + +TEST(PrebufferedStreambuf, SimpleOverflow) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::ostream os(&sb); + const char *s = "hello, this is longer than buf[10]"; + os << s; + + ASSERT_EQ(s, sb.get_str()); + + std::istream is(&sb); + std::string out; + getline(is, out); + ASSERT_EQ(s, out); +} + +TEST(PrebufferedStreambuf, ManyOverflow) +{ + char buf[10]; + PrebufferedStreambuf sb(buf, sizeof(buf)); + + std::ostream os(&sb); + const char *s = "hello, this way way way way way way way way way way way way way way way way way way way way way way way way way _way_ longer than buf[10]"; + os << s; + + ASSERT_EQ(s, sb.get_str()); + + std::istream is(&sb); + std::string out; + getline(is, out); + ASSERT_EQ(s, out); +} +