Skip to content

Instantly share code, notes, and snippets.

import org.gradle.api.JavaVersion
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
class MyModulePlugin : Plugin<Project> {
override fun apply(project: Project) {
...
// Configure common android build parameters.
val androidExtension = project.extensions.getByName("android")
@malvinstn
malvinstn / MainActivityTest_FlexibleFails.kt
Created October 24, 2019 08:42
Sample integration test with FakeAppUpdateManager to validate in app update implementation.
@Test
fun testFlexibleUpdate_DownloadFails() {
// Setup Flexible update.
fakeAppUpdateManager.partiallyAllowedUpdateType = AppUpdateType.FLEXIBLE
fakeAppUpdateManager.setUpdateAvailable(2)
ActivityScenario.launch(MainActivity::class.java)
// Validate that flexible update is prompted to the user.
assertTrue(fakeAppUpdateManager.isConfirmationDialogVisible)
@malvinstn
malvinstn / MainActivityTest_ImmediateCompletes.kt
Created October 24, 2019 08:38
Sample integration test with FakeAppUpdateManager to validate in app update implementation.
@Test
fun testImmediateUpdate_Completes() {
// Setup immediate update.
fakeAppUpdateManager.partiallyAllowedUpdateType = AppUpdateType.IMMEDIATE
fakeAppUpdateManager.setUpdateAvailable(2)
ActivityScenario.launch(MainActivity::class.java)
// Validate that immediate update is prompted to the user.
assertTrue(fakeAppUpdateManager.isImmediateFlowVisible)
@malvinstn
malvinstn / MainActivityTest_FlexibleCompletes.kt
Last active October 24, 2019 08:46
Sample integration test with FakeAppUpdateManager to validate in app update implementation.
@Test
fun testFlexibleUpdate_Completes() {
// Setup flexible update.
fakeAppUpdateManager.partiallyAllowedUpdateType = AppUpdateType.FLEXIBLE
fakeAppUpdateManager.setUpdateAvailable(2)
ActivityScenario.launch(MainActivity::class.java)
// Validate that flexible update is prompted to the user.
assertTrue(fakeAppUpdateManager.isConfirmationDialogVisible)
@malvinstn
malvinstn / Roboscript.json
Created July 7, 2019 07:06
Sample robo script
[
{
"eventType": "VIEW_CLICKED",
"timestamp": 1561810695346,
"replacementText": "",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
{
@malvinstn
malvinstn / Flow.kt
Last active June 9, 2019 09:10
Kotlin merge 2 different Flow
fun <T> Flow<T>.mergeWith(other: Flow<T>): Flow<T> = flow {
coroutineScope {
launch {
collect { emit(it) }
}
launch {
other.collect { emit(it) }
}
}
}
...
apply plugin: 'kotlin-kapt'
android {
...
}
dependencies {
implementation project(':tracker')
@AutoService(Processor::class)
class AnalyticsEventProcessor : KotlinAbstractProcessor(), KotlinMetadataUtils {
companion object {
private val ANNOTATION = AnalyticsEvent::class.java
private const val EVENT_PARAMETER_NAME = "event"
private const val EVENT_NAME_PARAMETER_NAME = "name"
private const val EVENT_PARAM_PARAMETER_NAME = "params"
private const val LOG_EVENT_FUNCTION_NAME = "logEvent"
@AutoService(Processor::class)
class AnalyticsEventProcessor : KotlinAbstractProcessor(), KotlinMetadataUtils {
companion object {
private val ANNOTATION = AnalyticsEvent::class.java
}
...
override fun process(
annotations: Set<TypeElement>,
@AutoService(Processor::class)
class AnalyticsEventProcessor : KotlinAbstractProcessor(), KotlinMetadataUtils {
companion object {
private val ANNOTATION = AnalyticsEvent::class.java
}
override fun getSupportedAnnotationTypes() = setOf(ANNOTATION.canonicalName)
override fun getSupportedSourceVersion(): SourceVersion = SourceVersion.latestSupported()