ToStringHelper.kt

package androidx.test.espresso.util

import androidx.annotation.RestrictTo

/**
 * Simplified version of guava's ToStringHelper.
 *
 * Used to help pretty prints an object and a set of its members.
 *
 * @hide
 */
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
class ToStringHelper constructor(obj: Object) {

  private val clazzName = obj::class.simpleName
  private val nameValuePairs = mutableMapOf<String, String>()

  fun add(name: String, obj: Object?): ToStringHelper {
    nameValuePairs[name] = obj?.toString() ?: "null"
    return this
  }

  override fun toString(): String {
    val s = nameValuePairs.map { (k, v) -> "$k=$v" }.joinToString(", ")
    return "$clazzName{$s}"
  }
}