Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package mozilla.components.tooling.detekt
import io.gitlab.arturbosch.detekt.test.lint
import org.junit.Assert.assertEquals
import org.junit.Test
class NoSystemCurrentTimeMillisRuleTest {
@Test
fun testSystemCurrentTimeMillisDetectedInFunction() {
val code = """
|package my.package
|
|class MyClass {
| fun getTime(): Long {
| return System.currentTimeMillis()
| }
|}
""".trimMargin()
val findings = NoSystemCurrentTimeMillisRule().lint(code)
assertEquals(1, findings.size)
assertEquals(
"Avoid using `System.currentTimeMillis()` directly. Use `mozilla.components.support.utils.DateTimeProvider.currentTimeMillis()`",
findings.first().message,
)
}
@Test
fun testSystemCurrentTimeMillisInVariable() {
val code = """
|package my.package
|
|class MyClass {
| val timestamp = System.currentTimeMillis()
|}
""".trimMargin()
val findings = NoSystemCurrentTimeMillisRule().lint(code)
assertEquals(1, findings.size)
}
@Test
fun testNoViolationWithoutSystemCurrentTimeMillis() {
val code = """
|package my.package
|
|class MyClass {
| fun getTime(provider: DateTimeProvider): Long {
| return provider.currentTimeMillis()
| }
|}
""".trimMargin()
val findings = NoSystemCurrentTimeMillisRule().lint(code)
assertEquals(0, findings.size)
}
@Test
fun testNoViolationWithOtherSystemMethods() {
val code = """
|package my.package
|
|class MyClass {
| fun printTime() {
| System.out.println("test")
| }
|}
""".trimMargin()
val findings = NoSystemCurrentTimeMillisRule().lint(code)
assertEquals(0, findings.size)
}
}