1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle;
21
22 import static com.google.common.truth.Truth.assertWithMessage;
23
24 import java.util.Set;
25
26 import org.junit.jupiter.api.Test;
27
28 import com.puppycrawl.tools.checkstyle.internal.utils.CheckUtil;
29
30 public class ThreadModeSettingsTest {
31
32 @Test
33 public void testProperties() {
34 final ThreadModeSettings config = new ThreadModeSettings(1, 2);
35 assertWithMessage("Invalid checker threads number")
36 .that(config.getCheckerThreadsNumber())
37 .isEqualTo(1);
38 assertWithMessage("Invalid treewalker threads number")
39 .that(config.getTreeWalkerThreadsNumber())
40 .isEqualTo(2);
41 }
42
43 @Test
44 public void testResolveCheckerInMultiThreadMode() {
45 final ThreadModeSettings configuration = new ThreadModeSettings(2, 2);
46
47 try {
48 configuration.resolveName(ThreadModeSettings.CHECKER_MODULE_NAME);
49 assertWithMessage("An exception is expected").fail();
50 }
51 catch (IllegalArgumentException ex) {
52 assertWithMessage("Invalid exception message")
53 .that(ex.getMessage())
54 .isEqualTo("Multi thread mode for Checker module is not implemented");
55 }
56 }
57
58 @Test
59 public void testResolveCheckerInSingleThreadMode() {
60 final ThreadModeSettings singleThreadMode = ThreadModeSettings.SINGLE_THREAD_MODE_INSTANCE;
61
62 final String name = singleThreadMode.resolveName(ThreadModeSettings.CHECKER_MODULE_NAME);
63 assertWithMessage("Invalid name resolved")
64 .that(name)
65 .isEqualTo(ThreadModeSettings.CHECKER_MODULE_NAME);
66 }
67
68 @Test
69 public void testResolveTreeWalker() {
70 final ThreadModeSettings configuration = new ThreadModeSettings(2, 2);
71
72 try {
73 configuration.resolveName(ThreadModeSettings.TREE_WALKER_MODULE_NAME);
74 assertWithMessage("Exception is expected").fail();
75 }
76 catch (IllegalArgumentException ex) {
77 assertWithMessage("Invalid exception message")
78 .that(ex.getMessage())
79 .isEqualTo("Multi thread mode for TreeWalker module is not implemented");
80 }
81 }
82
83 @Test
84 public void testResolveTreeWalkerInSingleThreadMode() {
85 final ThreadModeSettings singleThreadMode = ThreadModeSettings.SINGLE_THREAD_MODE_INSTANCE;
86 final String actual =
87 singleThreadMode.resolveName(ThreadModeSettings.TREE_WALKER_MODULE_NAME);
88 assertWithMessage("Invalid name resolved: " + actual)
89 .that(actual)
90 .isEqualTo(ThreadModeSettings.TREE_WALKER_MODULE_NAME);
91 }
92
93 @Test
94 public void testResolveAnyOtherModule() throws Exception {
95 final Set<Class<?>> allModules = CheckUtil.getCheckstyleModules();
96 final ThreadModeSettings multiThreadModeSettings = new ThreadModeSettings(2, 2);
97 final ThreadModeSettings singleThreadModeSettings =
98 ThreadModeSettings.SINGLE_THREAD_MODE_INSTANCE;
99
100 for (Class<?> module : allModules) {
101 if (Checker.class.isAssignableFrom(module)
102 || TreeWalker.class.isAssignableFrom(module)) {
103
104 continue;
105 }
106
107 final String moduleName = module.getSimpleName();
108 assertWithMessage("Invalid name resolved")
109 .that(singleThreadModeSettings.resolveName(moduleName))
110 .isEqualTo(moduleName);
111 assertWithMessage("Invalid name resolved")
112 .that(multiThreadModeSettings.resolveName(moduleName))
113 .isEqualTo(moduleName);
114 }
115 }
116
117 }