capnproto

FORK: Cap'n Proto serialization/RPC system - core tools and C++ library
git clone https://git.neptards.moe/neptards/capnproto.git
Log | Files | Refs | README | LICENSE

string-tree-test.c++ (2299B)


      1 // Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
      2 // Licensed under the MIT License:
      3 //
      4 // Permission is hereby granted, free of charge, to any person obtaining a copy
      5 // of this software and associated documentation files (the "Software"), to deal
      6 // in the Software without restriction, including without limitation the rights
      7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      8 // copies of the Software, and to permit persons to whom the Software is
      9 // furnished to do so, subject to the following conditions:
     10 //
     11 // The above copyright notice and this permission notice shall be included in
     12 // all copies or substantial portions of the Software.
     13 //
     14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     20 // THE SOFTWARE.
     21 
     22 #include "string-tree.h"
     23 #include <kj/compat/gtest.h>
     24 
     25 namespace kj {
     26 namespace _ {  // private
     27 namespace {
     28 
     29 TEST(StringTree, StrTree) {
     30   EXPECT_EQ("foobar", strTree("foo", "bar").flatten());
     31   EXPECT_EQ("1 2 3 4", strTree(1, " ", 2u, " ", 3l, " ", 4ll).flatten());
     32   EXPECT_EQ("1.5 foo 1e15 bar -3", strTree(1.5f, " foo ", 1e15, " bar ", -3).flatten());
     33   EXPECT_EQ("foo", strTree('f', 'o', 'o').flatten());
     34 
     35   {
     36     StringTree tree = strTree(strTree(str("foo"), str("bar")), "baz");
     37     EXPECT_EQ("foobarbaz", tree.flatten());
     38 
     39     uint pieceCount = 0;
     40     tree.visit([&](ArrayPtr<const char> part) { ++pieceCount; EXPECT_EQ(3u, part.size()); });
     41     EXPECT_EQ(3u, pieceCount);
     42   }
     43 
     44   EXPECT_EQ("<foobarbaz>", str('<', strTree(str("foo"), "bar", str("baz")), '>'));
     45 }
     46 
     47 TEST(StringTree, DelimitedArray) {
     48   Array<StringTree> arr = heapArray<StringTree>(4);
     49   arr[0] = strTree("foo");
     50   arr[1] = strTree("bar");
     51   arr[2] = strTree("baz");
     52   arr[3] = strTree("qux");
     53 
     54   EXPECT_EQ("foo, bar, baz, qux", StringTree(kj::mv(arr), ", ").flatten());
     55 }
     56 
     57 }  // namespace
     58 }  // namespace _ (private)
     59 }  // namespace kj