1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //===- unittest/Analysis/AnalyzerOptionsTest.cpp - SA Options test --------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #include "clang/StaticAnalyzer/Core/AnalyzerOptions.h"
- #include "clang/StaticAnalyzer/Core/Checker.h"
- #include "gtest/gtest.h"
- namespace clang {
- namespace ento {
- TEST(StaticAnalyzerOptions, SearchInParentPackageTests) {
- AnalyzerOptions Opts;
- Opts.Config["Outer.Inner.CheckerOne:Option"] = "true";
- Opts.Config["Outer.Inner:Option"] = "false";
- Opts.Config["Outer.Inner:Option2"] = "true";
- Opts.Config["Outer:Option2"] = "false";
- struct CheckerOneMock : CheckerBase {
- StringRef getTagDescription() const override {
- return "Outer.Inner.CheckerOne";
- }
- };
- struct CheckerTwoMock : CheckerBase {
- StringRef getTagDescription() const override {
- return "Outer.Inner.CheckerTwo";
- }
- };
- // Checker one has Option specified as true. It should read true regardless of
- // search mode.
- CheckerOneMock CheckerOne;
- EXPECT_TRUE(Opts.getBooleanOption("Option", false, &CheckerOne));
- // The package option is overriden with a checker option.
- EXPECT_TRUE(Opts.getBooleanOption("Option", false, &CheckerOne, true));
- // The Outer package option is overriden by the Inner package option. No
- // package option is specified.
- EXPECT_TRUE(Opts.getBooleanOption("Option2", false, &CheckerOne, true));
- // No package option is specified and search in packages is turned off. The
- // default value should be returned.
- EXPECT_FALSE(Opts.getBooleanOption("Option2", false, &CheckerOne));
- EXPECT_TRUE(Opts.getBooleanOption("Option2", true, &CheckerOne));
- // Checker true has no option specified. It should get the default value when
- // search in parents turned off and false when search in parents turned on.
- CheckerTwoMock CheckerTwo;
- EXPECT_FALSE(Opts.getBooleanOption("Option", false, &CheckerTwo));
- EXPECT_TRUE(Opts.getBooleanOption("Option", true, &CheckerTwo));
- EXPECT_FALSE(Opts.getBooleanOption("Option", true, &CheckerTwo, true));
- }
- TEST(StaticAnalyzerOptions, StringOptions) {
- AnalyzerOptions Opts;
- Opts.Config["Outer.Inner.CheckerOne:Option"] = "StringValue";
- struct CheckerOneMock : CheckerBase {
- StringRef getTagDescription() const override {
- return "Outer.Inner.CheckerOne";
- }
- };
- CheckerOneMock CheckerOne;
- EXPECT_TRUE("StringValue" ==
- Opts.getOptionAsString("Option", "DefaultValue", &CheckerOne));
- EXPECT_TRUE("DefaultValue" ==
- Opts.getOptionAsString("Option2", "DefaultValue", &CheckerOne));
- }
- } // end namespace ento
- } // end namespace clang
|