-
-
Notifications
You must be signed in to change notification settings - Fork 757
/
MaxChainedCallsOnSameLineSpec.kt
124 lines (99 loc) · 4.01 KB
/
MaxChainedCallsOnSameLineSpec.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package io.gitlab.arturbosch.detekt.rules.style
import io.gitlab.arturbosch.detekt.test.TestConfig
import io.gitlab.arturbosch.detekt.test.assertThat
import io.gitlab.arturbosch.detekt.test.compileAndLint
import io.gitlab.arturbosch.detekt.test.lint
import org.junit.jupiter.api.Test
class MaxChainedCallsOnSameLineSpec {
@Test
fun `does not report 2 calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0.plus(0)"
assertThat(rule.compileAndLint(code)).isEmpty()
}
@Test
fun `does not report 3 calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0.plus(0).plus(0)"
assertThat(rule.compileAndLint(code)).isEmpty()
}
@Test
fun `reports 4 calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0.plus(0).plus(0).plus(0)"
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `reports 4 safe qualified calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0?.plus(0)?.plus(0)?.plus(0)"
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `reports 4 non-null asserted calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0!!.plus(0)!!.plus(0)!!.plus(0)"
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `reports once for 7 calls on a single line with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "val a = 0.plus(0).plus(0).plus(0).plus(0).plus(0).plus(0)"
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `does not report 5 calls on separate lines with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = """
val a = 0
.plus(0)
.plus(0)
.plus(0)
.plus(0)
"""
assertThat(rule.compileAndLint(code)).isEmpty()
}
@Test
fun `does not report 3 calls on same line with wrapped calls with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = """
val a = 0.plus(0).plus(0)
.plus(0).plus(0).plus(0)
.plus(0).plus(0).plus(0)
"""
assertThat(rule.compileAndLint(code)).isEmpty()
}
@Test
fun `reports 4 calls on same line with wrapped calls with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = """
val a = 0.plus(0).plus(0).plus(0)
.plus(0)
.plus(0)
"""
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `reports 4 calls on wrapped line with with a max of 3`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = """
val a = 0
.plus(0)
.plus(0).plus(0).plus(0).plus(0)
.plus(0)
"""
assertThat(rule.compileAndLint(code)).hasSize(1)
}
@Test
fun `does not report long imports`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "import a.b.c.d.e"
assertThat(rule.lint(code)).isEmpty()
}
@Test
fun `does not report long package declarations`() {
val rule = MaxChainedCallsOnSameLine(TestConfig(mapOf("maxChainedCalls" to 3)))
val code = "package a.b.c.d.e"
assertThat(rule.lint(code)).isEmpty()
}
}