1*b15aa7f8SLang Hames //===------- MemoryFlagsTest.cpp - Test MemoryFlags and related APIs ------===// 2*b15aa7f8SLang Hames // 3*b15aa7f8SLang Hames // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*b15aa7f8SLang Hames // See https://llvm.org/LICENSE.txt for license information. 5*b15aa7f8SLang Hames // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*b15aa7f8SLang Hames // 7*b15aa7f8SLang Hames //===----------------------------------------------------------------------===// 8*b15aa7f8SLang Hames 9*b15aa7f8SLang Hames #include "llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h" 10*b15aa7f8SLang Hames #include "gtest/gtest.h" 11*b15aa7f8SLang Hames 12*b15aa7f8SLang Hames #include <future> 13*b15aa7f8SLang Hames 14*b15aa7f8SLang Hames using namespace llvm; 15*b15aa7f8SLang Hames using namespace llvm::orc; 16*b15aa7f8SLang Hames 17*b15aa7f8SLang Hames TEST(MemProtTest, Basics) { 18*b15aa7f8SLang Hames MemProt MPNone = MemProt::None; 19*b15aa7f8SLang Hames 20*b15aa7f8SLang Hames EXPECT_EQ(MPNone & MemProt::Read, MemProt::None); 21*b15aa7f8SLang Hames EXPECT_EQ(MPNone & MemProt::Write, MemProt::None); 22*b15aa7f8SLang Hames EXPECT_EQ(MPNone & MemProt::Exec, MemProt::None); 23*b15aa7f8SLang Hames 24*b15aa7f8SLang Hames EXPECT_EQ(MPNone | MemProt::Read, MemProt::Read); 25*b15aa7f8SLang Hames EXPECT_EQ(MPNone | MemProt::Write, MemProt::Write); 26*b15aa7f8SLang Hames EXPECT_EQ(MPNone | MemProt::Exec, MemProt::Exec); 27*b15aa7f8SLang Hames 28*b15aa7f8SLang Hames MemProt MPAll = MemProt::Read | MemProt::Write | MemProt::Exec; 29*b15aa7f8SLang Hames EXPECT_EQ(MPAll & MemProt::Read, MemProt::Read); 30*b15aa7f8SLang Hames EXPECT_EQ(MPAll & MemProt::Write, MemProt::Write); 31*b15aa7f8SLang Hames EXPECT_EQ(MPAll & MemProt::Exec, MemProt::Exec); 32*b15aa7f8SLang Hames } 33*b15aa7f8SLang Hames 34*b15aa7f8SLang Hames TEST(AllocGroupSmallMap, EmptyMap) { 35*b15aa7f8SLang Hames AllocGroupSmallMap<bool> EM; 36*b15aa7f8SLang Hames EXPECT_TRUE(EM.empty()); 37*b15aa7f8SLang Hames EXPECT_EQ(EM.size(), 0u); 38*b15aa7f8SLang Hames } 39*b15aa7f8SLang Hames 40*b15aa7f8SLang Hames TEST(AllocGroupSmallMap, NonEmptyMap) { 41*b15aa7f8SLang Hames AllocGroupSmallMap<unsigned> NEM; 42*b15aa7f8SLang Hames NEM[MemProt::Read] = 42; 43*b15aa7f8SLang Hames 44*b15aa7f8SLang Hames EXPECT_FALSE(NEM.empty()); 45*b15aa7f8SLang Hames EXPECT_EQ(NEM.size(), 1U); 46*b15aa7f8SLang Hames EXPECT_EQ(NEM[MemProt::Read], 42U); 47*b15aa7f8SLang Hames EXPECT_EQ(NEM.find(MemProt::Read), NEM.begin()); 48*b15aa7f8SLang Hames EXPECT_EQ(NEM.find(MemProt::Read | MemProt::Write), NEM.end()); 49*b15aa7f8SLang Hames 50*b15aa7f8SLang Hames NEM[MemProt::Read | MemProt::Write] = 7; 51*b15aa7f8SLang Hames EXPECT_EQ(NEM.size(), 2U); 52*b15aa7f8SLang Hames EXPECT_EQ(NEM.begin()->second, 42U); 53*b15aa7f8SLang Hames EXPECT_EQ((NEM.begin() + 1)->second, 7U); 54*b15aa7f8SLang Hames } 55*b15aa7f8SLang Hames 56