1 //===------- MemoryFlagsTest.cpp - Test MemoryFlags and related APIs ------===// 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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h" 10 #include "gtest/gtest.h" 11 12 #include <future> 13 14 using namespace llvm; 15 using namespace llvm::orc; 16 17 TEST(MemProtTest, Basics) { 18 MemProt MPNone = MemProt::None; 19 20 EXPECT_EQ(MPNone & MemProt::Read, MemProt::None); 21 EXPECT_EQ(MPNone & MemProt::Write, MemProt::None); 22 EXPECT_EQ(MPNone & MemProt::Exec, MemProt::None); 23 24 EXPECT_EQ(MPNone | MemProt::Read, MemProt::Read); 25 EXPECT_EQ(MPNone | MemProt::Write, MemProt::Write); 26 EXPECT_EQ(MPNone | MemProt::Exec, MemProt::Exec); 27 28 MemProt MPAll = MemProt::Read | MemProt::Write | MemProt::Exec; 29 EXPECT_EQ(MPAll & MemProt::Read, MemProt::Read); 30 EXPECT_EQ(MPAll & MemProt::Write, MemProt::Write); 31 EXPECT_EQ(MPAll & MemProt::Exec, MemProt::Exec); 32 } 33 34 TEST(AllocGroupSmallMap, EmptyMap) { 35 AllocGroupSmallMap<bool> EM; 36 EXPECT_TRUE(EM.empty()); 37 EXPECT_EQ(EM.size(), 0u); 38 } 39 40 TEST(AllocGroupSmallMap, NonEmptyMap) { 41 AllocGroupSmallMap<unsigned> NEM; 42 NEM[MemProt::Read] = 42; 43 44 EXPECT_FALSE(NEM.empty()); 45 EXPECT_EQ(NEM.size(), 1U); 46 EXPECT_EQ(NEM[MemProt::Read], 42U); 47 EXPECT_EQ(NEM.find(MemProt::Read), NEM.begin()); 48 EXPECT_EQ(NEM.find(MemProt::Read | MemProt::Write), NEM.end()); 49 50 NEM[MemProt::Read | MemProt::Write] = 7; 51 EXPECT_EQ(NEM.size(), 2U); 52 EXPECT_EQ(NEM.begin()->second, 42U); 53 EXPECT_EQ((NEM.begin() + 1)->second, 7U); 54 } 55 56