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+ }
0 commit comments