blob: c2c3b6f54aade703c7c79b0d1b786e8390e7d540 [file] [log] [blame]
Alexander Kornienkodad4acb2014-05-22 16:07:11 +00001#include "ClangTidyOptions.h"
2#include "gtest/gtest.h"
3
4namespace clang {
5namespace tidy {
6namespace test {
7
8TEST(ParseLineFilter, EmptyFilter) {
9 ClangTidyOptions Options;
10 EXPECT_FALSE(parseLineFilter("", Options));
11 EXPECT_TRUE(Options.LineFilter.empty());
12 EXPECT_FALSE(parseLineFilter("[]", Options));
13 EXPECT_TRUE(Options.LineFilter.empty());
14}
15
16TEST(ParseLineFilter, InvalidFilter) {
17 ClangTidyOptions Options;
18 // TODO: Figure out why parsing succeeds here.
19 EXPECT_FALSE(parseLineFilter("asdf", Options));
20 EXPECT_TRUE(Options.LineFilter.empty());
21
22 EXPECT_TRUE(parseLineFilter("[{}]", Options));
23 EXPECT_TRUE(parseLineFilter(R"([{"name":""}])", Options));
24 EXPECT_TRUE(parseLineFilter(R"([{"name":"test","lines":[[1]]}])", Options));
25 EXPECT_TRUE(
26 parseLineFilter(R"([{"name":"test","lines":[[1,2,3]]}])", Options));
27 EXPECT_TRUE(
28 parseLineFilter(R"([{"name":"test","lines":[[1,-1]]}])", Options));
29}
30
31TEST(ParseLineFilter, ValidFilter) {
32 ClangTidyOptions Options;
33 llvm::error_code Error = parseLineFilter(
34 R"([{"name":"file1.cpp","lines":[[3,15],[20,30],[42,42]]},
35 {"name":"file2.h"},
36 {"name":"file3.cc","lines":[[100,1000]]}])",
37 Options);
38 EXPECT_FALSE(Error);
39 EXPECT_EQ(3u, Options.LineFilter.size());
40 EXPECT_EQ("file1.cpp", Options.LineFilter[0].Name);
41 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges.size());
42 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges[0].first);
43 EXPECT_EQ(15u, Options.LineFilter[0].LineRanges[0].second);
44 EXPECT_EQ(20u, Options.LineFilter[0].LineRanges[1].first);
45 EXPECT_EQ(30u, Options.LineFilter[0].LineRanges[1].second);
46 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].first);
47 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].second);
48 EXPECT_EQ("file2.h", Options.LineFilter[1].Name);
49 EXPECT_EQ(0u, Options.LineFilter[1].LineRanges.size());
50 EXPECT_EQ("file3.cc", Options.LineFilter[2].Name);
51 EXPECT_EQ(1u, Options.LineFilter[2].LineRanges.size());
52 EXPECT_EQ(100u, Options.LineFilter[2].LineRanges[0].first);
53 EXPECT_EQ(1000u, Options.LineFilter[2].LineRanges[0].second);
54}
55
56} // namespace test
57} // namespace tidy
58} // namespace clang