From b433b79ec140764a0b410d8743399a576ce241a8 Mon Sep 17 00:00:00 2001 From: Sergey Chuprin Date: Wed, 26 Sep 2018 18:13:31 +0300 Subject: [PATCH] Update readme and add few tests --- README.md | 4 +++ .../chuprin/adapter/RendererDelegateTest.kt | 28 ++++++++++++++++++- .../multiviewadapter/diff/DiffActivity.kt | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d5f4f19..2b8eded 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,11 @@ Library for easily displaying multiple view types in RecyclerView adapter. You don't even need to write custom adapter and ViewHolder. +**Note: library is AndroidX-only** + # Setup +Library is available on `jCenter` + Add dependency to your app's `build.gradle` ```groovy diff --git a/multiviewadapter/src/test/java/serg/chuprin/adapter/RendererDelegateTest.kt b/multiviewadapter/src/test/java/serg/chuprin/adapter/RendererDelegateTest.kt index 270d861..48ad2ad 100644 --- a/multiviewadapter/src/test/java/serg/chuprin/adapter/RendererDelegateTest.kt +++ b/multiviewadapter/src/test/java/serg/chuprin/adapter/RendererDelegateTest.kt @@ -1,21 +1,42 @@ package serg.chuprin.adapter import org.junit.Assert +import org.junit.Before import org.junit.Test class RendererDelegateTest { - private val rendererDelegate = RendererDelegate() + private lateinit var rendererDelegate: RendererDelegate private val testRenderer = object : SimpleViewRenderer() { override val type: Int = -1 } + @Before + fun setup() { + rendererDelegate = RendererDelegate() + } + @Test fun `renderer should be added after registering via reified function`() { rendererDelegate.registerRenderer(testRenderer) assertRenderersRegistered(1) } + @Test + fun `adding same renderer twice will cause exception being thrown`() { + rendererDelegate.registerRenderer(testRenderer) + assertRenderersRegistered(1) + + var thrown = false + try { + rendererDelegate.registerRenderer(testRenderer) + } catch (e: IllegalStateException) { + thrown = true + } + Assert.assertTrue(thrown) + assertRenderersRegistered(1) + } + @Test fun `renderer should be added after registering via class specifying`() { rendererDelegate.registerRenderer(testRenderer, Any::class.java) @@ -55,6 +76,11 @@ class RendererDelegateTest { assertRenderersRegistered(0) } + @Test + fun `removing non-existent renderer should return false`() { + Assert.assertFalse(rendererDelegate.removeRenderer(testRenderer)) + } + private fun assertRenderersRegistered(count: Int) { Assert.assertEquals(count, rendererDelegate.renderers.size()) Assert.assertEquals(count, rendererDelegate.rendererTypes.size) diff --git a/sample/src/main/java/serg/chuprin/multiviewadapter/diff/DiffActivity.kt b/sample/src/main/java/serg/chuprin/multiviewadapter/diff/DiffActivity.kt index 7d0c66e..55e07ff 100644 --- a/sample/src/main/java/serg/chuprin/multiviewadapter/diff/DiffActivity.kt +++ b/sample/src/main/java/serg/chuprin/multiviewadapter/diff/DiffActivity.kt @@ -59,7 +59,7 @@ class DiffActivity : AppCompatActivity() { .add(Single .just(true) .doOnSubscribe { diffAdapter.setItems(listOf(DiffItem.Progress)) } - .delay(500, TimeUnit.MILLISECONDS) + .delay(700, TimeUnit.MILLISECONDS) .map { list } .subscribe(diffAdapter::setItems, Throwable::printStackTrace) )