Skip to content

Instantly share code, notes, and snippets.

View pavelaizen's full-sized avatar

Pavel Aizendorf pavelaizen

View GitHub Profile
package sayaaa.rpscience.com.sayaaaa;
import android.graphics.Color;
import android.hardware.Camera;
import java.util.concurrent.atomic.AtomicBoolean;
public class ImageProcessing {
private int averageIndex = 0;
private final int averageArraySize = 4;
@pavelaizen
pavelaizen / CoroutineScopeViewModel.kt
Created September 17, 2018 13:45
Simple CoroutineScope implementation
import android.app.Application
import android.arch.lifecycle.AndroidViewModel
import android.arch.lifecycle.MutableLiveData
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.android.Main
import kotlin.coroutines.experimental.CoroutineContext
abstract class BaseFragmentViewModel(application: Application) : AndroidViewModel(application), CoroutineScope {
private val job = Job()
package com.earlysense.sdk.rs232
class SignalDataCollector() {
private var index = 0
private var signalData = ByteArray(DATA_VAL_MAX_PACKET_SIZE)
var callback: ((signalData: ByteArray) -> Unit)? = null
/**
* Building chunks from the buffer, every chunk must be [DATA_VAL_MAX_PACKET_SIZE]
* @param buffer the buffer into which the data was read
inline fun InputStream.readChunk(data: ByteArray, block: (ByteArray, Int) -> Unit) {
var index = 0
do {
read().takeIf { it != -1 }?.let { data[index++] = it.toByte() } ?: break
} while (index < data.size)
block(data, index)
}
@pavelaizen
pavelaizen / ExpectationWatcher.kt
Created April 11, 2018 16:02
Expectation using Coroutines
import kotlinx.coroutines.experimental.Job
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.launch
import kotlin.coroutines.experimental.CoroutineContext
/**
* Created by Pavel Aizendorf on 11-Apr-18.
*/
class ExpectationWatcher {
private val jobs = mutableMapOf<String, Job>()
import org.apache.logging.log4j.ThreadContext
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
class Log4jExecutor : ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
LinkedBlockingQueue()) {
override fun beforeExecute(t: Thread, r: Runnable) {
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
import io.mockk.*
import org.apache.logging.log4j.ThreadContext
import org.junit.Test
class Log4jExecutorTest {
class MyLog4jExecutor : Log4jExecutor() {
fun runBefore(t: Thread?, r: Runnable?) = beforeExecute(t, r)
}
@Test
import android.app.Activity
import android.os.Bundle
import android.widget.Toast
import kotlinx.coroutines.experimental.android.UI
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.launch
import java.util.concurrent.TimeUnit
/**
* Example using Kotlin Coroutines: