brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 1217718 Raw
91 lines · cpp
1//===----------- ImmutableMapTest.cpp - ImmutableMap unit tests ------------===//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 "llvm/ADT/ImmutableMap.h"10#include "gtest/gtest.h"11 12using namespace llvm;13 14namespace {15 16TEST(ImmutableMapTest, EmptyIntMapTest) {17  ImmutableMap<int, int>::Factory f;18 19  EXPECT_TRUE(f.getEmptyMap() == f.getEmptyMap());20  EXPECT_FALSE(f.getEmptyMap() != f.getEmptyMap());21  EXPECT_TRUE(f.getEmptyMap().isEmpty());22 23  ImmutableMap<int, int> S = f.getEmptyMap();24  EXPECT_EQ(0u, S.getHeight());25  EXPECT_TRUE(S.begin() == S.end());26  EXPECT_FALSE(S.begin() != S.end());27}28 29TEST(ImmutableMapTest, MultiElemIntMapTest) {30  ImmutableMap<int, int>::Factory f;31  ImmutableMap<int, int> S = f.getEmptyMap();32 33  ImmutableMap<int, int> S2 = f.add(f.add(f.add(S, 3, 10), 4, 11), 5, 12);34 35  EXPECT_TRUE(S.isEmpty());36  EXPECT_FALSE(S2.isEmpty());37 38  EXPECT_EQ(nullptr, S.lookup(3));39  EXPECT_EQ(nullptr, S.lookup(9));40 41  EXPECT_EQ(10, *S2.lookup(3));42  EXPECT_EQ(11, *S2.lookup(4));43  EXPECT_EQ(12, *S2.lookup(5));44 45  EXPECT_EQ(5, S2.getMaxElement()->first);46  EXPECT_EQ(3U, S2.getHeight());47}48 49TEST(ImmutableMapTest, EmptyIntMapRefTest) {50  using int_int_map = ImmutableMapRef<int, int>;51  ImmutableMapRef<int, int>::FactoryTy f;52 53  EXPECT_TRUE(int_int_map::getEmptyMap(&f) == int_int_map::getEmptyMap(&f));54  EXPECT_FALSE(int_int_map::getEmptyMap(&f) != int_int_map::getEmptyMap(&f));55  EXPECT_TRUE(int_int_map::getEmptyMap(&f).isEmpty());56 57  int_int_map S = int_int_map::getEmptyMap(&f);58  EXPECT_EQ(0u, S.getHeight());59  EXPECT_TRUE(S.begin() == S.end());60  EXPECT_FALSE(S.begin() != S.end());61}62 63TEST(ImmutableMapTest, MultiElemIntMapRefTest) {64  ImmutableMapRef<int, int>::FactoryTy f;65 66  ImmutableMapRef<int, int> S = ImmutableMapRef<int, int>::getEmptyMap(&f);67 68  ImmutableMapRef<int, int> S2 = S.add(3, 10).add(4, 11).add(5, 12);69 70  EXPECT_TRUE(S.isEmpty());71  EXPECT_FALSE(S2.isEmpty());72 73  EXPECT_EQ(nullptr, S.lookup(3));74  EXPECT_EQ(nullptr, S.lookup(9));75 76  EXPECT_EQ(10, *S2.lookup(3));77  EXPECT_EQ(11, *S2.lookup(4));78  EXPECT_EQ(12, *S2.lookup(5));79 80  EXPECT_EQ(5, S2.getMaxElement()->first);81  EXPECT_EQ(3U, S2.getHeight());82}83 84  TEST(ImmutableMapTest, MapOfMapRefsTest) {85  ImmutableMap<int, ImmutableMapRef<int, int>>::Factory f;86 87  EXPECT_TRUE(f.getEmptyMap() == f.getEmptyMap());88  }89 90}91