aboutsummaryrefslogtreecommitdiffstats
path: root/messagebus/src/tests/blob/blob.cpp
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 /messagebus/src/tests/blob/blob.cpp
Publish
Diffstat (limited to 'messagebus/src/tests/blob/blob.cpp')
-rw-r--r--messagebus/src/tests/blob/blob.cpp79
1 files changed, 79 insertions, 0 deletions
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 <vespa/fastos/fastos.h>
+#include <vespa/log/log.h>
+LOG_SETUP("blob_test");
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/messagebus/blob.h>
+#include <vespa/messagebus/blobref.h>
+
+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();
+}