blob: 84de275e00dcd4c9603fc0ab517175c358b81557 [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
Rafael Espindolaf1451372014-06-03 04:40:55 +000022 EXPECT_TRUE(!!parseLineFilter("[{}]", Options));
23 EXPECT_TRUE(!!parseLineFilter("[{\"name\":\"\"}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000024 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000025 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000026 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000027 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,2,3]]}]", Options));
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000028 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000029 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,-1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000030}
31
32TEST(ParseLineFilter, ValidFilter) {
33 ClangTidyOptions Options;
34 llvm::error_code Error = parseLineFilter(
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000035 "[{\"name\":\"file1.cpp\",\"lines\":[[3,15],[20,30],[42,42]]},"
36 "{\"name\":\"file2.h\"},"
37 "{\"name\":\"file3.cc\",\"lines\":[[100,1000]]}]",
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000038 Options);
39 EXPECT_FALSE(Error);
40 EXPECT_EQ(3u, Options.LineFilter.size());
41 EXPECT_EQ("file1.cpp", Options.LineFilter[0].Name);
42 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges.size());
43 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges[0].first);
44 EXPECT_EQ(15u, Options.LineFilter[0].LineRanges[0].second);
45 EXPECT_EQ(20u, Options.LineFilter[0].LineRanges[1].first);
46 EXPECT_EQ(30u, Options.LineFilter[0].LineRanges[1].second);
47 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].first);
48 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].second);
49 EXPECT_EQ("file2.h", Options.LineFilter[1].Name);
50 EXPECT_EQ(0u, Options.LineFilter[1].LineRanges.size());
51 EXPECT_EQ("file3.cc", Options.LineFilter[2].Name);
52 EXPECT_EQ(1u, Options.LineFilter[2].LineRanges.size());
53 EXPECT_EQ(100u, Options.LineFilter[2].LineRanges[0].first);
54 EXPECT_EQ(1000u, Options.LineFilter[2].LineRanges[0].second);
55}
56
57} // namespace test
58} // namespace tidy
59} // namespace clang