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