annotate unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp @ 134:3a76565eade5 LLVM5.0.1

update 5.0.1
author mir3636
date Sat, 17 Feb 2018 09:57:20 +0900
parents
children c2174574ed3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
134
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
1 //===----- SymbolStringPoolTest.cpp - Unit tests for SymbolStringPool -----===//
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
2 //
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
3 // The LLVM Compiler Infrastructure
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
4 //
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
5 // This file is distributed under the University of Illinois Open Source
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
6 // License. See LICENSE.TXT for details.
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
7 //
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
8 //===----------------------------------------------------------------------===//
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
9
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
10 #include "llvm/ExecutionEngine/Orc/SymbolStringPool.h"
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
11 #include "gtest/gtest.h"
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
12
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
13 using namespace llvm;
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
14 using namespace llvm::orc;
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
15
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
16 namespace {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
17
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
18 TEST(SymbolStringPool, UniquingAndComparisons) {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
19 SymbolStringPool SP;
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
20 auto P1 = SP.intern("hello");
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
21
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
22 std::string S("hel");
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
23 S += "lo";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
24 auto P2 = SP.intern(S);
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
25
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
26 auto P3 = SP.intern("goodbye");
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
27
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
28 EXPECT_EQ(P1, P2) << "Failed to unique entries";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
29 EXPECT_NE(P1, P3) << "Inequal pooled symbol strings comparing equal";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
30
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
31 // We want to test that less-than comparison of SymbolStringPtrs compiles,
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
32 // however we can't test the actual result as this is a pointer comparison and
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
33 // SymbolStringPtr doesn't expose the underlying address of the string.
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
34 (void)(P1 < P3);
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
35 }
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
36
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
37 TEST(SymbolStringPool, Dereference) {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
38 SymbolStringPool SP;
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
39 auto Foo = SP.intern("foo");
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
40 EXPECT_EQ(*Foo, "foo") << "Equality on dereferenced string failed";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
41 }
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
42
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
43 TEST(SymbolStringPool, ClearDeadEntries) {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
44 SymbolStringPool SP;
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
45 {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
46 auto P1 = SP.intern("s1");
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
47 SP.clearDeadEntries();
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
48 EXPECT_FALSE(SP.empty()) << "\"s1\" entry in pool should still be retained";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
49 }
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
50 SP.clearDeadEntries();
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
51 EXPECT_TRUE(SP.empty()) << "pool should be empty";
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
52 }
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
53
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
54 }