diff options
author | Haavard <havardpe@yahoo-inc.com> | 2017-02-02 11:27:22 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2017-02-02 11:27:22 +0000 |
commit | ea810ce997ef0216771695496fb1165a81cb46b0 (patch) | |
tree | 3f480decd8809c9690e8cdf3a6df73e5ffcfc3fa /vespalib | |
parent | 78490a5deca54ed0d7d1d4f23d2946dcc0645266 (diff) |
added test for output writer
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | vespalib/src/tests/data/output_writer/CMakeLists.txt | 8 | ||||
-rw-r--r-- | vespalib/src/tests/data/output_writer/output_writer_test.cpp | 63 |
3 files changed, 72 insertions, 0 deletions
diff --git a/vespalib/CMakeLists.txt b/vespalib/CMakeLists.txt index c5e568c103b..59e3cd29c0b 100644 --- a/vespalib/CMakeLists.txt +++ b/vespalib/CMakeLists.txt @@ -20,6 +20,7 @@ vespa_define_module( src/tests/closure src/tests/component src/tests/compress + src/tests/data/output_writer src/tests/data/simple_buffer src/tests/delegatelist src/tests/dotproduct diff --git a/vespalib/src/tests/data/output_writer/CMakeLists.txt b/vespalib/src/tests/data/output_writer/CMakeLists.txt new file mode 100644 index 00000000000..6507de2e6eb --- /dev/null +++ b/vespalib/src/tests/data/output_writer/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(vespalib_output_writer_test_app TEST + SOURCES + output_writer_test.cpp + DEPENDS + vespalib +) +vespa_add_test(NAME vespalib_output_writer_test_app COMMAND vespalib_output_writer_test_app) diff --git a/vespalib/src/tests/data/output_writer/output_writer_test.cpp b/vespalib/src/tests/data/output_writer/output_writer_test.cpp new file mode 100644 index 00000000000..a7b00f40846 --- /dev/null +++ b/vespalib/src/tests/data/output_writer/output_writer_test.cpp @@ -0,0 +1,63 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/vespalib/data/simple_buffer.h> +#include <vespa/vespalib/data/output_writer.h> + +using namespace vespalib; + +TEST("output writer smoke test") { + SimpleBuffer buffer; + { + OutputWriter dst(buffer, 3); + dst.write('a'); + dst.write('b'); + dst.write('c'); + dst.write('\n'); + dst.write("foo bar", strlen("foo bar")); + dst.write('\n'); + dst.printf("%d + %d = %d\n", 2, 2, 4); + } + vespalib::string expect = "abc\n" + "foo bar\n" + "2 + 2 = 4\n"; + EXPECT_EQUAL(Memory(expect), buffer.get()); +} + +TEST("require that reserve/commit works as expected") { + SimpleBuffer buffer; + { + OutputWriter dst(buffer, 3); + char *p = dst.reserve(5); + p[0] = 'a'; + p[1] = 'b'; + p[2] = 'c'; + dst.commit(3); + dst.reserve(1)[0] = '\n'; + dst.commit(1); + dst.reserve(10); + } + vespalib::string expect = "abc\n"; + EXPECT_EQUAL(Memory(expect), buffer.get()); +} + +TEST("require that large printf works") { + const char *str = "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890"; + size_t str_len = strlen(str); + EXPECT_EQUAL(str_len, 200); + SimpleBuffer buffer; + { + OutputWriter dst(buffer, 3); + dst.printf("%s,%s,%s,%s", str, str, str, str); + } + ASSERT_EQUAL(buffer.get().size, (str_len * 4) + 3); + EXPECT_EQUAL(buffer.get().data[str_len], ','); + EXPECT_EQUAL(buffer.get().data[(2 * str_len) + 1], ','); + EXPECT_EQUAL(buffer.get().data[(3 * str_len) + 2], ','); + size_t offset = (buffer.get().size - str_len); + EXPECT_EQUAL(Memory(buffer.get().data + offset, buffer.get().size - offset), Memory(str)); +} + +TEST_MAIN() { TEST_RUN_ALL(); } |