summaryrefslogtreecommitdiffstats
path: root/vsm/src/tests/charbuffer
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /vsm/src/tests/charbuffer
Publish
Diffstat (limited to 'vsm/src/tests/charbuffer')
-rw-r--r--vsm/src/tests/charbuffer/.gitignore4
-rw-r--r--vsm/src/tests/charbuffer/CMakeLists.txt8
-rw-r--r--vsm/src/tests/charbuffer/DESC1
-rw-r--r--vsm/src/tests/charbuffer/FILES1
-rw-r--r--vsm/src/tests/charbuffer/charbuffer.cpp83
5 files changed, 97 insertions, 0 deletions
diff --git a/vsm/src/tests/charbuffer/.gitignore b/vsm/src/tests/charbuffer/.gitignore
new file mode 100644
index 00000000000..2c980038fb5
--- /dev/null
+++ b/vsm/src/tests/charbuffer/.gitignore
@@ -0,0 +1,4 @@
+.depend
+Makefile
+charbuffer_test
+vsm_charbuffer_test_app
diff --git a/vsm/src/tests/charbuffer/CMakeLists.txt b/vsm/src/tests/charbuffer/CMakeLists.txt
new file mode 100644
index 00000000000..38d1f519714
--- /dev/null
+++ b/vsm/src/tests/charbuffer/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(vsm_charbuffer_test_app
+ SOURCES
+ charbuffer.cpp
+ DEPENDS
+ vsm
+)
+vespa_add_test(NAME vsm_charbuffer_test_app COMMAND vsm_charbuffer_test_app)
diff --git a/vsm/src/tests/charbuffer/DESC b/vsm/src/tests/charbuffer/DESC
new file mode 100644
index 00000000000..2f1758f837e
--- /dev/null
+++ b/vsm/src/tests/charbuffer/DESC
@@ -0,0 +1 @@
+charbuffer test. Take a look at charbuffer.cpp for details.
diff --git a/vsm/src/tests/charbuffer/FILES b/vsm/src/tests/charbuffer/FILES
new file mode 100644
index 00000000000..ef12614a361
--- /dev/null
+++ b/vsm/src/tests/charbuffer/FILES
@@ -0,0 +1 @@
+charbuffer.cpp
diff --git a/vsm/src/tests/charbuffer/charbuffer.cpp b/vsm/src/tests/charbuffer/charbuffer.cpp
new file mode 100644
index 00000000000..b285005de42
--- /dev/null
+++ b/vsm/src/tests/charbuffer/charbuffer.cpp
@@ -0,0 +1,83 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <vespa/log/log.h>
+LOG_SETUP("charbuffer_test");
+#include <vespa/vespalib/testkit/testapp.h>
+
+#include <vespa/vsm/common/charbuffer.h>
+
+namespace vsm {
+
+class CharBufferTest : public vespalib::TestApp
+{
+private:
+ void test();
+public:
+ int Main();
+};
+
+void
+CharBufferTest::test()
+{
+ { // empty
+ CharBuffer buf;
+ EXPECT_EQUAL(buf.getLength(), 0u);
+ EXPECT_EQUAL(buf.getPos(), 0u);
+ EXPECT_EQUAL(buf.getRemaining(), 0u);
+ }
+ { // explicit length
+ CharBuffer buf(8);
+ EXPECT_EQUAL(buf.getLength(), 8u);
+ EXPECT_EQUAL(buf.getPos(), 0u);
+ EXPECT_EQUAL(buf.getRemaining(), 8u);
+ }
+ { // resize
+ CharBuffer buf(8);
+ EXPECT_EQUAL(buf.getLength(), 8u);
+ buf.resize(16);
+ EXPECT_EQUAL(buf.getLength(), 16u);
+ buf.resize(8);
+ EXPECT_EQUAL(buf.getLength(), 16u);
+ }
+ { // put with triggered resize
+ CharBuffer buf(8);
+ buf.put("123456", 6);
+ EXPECT_EQUAL(buf.getLength(), 8u);
+ EXPECT_EQUAL(buf.getPos(), 6u);
+ EXPECT_EQUAL(buf.getRemaining(), 2u);
+ EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456");
+ buf.put("789", 3);
+ EXPECT_EQUAL(buf.getLength(), 12u);
+ EXPECT_EQUAL(buf.getPos(), 9u);
+ EXPECT_EQUAL(buf.getRemaining(), 3u);
+ EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456789");
+ buf.put('a');
+ EXPECT_EQUAL(buf.getLength(), 12u);
+ EXPECT_EQUAL(buf.getPos(), 10u);
+ EXPECT_EQUAL(buf.getRemaining(), 2u);
+ EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456789a");
+ buf.reset();
+ EXPECT_EQUAL(buf.getLength(), 12u);
+ EXPECT_EQUAL(buf.getPos(), 0u);
+ EXPECT_EQUAL(buf.getRemaining(), 12u);
+ buf.put("bcd", 3);
+ EXPECT_EQUAL(buf.getLength(), 12u);
+ EXPECT_EQUAL(buf.getPos(), 3u);
+ EXPECT_EQUAL(buf.getRemaining(), 9u);
+ EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "bcd");
+ }
+}
+
+int
+CharBufferTest::Main()
+{
+ TEST_INIT("charbuffer_test");
+
+ test();
+
+ TEST_DONE();
+}
+
+}
+
+TEST_APPHOOK(vsm::CharBufferTest);