From 72231250ed81e10d66bfe70701e64fa5fe50f712 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Wed, 15 Jun 2016 23:09:44 +0200 Subject: Publish --- messagebus/src/tests/blob/blob.cpp | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 messagebus/src/tests/blob/blob.cpp (limited to 'messagebus/src/tests/blob/blob.cpp') diff --git a/messagebus/src/tests/blob/blob.cpp b/messagebus/src/tests/blob/blob.cpp new file mode 100644 index 00000000000..9b0df1ae476 --- /dev/null +++ b/messagebus/src/tests/blob/blob.cpp @@ -0,0 +1,79 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include +#include +LOG_SETUP("blob_test"); +#include +#include +#include + +using mbus::Blob; +using mbus::BlobRef; + +TEST_SETUP(Test); + +Blob makeBlob(const char *txt) { + Blob b(strlen(txt) + 1); + strcpy(b.data(), txt); + return b; +} + +BlobRef makeBlobRef(const Blob &b) { + return BlobRef(b.data(), b.size()); +} + +Blob returnBlob(Blob b) { + return b; +} + +BlobRef returnBlobRef(BlobRef br) { + return br; +} + +int +Test::Main() +{ + TEST_INIT("blob_test"); + + // create a blob + Blob b = makeBlob("test"); + EXPECT_TRUE(b.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", b.data()) == 0); + + // create a ref to a blob + BlobRef br = makeBlobRef(b); + EXPECT_TRUE(br.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", br.data()) == 0); + EXPECT_TRUE(b.data() == br.data()); + + // non-destructive copy of ref + BlobRef br2 = returnBlobRef(br); + EXPECT_TRUE(br.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", br.data()) == 0); + EXPECT_TRUE(b.data() == br.data()); + EXPECT_TRUE(br2.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", br2.data()) == 0); + EXPECT_TRUE(b.data() == br2.data()); + + br = br2; + EXPECT_TRUE(br.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", br.data()) == 0); + EXPECT_TRUE(b.data() == br.data()); + EXPECT_TRUE(br2.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", br2.data()) == 0); + EXPECT_TRUE(b.data() == br2.data()); + + // destructive copy of blob + Blob b2 = returnBlob(std::move(b)); + EXPECT_EQUAL(0u, b.size()); + EXPECT_TRUE(b.data() == 0); + EXPECT_TRUE(b2.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", b2.data()) == 0); + + b.swap(b2); + EXPECT_EQUAL(0u, b2.size()); + EXPECT_TRUE(b2.data() == 0); + EXPECT_TRUE(b.size() == strlen("test") + 1); + EXPECT_TRUE(strcmp("test", b.data()) == 0); + + TEST_DONE(); +} -- cgit v1.2.3