brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · aa1cdba Raw
69 lines · cpp
1//===-- UniqueCStringMapTest.cpp ------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Core/UniqueCStringMap.h"10#include "gmock/gmock.h"11 12using namespace lldb_private;13 14namespace {15struct NoDefault {16  int x;17 18  NoDefault(int x) : x(x) {}19  NoDefault() = delete;20 21  friend bool operator==(NoDefault lhs, NoDefault rhs) {22    return lhs.x == rhs.x;23  }24 25  friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,26                                       NoDefault x) {27    return OS << "NoDefault{" << x.x << "}";28  }29};30} // namespace31 32TEST(UniqueCStringMap, NoDefaultConstructor) {33  using MapT = UniqueCStringMap<NoDefault>;34  using EntryT = MapT::Entry;35 36  MapT Map;37  ConstString Foo("foo"), Bar("bar");38 39  Map.Append(Foo, NoDefault(42));40  EXPECT_THAT(Map.Find(Foo, NoDefault(47)), NoDefault(42));41  EXPECT_THAT(Map.Find(Bar, NoDefault(47)), NoDefault(47));42  EXPECT_THAT(Map.FindFirstValueForName(Foo),43              testing::Pointee(testing::Field(&EntryT::value, NoDefault(42))));44  EXPECT_THAT(Map.FindFirstValueForName(Bar), nullptr);45 46  std::vector<NoDefault> Values;47  EXPECT_THAT(Map.GetValues(Foo, Values), 1);48  EXPECT_THAT(Values, testing::ElementsAre(NoDefault(42)));49 50  Values.clear();51  EXPECT_THAT(Map.GetValues(Bar, Values), 0);52  EXPECT_THAT(Values, testing::IsEmpty());53}54 55TEST(UniqueCStringMap, ValueCompare) {56  UniqueCStringMap<int> Map;57 58  ConstString Foo("foo");59 60  Map.Append(Foo, 0);61  Map.Append(Foo, 5);62  Map.Append(Foo, -5);63 64  Map.Sort(std::less<int>());65  std::vector<int> Values;66  EXPECT_THAT(Map.GetValues(Foo, Values), 3);67  EXPECT_THAT(Values, testing::ElementsAre(-5, 0, 5));68}69