All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avito.truth.ExtendedIterableSubject.kt Maven / Gradle / Ivy

Go to download

Collection of infrastructure libraries and gradle plugins of Avito Android project

The newest version!
package com.avito.truth

import com.google.common.collect.FluentIterable
import com.google.common.truth.Fact
import com.google.common.truth.FailureMetadata
import com.google.common.truth.Subject
import com.google.common.truth.Subject.Factory
import com.google.common.truth.Truth.assertAbout

public class ExtendedIterableSubject(
    failureMetadata: FailureMetadata,
    private val actual: Iterable
) : Subject(failureMetadata, actual) {

    public fun  containsExactlyOne(clazz: Class, condition: (T) -> Boolean) {
        val ts = FluentIterable.from(this.actual).filter(clazz)
        if (ts.size() != 1) {
            failWithActual("contains exactly one instance of", clazz.simpleName)
        } else {
            val t = ts[0] as T
            if (!condition.invoke(t)) {
                failWithActual(Fact.simpleFact("contains exactly one instance satisfied by condition"))
            }
        }
    }

    public companion object {

        public inline fun  iterable(): Factory, Iterable> =
            Factory { metadata, actual: Iterable ->
                ExtendedIterableSubject(metadata, actual)
            }

        public inline fun  assertIterable(iterable: Iterable): ExtendedIterableSubject =
            assertAbout(iterable()).that(iterable)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy