Skip to content

Instantly share code, notes, and snippets.

View nhoxbypass's full-sized avatar
🐧
I come from Earth

Tam H. Doan nhoxbypass

🐧
I come from Earth
View GitHub Profile
class MyPresenterTest {
@Test
fun onOpenCameraButtonClick_postM() {
// Arrange
Mockito.`when`(mockBuildProvider.isMarshmallowAndAbove()).thenReturn(true)
// Action
presenter.onCameraButtonClick()
// Assert
class MyPresenterTest {
@Mock
private lateinit var mockBuildProvider: BuildVersionProvider
@Mock
private lateinit var mockView: MyView
private lateinit var presenter: MyPresenter
@Before
class MyPresenter(val view: MyView, val buildProvider: BuildVersionProvider) : BasePresenter() {
override fun onCameraButtonClick() {
if (buildProvider.isMarshmallowAndAbove()) {
view.requestCameraPermission()
} else {
navigator.openCamera()
}
}
}
class MyPresenterTest {
@Test
fun onOpenCameraButtonClick_postM() {
setFinalStatic(Build.VERSION::class.java.getField("SDK_INT"), 23)
// Verify flow request Runtime Permissions
// ...
}
@After
@Throws(Exception::class)
fun setFinalStatic(field: Field, newValue: Any) {
field.setAccessible(true)
val modifiersField = Field::class.java.getDeclaredField("modifiers")
modifiersField.setAccessible(true)
modifiersField.setInt(field, field.getModifiers() and Modifier.FINAL.inv())
field.set(null, newValue)
}
@RunWith(PowerMockRunner::class)
@PrepareForTest(Build.VERSION::class)
class MyPresenterTest {
@Test
fun onOpenCameraButtonClick_postM() {
Whitebox.setInternalState(Build.VERSION::class.java, "SDK_INT", 23)
// Verify flow request Runtime Permissions
// ...
}
@file:JvmName("SaberUtils")
@file:JvmMultifileClass
fun makeLightSaber(powers: Int): LightSaber {
return LightSaber(powers)
}
object SaberUtils {
fun makeLightSaber(powers: Int): LightSaber {
return LightSaber(powers)
}
}
object SaberFactory {
@JvmStatic fun makeStaticSaber() { /*..*/ }
fun makeNonStaticSaber() { /*..*/ }
}
// darksaber.kt
@file:JvmName("SaberUtils")
@file:JvmMultifileClass
package org.example
fun makeDarkSaber() { /*...*/ }