blob-test.c++ 4.44 KB
Newer Older
Kenton Varda's avatar
Kenton Varda committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// Copyright (c) 2013, Kenton Varda <temporal@gmail.com>
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include "blob.h"
#include <gtest/gtest.h>
#include <iostream>
#include <string>
Kenton Varda's avatar
Kenton Varda committed
28
#include "test-util.h"
Kenton Varda's avatar
Kenton Varda committed
29

30 31 32
// TODO(test):  This test is outdated -- it predates the retrofit of Text and Data on top of
//   kj::ArrayPtr/kj::StringPtr.  Clean it up.

33
namespace capnp {
Kenton Varda's avatar
Kenton Varda committed
34 35 36 37
namespace {

TEST(Blob, Text) {
  std::string str = "foo";
38
  Text::Reader text = str.c_str();
Kenton Varda's avatar
Kenton Varda committed
39

40
  EXPECT_EQ("foo", text);
41 42
  EXPECT_STREQ("foo", text.cStr());
  EXPECT_STREQ("foo", text.begin());
Kenton Varda's avatar
Kenton Varda committed
43 44 45
  EXPECT_EQ(3u, text.size());

  Text::Reader text2 = "bar";
46
  EXPECT_EQ("bar", text2);
Kenton Varda's avatar
Kenton Varda committed
47 48 49

  char c[4] = "baz";
  Text::Reader text3(c);
50
  EXPECT_EQ("baz", text3);
Kenton Varda's avatar
Kenton Varda committed
51 52

  Text::Builder builder(c, 3);
53
  EXPECT_EQ("baz", builder);
Kenton Varda's avatar
Kenton Varda committed
54

55 56 57 58 59
  EXPECT_EQ(kj::arrayPtr("az", 2), builder.slice(1, 3));
}

Data::Reader dataLit(const char* str) {
  return Data::Reader(reinterpret_cast<const byte*>(str), strlen(str));
Kenton Varda's avatar
Kenton Varda committed
60 61 62
}

TEST(Blob, Data) {
63
  Data::Reader data = dataLit("foo");
Kenton Varda's avatar
Kenton Varda committed
64

65
  EXPECT_EQ(dataLit("foo"), data);
Kenton Varda's avatar
Kenton Varda committed
66 67
  EXPECT_EQ(3u, data.size());

68 69
  Data::Reader data2 = dataLit("bar");
  EXPECT_EQ(dataLit("bar"), data2);
Kenton Varda's avatar
Kenton Varda committed
70

71 72 73
  byte c[4] = "baz";
  Data::Reader data3(c, 3);
  EXPECT_EQ(dataLit("baz"), data3);
Kenton Varda's avatar
Kenton Varda committed
74 75

  Data::Builder builder(c, 3);
76
  EXPECT_EQ(dataLit("baz"), builder);
Kenton Varda's avatar
Kenton Varda committed
77

78
  EXPECT_EQ(dataLit("az"), builder.slice(1, 3));
Kenton Varda's avatar
Kenton Varda committed
79 80
}

81
TEST(Blob, Compare) {
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
  EXPECT_TRUE (Text::Reader("foo") == Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("foo") != Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("foo") <= Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("foo") >= Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("foo") <  Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("foo") >  Text::Reader("foo"));

  EXPECT_FALSE(Text::Reader("foo") == Text::Reader("bar"));
  EXPECT_TRUE (Text::Reader("foo") != Text::Reader("bar"));
  EXPECT_FALSE(Text::Reader("foo") <= Text::Reader("bar"));
  EXPECT_TRUE (Text::Reader("foo") >= Text::Reader("bar"));
  EXPECT_FALSE(Text::Reader("foo") <  Text::Reader("bar"));
  EXPECT_TRUE (Text::Reader("foo") >  Text::Reader("bar"));

  EXPECT_FALSE(Text::Reader("bar") == Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("bar") != Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("bar") <= Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("bar") >= Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("bar") <  Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("bar") >  Text::Reader("foo"));

  EXPECT_FALSE(Text::Reader("foobar") == Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("foobar") != Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("foobar") <= Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("foobar") >= Text::Reader("foo"));
  EXPECT_FALSE(Text::Reader("foobar") <  Text::Reader("foo"));
  EXPECT_TRUE (Text::Reader("foobar") >  Text::Reader("foo"));

  EXPECT_FALSE(Text::Reader("foo") == Text::Reader("foobar"));
  EXPECT_TRUE (Text::Reader("foo") != Text::Reader("foobar"));
  EXPECT_TRUE (Text::Reader("foo") <= Text::Reader("foobar"));
  EXPECT_FALSE(Text::Reader("foo") >= Text::Reader("foobar"));
  EXPECT_TRUE (Text::Reader("foo") <  Text::Reader("foobar"));
  EXPECT_FALSE(Text::Reader("foo") >  Text::Reader("foobar"));
116 117
}

Kenton Varda's avatar
Kenton Varda committed
118
}  // namespace
119
}  // namespace capnp