-
Notifications
You must be signed in to change notification settings - Fork 991
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into hadia/NTV-491
- Loading branch information
Showing
3 changed files
with
146 additions
and
50 deletions.
There are no files selected for viewing
50 changes: 0 additions & 50 deletions
50
app/src/main/java/com/kickstarter/ui/data/ActivityResult.java
This file was deleted.
Oops, something went wrong.
72 changes: 72 additions & 0 deletions
72
app/src/main/java/com/kickstarter/ui/data/ActivityResult.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
package com.kickstarter.ui.data | ||
|
||
import android.app.Activity | ||
import android.content.Intent | ||
import android.os.Parcelable | ||
import kotlinx.parcelize.Parcelize | ||
|
||
@Parcelize | ||
class ActivityResult( | ||
val requestCode: Int, | ||
val resultCode: Int, | ||
val intent: Intent? | ||
) : Parcelable { | ||
fun requestCode() = this.requestCode | ||
fun resultCode() = this.resultCode | ||
fun intent() = this.intent | ||
|
||
@Parcelize | ||
data class Builder( | ||
private var requestCode: Int = 0, | ||
private var resultCode: Int = 0, | ||
private var intent: Intent? = null | ||
) : Parcelable { | ||
fun requestCode(requestCode: Int) = apply { this.requestCode = requestCode } | ||
fun resultCode(resultCode: Int) = apply { this.resultCode = resultCode } | ||
fun intent(intent: Intent?) = apply { this.intent = intent } | ||
fun build() = ActivityResult( | ||
requestCode = requestCode, | ||
resultCode = resultCode, | ||
intent = intent | ||
) | ||
} | ||
|
||
fun toBuilder() = Builder( | ||
requestCode = requestCode, | ||
resultCode = resultCode, | ||
intent = intent | ||
) | ||
|
||
override fun equals(obj: Any?): Boolean { | ||
var equals = super.equals(obj) | ||
if (obj is ActivityResult) { | ||
equals = requestCode() == obj.requestCode() && | ||
resultCode() == obj.resultCode() && | ||
intent() == obj.intent() | ||
} | ||
return equals | ||
} | ||
|
||
val isCanceled: Boolean | ||
get() = resultCode() == Activity.RESULT_CANCELED | ||
val isOk: Boolean | ||
get() = resultCode() == Activity.RESULT_OK | ||
|
||
fun isRequestCode(v: Int): Boolean { | ||
return requestCode() == v | ||
} | ||
|
||
companion object { | ||
@JvmStatic | ||
fun create(requestCode: Int, resultCode: Int, intent: Intent?): ActivityResult { | ||
return builder() | ||
.requestCode(requestCode) | ||
.resultCode(resultCode) | ||
.intent(intent) | ||
.build() | ||
} | ||
|
||
@JvmStatic | ||
fun builder() = Builder() | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
app/src/test/java/com/kickstarter/models/ActivityResultTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package com.kickstarter.models | ||
|
||
import android.app.Activity | ||
import android.content.Intent | ||
import com.kickstarter.ui.data.ActivityResult | ||
import junit.framework.TestCase | ||
import org.junit.Test | ||
|
||
class ActivityResultTest : TestCase() { | ||
|
||
@Test | ||
fun testDefaultInit() { | ||
val intent = Intent() | ||
|
||
val activityResult = ActivityResult.builder() | ||
.resultCode(Activity.RESULT_OK) | ||
.requestCode(2) | ||
.intent(intent) | ||
.build() | ||
|
||
assertEquals(activityResult.requestCode(), 2) | ||
assertEquals(activityResult.resultCode(), Activity.RESULT_OK) | ||
assertEquals(activityResult.intent(), intent) | ||
} | ||
|
||
@Test | ||
fun testActivityResult_equalFalse() { | ||
val intent = Intent() | ||
|
||
val activityResult = ActivityResult.builder().build() | ||
val activityResult2 = ActivityResult.builder().resultCode(1) | ||
.requestCode(2).build() | ||
val activityResult3 = ActivityResult.create(1, 2, intent) | ||
assertFalse(activityResult == activityResult2) | ||
assertFalse(activityResult == activityResult3) | ||
|
||
assertFalse(activityResult3 == activityResult2) | ||
} | ||
|
||
@Test | ||
fun testActivityResult_equalTrue() { | ||
val activityResult1 = ActivityResult.builder().build() | ||
val activityResult2 = ActivityResult.builder().build() | ||
|
||
assertEquals(activityResult1, activityResult2) | ||
} | ||
|
||
@Test | ||
fun testActivityResultToBuilder() { | ||
val intent = Intent() | ||
val activityResult = ActivityResult.builder().build().toBuilder() | ||
.intent(intent).build() | ||
|
||
assertEquals(activityResult.intent(), intent) | ||
} | ||
|
||
@Test | ||
fun testActivityResultIsOk() { | ||
val activityResult = ActivityResult.builder().build().toBuilder() | ||
.resultCode(Activity.RESULT_OK).build() | ||
|
||
assertFalse(activityResult.isCanceled) | ||
assertTrue(activityResult.isOk) | ||
} | ||
|
||
@Test | ||
fun testActivityResultIsCancelled() { | ||
val activityResult = ActivityResult.builder().build().toBuilder() | ||
.resultCode(Activity.RESULT_CANCELED).build() | ||
|
||
assertTrue(activityResult.isCanceled) | ||
assertFalse(activityResult.isOk) | ||
} | ||
} |