xref: /llvm-project/clang/unittests/Basic/SanitizersTest.cpp (revision 40c261c41c4ceb0dff802d6a83f7ae65af936af8)
1 //===- unittests/Basic/SanitizersTest.cpp - Test Sanitizers ---------------===//
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 "clang/Basic/Sanitizers.h"
10 
11 #include "gmock/gmock-matchers.h"
12 #include "gtest/gtest.h"
13 
14 using namespace clang;
15 
16 using testing::Contains;
17 using testing::Not;
18 
TEST(SanitizersTest,serializeSanitizers)19 TEST(SanitizersTest, serializeSanitizers) {
20   SanitizerSet Set;
21   Set.set(parseSanitizerValue("memory", false), true);
22   Set.set(parseSanitizerValue("nullability-arg", false), true);
23 
24   SmallVector<StringRef, 4> Serialized;
25   serializeSanitizerSet(Set, Serialized);
26 
27   ASSERT_EQ(Serialized.size(), 2u);
28   ASSERT_THAT(Serialized, Contains("memory"));
29   ASSERT_THAT(Serialized, Contains("nullability-arg"));
30 }
31 
TEST(SanitizersTest,serializeSanitizersIndividual)32 TEST(SanitizersTest, serializeSanitizersIndividual) {
33   SanitizerSet Set;
34   Set.set(parseSanitizerValue("memory", false), true);
35   Set.set(parseSanitizerValue("nullability-arg", false), true);
36   Set.set(parseSanitizerValue("nullability-assign", false), true);
37   Set.set(parseSanitizerValue("nullability-return", false), true);
38 
39   SmallVector<StringRef, 4> Serialized;
40   serializeSanitizerSet(Set, Serialized);
41 
42   ASSERT_EQ(Serialized.size(), 4u);
43   ASSERT_THAT(Serialized, Contains("memory"));
44   ASSERT_THAT(Serialized, Contains("nullability-arg"));
45   ASSERT_THAT(Serialized, Contains("nullability-assign"));
46   ASSERT_THAT(Serialized, Contains("nullability-return"));
47   // Individual sanitizers don't get squashed into a single group.
48   ASSERT_THAT(Serialized, Not(Contains("nullability")));
49 }
50