Skip to content

Commit c9cc3d7

Browse files
committed
Add DrawableBadgeBuilder test
1 parent 7f09cd9 commit c9cc3d7

File tree

4 files changed

+129
-23
lines changed

4 files changed

+129
-23
lines changed

build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
buildscript {
22
ext.kotlin_version = '1.1.51'
3-
ext.jUnit_version = '4.12'
4-
ext.mockito_version = '1.5.0'
5-
ext.spek_version = '1.1.4'
6-
ext.spek_junit_runner_version = '1.0.0-RC3'
73
ext.support_library_version = '26.0.0-alpha1'
4+
ext.test_runner_version = '1.0.1'
5+
ext.junit_version = '4.12'
6+
ext.mockito_version = '1.5.0'
87

98
repositories {
109
jcenter()
@@ -22,6 +21,9 @@ buildscript {
2221
allprojects {
2322
repositories {
2423
jcenter()
24+
maven {
25+
url "https://maven.google.com"
26+
}
2527
}
2628
}
2729

library/build.gradle

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22
apply plugin: 'com.github.dcendents.android-maven'
33
apply plugin: 'kotlin-android'
44

5-
group='com.github.minibugdev'
5+
group = 'com.github.minibugdev'
66

77
android {
88
compileSdkVersion 26
@@ -13,6 +13,7 @@ android {
1313
targetSdkVersion 26
1414
versionCode 2
1515
versionName "1.0.1"
16+
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1617
}
1718
buildTypes {
1819
release {
@@ -24,20 +25,21 @@ android {
2425
main.java.srcDirs += 'src/main/kotlin'
2526
test.java.srcDirs += 'src/test/kotlin'
2627
}
28+
testOptions {
29+
unitTests.returnDefaultValues = true
30+
}
2731
}
2832

2933
dependencies {
3034
compile "com.android.support:appcompat-v7:$support_library_version"
3135
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
3236

33-
testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
34-
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
35-
testCompile "junit:junit:$jUnit_version"
36-
testCompile "com.nhaarman:mockito-kotlin-kt1.1:$mockito_version"
37-
testCompile "org.jetbrains.spek:spek-api:$spek_version"
38-
testCompile "org.jetbrains.spek:spek-subject-extension:$spek_version"
39-
testCompile "org.jetbrains.spek:spek-junit-platform-engine:$spek_version"
40-
testCompile "org.junit.platform:junit-platform-runner:$spek_junit_runner_version"
37+
androidTestCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
38+
androidTestCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
39+
androidTestCompile "com.nhaarman:mockito-kotlin-kt1.1:$mockito_version"
40+
androidTestCompile "org.mockito:mockito-android:2.11.0"
41+
androidTestCompile "com.android.support:support-annotations:$support_library_version"
42+
androidTestCompile "com.android.support.test:runner:$test_runner_version"
4143
}
4244

4345
// build a jar with source files
@@ -47,7 +49,7 @@ task sourcesJar(type: Jar) {
4749
}
4850

4951
task javadoc(type: Javadoc) {
50-
failOnError false
52+
failOnError false
5153
source = android.sourceSets.main.java.sourceFiles
5254
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
5355
classpath += configurations.compile
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package com.minibugdev.drawablebadge
2+
3+
import android.content.Context
4+
import android.content.res.Resources
5+
import android.graphics.Bitmap
6+
import android.support.test.filters.LargeTest
7+
import com.nhaarman.mockito_kotlin.mock
8+
import com.nhaarman.mockito_kotlin.whenever
9+
import org.junit.Before
10+
import org.junit.Test
11+
import kotlin.test.assertEquals
12+
import kotlin.test.assertFailsWith
13+
14+
@LargeTest
15+
class DrawableBadgeBuilderTest {
16+
17+
private lateinit var drawableBuilder: DrawableBadge.Builder
18+
private val mockContext: Context = mock()
19+
private val mockResource: Resources = mock()
20+
21+
@Before
22+
fun setup() {
23+
whenever(mockContext.resources).thenReturn(mockResource)
24+
drawableBuilder = DrawableBadge.Builder(mockContext)
25+
}
26+
27+
@Test
28+
fun testNotPassBitmapOrDrawableShouldThrowIllegalArgumentException() {
29+
assertFailsWith<IllegalArgumentException> {
30+
drawableBuilder.build()
31+
}
32+
}
33+
34+
@Test
35+
fun testConfigOnlyBitmapShouldUsingDefaultConfig() {
36+
whenever(mockResource.getColor(R.color.default_badge_color)).thenReturn(EXPECTED_DEFAULT_BADGE_COLOR_INT)
37+
whenever(mockResource.getColor(R.color.default_badge_border_color)).thenReturn(EXPECTED_DEFAULT_BADGE_BORDER_COLOR_INT)
38+
whenever(mockResource.getColor(R.color.default_badge_text_color)).thenReturn(EXPECTED_DEFAULT_BADGE_TEXT_COLOR_INT)
39+
whenever(mockResource.getDimensionPixelOffset(R.dimen.default_badge_size)).thenReturn(EXPECTED_DEFAULT_BADGE_SIZE.toInt())
40+
whenever(mockResource.getDimensionPixelOffset(R.dimen.default_badge_border_size)).thenReturn(EXPECTED_DEFAULT_BADGE_BORDER_SIZE.toInt())
41+
42+
val actual = drawableBuilder
43+
.bitmap(Bitmap.createBitmap(128, 128, Bitmap.Config.ALPHA_8))
44+
.build()
45+
46+
assertEquals(EXPECTED_DEFAULT_BADGE_SIZE, actual.badgeSize)
47+
assertEquals(EXPECTED_DEFAULT_BADGE_BORDER_SIZE, actual.badgeBorderSize)
48+
assertEquals(EXPECTED_DEFAULT_BADGE_COLOR_INT, actual.badgeColor)
49+
assertEquals(EXPECTED_DEFAULT_BADGE_BORDER_COLOR_INT, actual.badgeBorderColor)
50+
assertEquals(EXPECTED_DEFAULT_BADGE_TEXT_COLOR_INT, actual.textColor)
51+
assertEquals(BadgePosition.TOP_RIGHT, actual.badgePosition)
52+
assertEquals(true, actual.isShowBorder)
53+
}
54+
55+
@Test
56+
fun testCustomConfigShouldUsingCustomConfig() {
57+
whenever(mockResource.getColor(FAKE_BADGE_COLOR_RES_ID)).thenReturn(EXPECTED_CONFIG_BADGE_COLOR_INT)
58+
whenever(mockResource.getColor(FAKE_BADGE_BORDER_COLOR_RES_ID)).thenReturn(EXPECTED_CONFIG_BADGE_BORDER_COLOR_INT)
59+
whenever(mockResource.getColor(FAKE_TEXT_COLOR_RES_ID)).thenReturn(EXPECTED_CONFIG_BADGE_TEXT_COLOR_INT)
60+
whenever(mockResource.getDimensionPixelOffset(FAKE_BADGE_SIZE_DIMENSION_ID)).thenReturn(EXPECTED_CONFIG_BADGE_SIZE.toInt())
61+
whenever(mockResource.getDimensionPixelOffset(FAKE_BADGE_BORDER_SIZE_DIMENSION_ID)).thenReturn(EXPECTED_CONFIG_BADGE_BORDER_SIZE.toInt())
62+
63+
val actual = drawableBuilder
64+
.bitmap(Bitmap.createBitmap(128, 128, Bitmap.Config.ALPHA_8))
65+
.badgeSize(FAKE_BADGE_SIZE_DIMENSION_ID)
66+
.badgeBorderSize(FAKE_BADGE_BORDER_SIZE_DIMENSION_ID)
67+
.badgeColor(FAKE_BADGE_COLOR_RES_ID)
68+
.badgeBorderColor(FAKE_BADGE_BORDER_COLOR_RES_ID)
69+
.textColor(FAKE_TEXT_COLOR_RES_ID)
70+
.badgePosition(BadgePosition.BOTTOM_LEFT)
71+
.showBorder(false)
72+
.build()
73+
74+
assertEquals(EXPECTED_CONFIG_BADGE_SIZE, actual.badgeSize)
75+
assertEquals(EXPECTED_CONFIG_BADGE_BORDER_SIZE, actual.badgeBorderSize)
76+
assertEquals(EXPECTED_CONFIG_BADGE_COLOR_INT, actual.badgeColor)
77+
assertEquals(EXPECTED_CONFIG_BADGE_BORDER_COLOR_INT, actual.badgeBorderColor)
78+
assertEquals(EXPECTED_CONFIG_BADGE_TEXT_COLOR_INT, actual.textColor)
79+
assertEquals(BadgePosition.BOTTOM_LEFT, actual.badgePosition)
80+
assertEquals(false, actual.isShowBorder)
81+
}
82+
83+
companion object {
84+
private const val EXPECTED_DEFAULT_BADGE_SIZE = 100f
85+
private const val EXPECTED_DEFAULT_BADGE_BORDER_SIZE = 200f
86+
private const val EXPECTED_DEFAULT_BADGE_COLOR_INT = 1
87+
private const val EXPECTED_DEFAULT_BADGE_BORDER_COLOR_INT = 2
88+
private const val EXPECTED_DEFAULT_BADGE_TEXT_COLOR_INT = 3
89+
90+
private const val EXPECTED_CONFIG_BADGE_SIZE = 300f
91+
private const val EXPECTED_CONFIG_BADGE_BORDER_SIZE = 400f
92+
private const val EXPECTED_CONFIG_BADGE_COLOR_INT = 4
93+
private const val EXPECTED_CONFIG_BADGE_BORDER_COLOR_INT = 5
94+
private const val EXPECTED_CONFIG_BADGE_TEXT_COLOR_INT = 6
95+
96+
private const val FAKE_BADGE_SIZE_DIMENSION_ID = 100
97+
private const val FAKE_BADGE_BORDER_SIZE_DIMENSION_ID = 101
98+
private const val FAKE_BADGE_COLOR_RES_ID = 102
99+
private const val FAKE_BADGE_BORDER_COLOR_RES_ID = 103
100+
private const val FAKE_TEXT_COLOR_RES_ID = 104
101+
}
102+
}

library/src/main/java/com/minibugdev/drawablebadge/DrawableBadge.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ import android.support.annotation.DrawableRes
1111
import android.support.v4.content.ContextCompat
1212
import android.text.TextPaint
1313

14-
class DrawableBadge private constructor(private val context: Context,
15-
@ColorInt private val textColor: Int,
16-
@ColorInt private val badgeColor: Int,
17-
@ColorInt private val badgeBorderColor: Int,
18-
private val badgeBorderSize: Float,
19-
private val badgeSize: Float,
20-
private val badgePosition: BadgePosition,
21-
private val bitmap: Bitmap,
22-
private val isShowBorder: Boolean) {
14+
class DrawableBadge private constructor(val context: Context,
15+
@ColorInt val textColor: Int,
16+
@ColorInt val badgeColor: Int,
17+
@ColorInt val badgeBorderColor: Int,
18+
val badgeBorderSize: Float,
19+
val badgeSize: Float,
20+
val badgePosition: BadgePosition,
21+
val bitmap: Bitmap,
22+
val isShowBorder: Boolean) {
2323

2424
class Builder(private val context: Context) {
2525

0 commit comments

Comments
 (0)