Skip to content

Commit 6ba5ed3

Browse files
Fix isDataClassEqualTo not working with data objects (#552)
* fix `isDataClassEqualTo` not working with `data object`s
1 parent 76f4588 commit 6ba5ed3

File tree

2 files changed

+21
-1
lines changed
  • assertk/src

2 files changed

+21
-1
lines changed

assertk/src/jvmMain/kotlin/assertk/assertions/any.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fun <T : Any> Assert<T>.isDataClassEqualTo(expected: T) = given { actual ->
8282

8383
private fun <T> Assert<T>.isDataClassEqualToImpl(expected: T, kclass: KClass<*>?): Unit = given { actual ->
8484
if (actual == expected) return
85-
val compareProps = actual != null && expected != null
85+
val compareProps = actual != null && expected?.let { it::class } == kclass
8686
if (compareProps && kclass != null && kclass.isData) {
8787
for (memberProp in kclass.memberProperties) {
8888
@Suppress("UNCHECKED_CAST")

assertk/src/jvmTest/kotlin/test/assertk/assertions/JavaAnyTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ class JavaAnyTest {
111111
.isDataClassEqualTo(DataClass(InnerDataClass("test"), 1, 'a'))
112112
}
113113

114+
@Test
115+
fun isDataClassEqualTo_equal_data_objects_passes() {
116+
assertThat(DataObject).isDataClassEqualTo(DataObject)
117+
}
118+
114119
@Test
115120
fun isDataClassEqualTo_reports_all_properties_that_differ_on_failure() {
116121
val error = assertFailsWith<AssertionError> {
@@ -152,6 +157,17 @@ class JavaAnyTest {
152157
""".trimMargin().lines(), error.message!!.lines()
153158
)
154159
}
160+
161+
@Test
162+
fun isDataClassEqualTo_fails_different_data_objects() {
163+
val error = assertFailsWith<AssertionError> {
164+
assertThat(DataObject).isDataClassEqualTo(OtherDataObject)
165+
}
166+
assertEquals(
167+
"expected:<[Other]DataObject> but was:<[]DataObject>"
168+
.lines(), error.message!!.lines()
169+
)
170+
}
155171
//endregion
156172

157173
//region isEqualToIgnoringGivenProperties
@@ -217,5 +233,9 @@ class JavaAnyTest {
217233
data class DataClass(val one: InnerDataClass?, val two: Int, val three: Char)
218234

219235
data class InnerDataClass(val inner: String)
236+
237+
data object DataObject
238+
239+
data object OtherDataObject
220240
}
221241

0 commit comments

Comments
 (0)